Linux目录管理命令

1. pwd :显示当前所在目录的路径

1.1 语法格式

pwd #直接按回车键

1.2 实践案例

案例:查看当前所在目录路径
[root@yyds ~]# pwd
/root                   --->显示的是绝对路径

2. cd :切换目录

2.1 语法格式

cd 【参数】 【目录】

2.2 参数选项

|----------|------------|----------|---------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| ~ | 切换到当前用户家目录 | - | 切换到上次所在目录 |
| | 切换到当前用户家目录 | . | 当前目录 |
| /root | 切换到当前用户家目录 | .. | 切换到当前目录的上一级目录 |

2.3 实践案例

# 案例1:查看执行cd、cd ~、cd /root命令后所在目录
[root@yyds tmp]# pwd
/tmp
[root@yyds tmp]# cd
[root@yyds ~]# pwd
/root
[root@yyds tmp]# cd ~
[root@yyds ~]# pwd
/root
[root@yyds tmp]# cd /root
[root@yyds ~]# pwd
/root

# 案例2:使用绝对路径,切换/etc 目录下
[root@yyds ~]# cd /etc/
[root@yyds etc]# pwd
/etc

# 案例3:使用相对路径,切换到/etc目录 
[root@yyds ~]# cd /
[root@yyds /]# cd etc/
[root@yyds etc]# pwd
/etc

# 案例4:切换到/etc/sysconfig/network-scripts/
[root@yyds ~]# cd /etc/sysconfig/network-scripts/
[root@yyds network-scripts]# pwd
/etc/sysconfig/network-scripts

# 案例5:快速回到家目录
[root@yyds network-scripts]# cd                 --->>方法一
[root@yyds ~]# cd -                             --->>回到上次所在目录
/etc/sysconfig/network-scripts
[root@yyds network-scripts]# cd ~               --->>方法二
[root@yyds ~]# cd -                             --->>回到上次所在目录
/etc/sysconfig/network-scripts
[root@yyds network-scripts]# cd /root           --->>方法三
[root@yyds ~]# 

# 案例6:返回上次所在目录
[root@yyds ~]# cd -                             
/etc/sysconfig/network-scripts

# 案例7:返回上级目录
[root@yyds network-scripts]# cd ..
[root@yyds sysconfig]# pwd
/etc/sysconfig

# 案例8:返回/目录
[root@yyds sysconfig]# cd /                     --->>方法一
[root@yyds /]# cd -                             --->>回到上次所在目录
/etc/sysconfig
[root@yyds sysconfig]# cd ../..                 --->>方法二
[root@yyds /]# pwd
/

3. ls :查看当前目录下的所有文件及其属性信息

3.1 语法结构

 ls 【参数】 【文件】
 ls [文件]                        --->>查看文件是否存在
 ls [目录]                        --->>查看目录是否存在
 ls [文件1] [文件1] [文件1]        --->>查看多个文件

3.2 参数选项

|----------|-------------------|----------|-----------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -l | 查看文件的详细属性信息️❤️ | -S | 递归显示所有子目录❤️ |
| -a | 显示隐藏文件❤️ | -t | 依据最后修改时间将文件排序显示 |
| -i | 显示文件的inode属性信息️❤️ | -R | 递归显示所有子文件 |
| -d | 显示目录自身属性信息️ | -r | 逆序排序❤️ |

案例实践:

# 案例1:查看/etc/hosts 文件是否存在
[root@yyds ~]# ls -l /etc/hosts
-rw-r--r-- 1 root root 158  6月 23  2020 /etc/hosts

# 案例2:查看/etc/hosts /etc/passwd 两个文件是否存在
[root@yyds ~]# ls -l /etc/hosts /etc/passwd
-rw-r--r-- 1 root root  158  6月 23  2020 /etc/hosts
-rw-r--r-- 1 root root 1809  6月 30 23:08 /etc/passwd

# 案例3:查看当前位置的yyds和/etc/passwd 文件是否存在
[root@yyds ~]# ls -l yyds /etc/passwd
ls: 无法访问 'yyds': 没有那个文件或目录
-rw-r--r-- 1 root root 1809  6月 30 23:08 /etc/passwd

# 案例4:显示/tmp 目录下所有的内容
[root@yyds ~]# ls /tmp                             --->>方法一
yyds01.txt
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-bluetooth.service-FKCAqo
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-chronyd.service-lfiT7q
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-systemd-logind.service-ZzP9XJ
[root@yyds ~]# cd /tmp                             --->>方法二
[root@yyds tmp]# ls
yyds01.txt
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-bluetooth.service-FKCAqo
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-chronyd.service-lfiT7q
systemd-private-c2a65d0e5b444a2a8294c787c5df926e-systemd-logind.service-ZzP9XJ

# 案例5:显示/etc/sysconfig/network-scripts 下得所有文件
[root@yyds ~]# ls /etc/sysconfig/network-scripts
ifcfg-ens33

# 案例6: 显示/root 下的所有文件,含隐藏文件
[root@yyds ~]# ls -a /root
.   1.txt            .bash_history  .bash_profile  cfg.txt  .gnupg           .tcshrc   www
..  anaconda-ks.cfg  .bash_logout   .bashrc      .cshrc   initial-setup-ks.cfg  .viminfo

# 案例7:显示/root 下的所有文件的inode
[root@yyds ~]# ls -i
101033767 1.txt  102489504 anaconda-ks.cfg  101033761 cfg.txt  102489508 initial-setup-ks.cfg   34091944 www

4. mkdir :创建目录

4.1 语法结构

mkdir 【参数选项】 【目录名】

mkdir  [目录]
mkdir  [目录1] [目录2]
mkdir  [参数选项] [目录]

4.2 参数选项

|----------|-------------------------|----------|------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -m | 创建目录的同时设置权限❤️ | -v | 显示执行过程详细信息 |
| -p | 递归创建多级目录 ❤️ | | |

4.3 案例实践

# 案例1.在当前创建yyds目录
[root@yyds ~]# mkdir yyds
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 2 root root 6  7月  2 04:40 yyds

# 案例2.在当前创建a b c 多个目录
#方法一:
[root@yyds ~]# mkdir a b c
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 2 root root 6  7月  2 04:41 a
drwxr-xr-x 2 root root 6  7月  2 04:41 b
drwxr-xr-x 2 root root 6  7月  2 04:41 c
drwxr-xr-x 2 root root 6  7月  2 04:40 yyds
#方法二:
[root@yyds ~]# mkdir {a..c}
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 2 root root 6  7月  2 04:42 a
drwxr-xr-x 2 root root 6  7月  2 04:42 b
drwxr-xr-x 2 root root 6  7月  2 04:42 c
drwxr-xr-x 2 root root 6  7月  2 04:40 yyds

# 案例3.在/tmp目录下创建a目录
[root@yyds ~]# mkdir /tmp/a
[root@yyds ~]# ll /tmp/
总用量 0
drwxr-xr-x 2 root root 40  7月  2 04:44 a

# 案例4.在/tmp/下创建yyds 在/opt/下创建oldgirl
[root@yyds ~]# mkdir /tmp/yyds /opt/oldgirl
[root@yyds ~]# ll /tmp/ /opt/
/opt/:
总用量 0
drwxr-xr-x 2 root root 6  7月  2 04:45 oldgirl

/tmp/:
总用量 0
drwxr-xr-x 2 root root 40  7月  2 04:44 a
drwxr-xr-x 2 root root 40  7月  2 04:45 yyds

# 案例5.在当前创建yyds/a/b/c目录
[root@yyds ~]# mkdir -p yyds/a/b/c
[root@yyds ~]# tree
.
└── yyds
    └── a
        └── b
            └── c

4 directories, 0 files

5. cp :复制文件或目录

5.1 语法结构

cp 【参数选项】 【源文件】 【目标文件】

cp [源文件] [目标文件]
cp [源文件] [修改后的文件名]
cp [文件1] [文件2] [文件3] [目录]
cp [参数] [源文件] [目标文件]

5.2 参数选项

|----------|------------------|----------|-------------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -a | 等价于pdr参数组合 | -p | 保留源文件或目录文件的所有属性❤️ |
| -r | 递归复制目录及其下所有子文件❤️ | -i | 若目标文件已存在,则会询问是否覆盖 |
| -b | 覆盖目标文件前先进行备份 | -f | 若目标文件已存在,则会直接覆盖 |
| -t | 将源文件和目标文件互换位置❤️ | | |

5.3 案例实践

# 案例1.创建yyds.txt 拷贝到/opt目录
[root@yyds ~]# touch yyds.txt
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
[root@yyds ~]# cp yyds.txt /opt/
[root@yyds ~]# ll /opt/
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt

# 案例2.复制多个文件到/opt目录
[root@yyds ~]# touch {a..c}.txt
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
[root@yyds ~]# cp a.txt b.txt c.txt /opt/
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:56 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:56 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:56 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt

# 案例3.拷贝不同目录下文件/etc/hosts /tmp/1.txt 文件到/opt目录
[root@yyds ~]# cp /etc/passwd /tmp/a.txt /opt/
[root@yyds ~]# ll /opt/
总用量 4
-rw-r--r-- 1 root root    0  7月  2 05:01 a.txt
drwxr-xr-x 2 root root    6  7月  2 04:45 oldgirl
-rw-r--r-- 1 root root 1856  7月  2 05:01 passwd

# 案例4.cp后重新起个名字,在当前将yyds.txt 备份成yyds.txt.bak
[root@yyds ~]# cp yyds.txt yyds.txt.bak
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:02 yyds.txt.bak

# 案例5.将yyds.txt 复制到/opt下命名为yyds.txt.bak
[root@yyds ~]# cp yyds.txt /opt/yyds.txt.bak
[root@yyds ~]# ll /opt/
总用量 4
-rw-r--r-- 1 root root    0  7月  2 05:01 a.txt
-rw-r--r-- 1 root root    0  7月  2 05:02 yyds.txt.bak
drwxr-xr-x 2 root root    6  7月  2 04:45 oldgirl
-rw-r--r-- 1 root root 1856  7月  2 05:01 passwd

# 案例6.将/opt目录下得yyds.txt.bak 复制到当前目录
#方法一:
[root@yyds ~]# cp /opt/yyds.txt.bak ./
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:05 yyds.txt.bak
#方法二:
[root@yyds ~]# cp /opt/yyds.txt.bak .
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:06 yyds.txt.bak
#方法三:
[root@yyds ~]# cp /opt/yyds.txt.bak ~
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:07 yyds.txt.bak
#方法四:
[root@yyds ~]# cp /opt/yyds.txt.bak /root/
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:08 yyds.txt.bak

# 案例7.拷贝多个文件到当前的位置
[root@yyds ~]# touch /tmp/{1..3}.txt
[root@yyds ~]# ll /tmp/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:09 1.txt
-rw-r--r-- 1 root root 0  7月  2 05:09 2.txt
-rw-r--r-- 1 root root 0  7月  2 05:09 3.txt
-rw-r--r-- 1 root root 0  7月  2 04:59 a.txt
[root@yyds ~]# cp /tmp//{1..3}.txt .
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:10 1.txt
-rw-r--r-- 1 root root 0  7月  2 05:10 2.txt
-rw-r--r-- 1 root root 0  7月  2 05:10 3.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
-rw-r--r-- 1 root root 0  7月  2 04:54 yyds.txt
-rw-r--r-- 1 root root 0  7月  2 05:08 yyds.txt.bak

# 案例8.复制yyds目录到/opt下
[root@yyds ~]# mkdir yyds
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:10 1.txt
-rw-r--r-- 1 root root 0  7月  2 05:10 2.txt
-rw-r--r-- 1 root root 0  7月  2 05:10 3.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 a.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 b.txt
-rw-r--r-- 1 root root 0  7月  2 04:55 c.txt
drwxr-xr-x 2 root root 6  7月  2 05:11 yyds
[root@yyds ~]# cp -r yyds /opt/
[root@yyds ~]# ll /opt/
总用量 4
-rw-r--r-- 1 root root    0  7月  2 05:01 a.txt
drwxr-xr-x 2 root root    6  7月  2 05:11 yyds
-rw-r--r-- 1 root root    0  7月  2 05:02 yyds.txt.bak
drwxr-xr-x 2 root root    6  7月  2 04:45 oldgirl
-rw-r--r-- 1 root root 1856  7月  2 05:01 passwd

# 案例9.复制多个目录到/opt下
[root@yyds ~]# mkdir {A..C}
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 2 root root 6  7月  2 05:13 A
drwxr-xr-x 2 root root 6  7月  2 05:13 B
drwxr-xr-x 2 root root 6  7月  2 05:13 C
[root@yyds ~]# rm -rf /opt/*
[root@yyds ~]# ll /opt/
总用量 0
[root@yyds ~]# cp -r {A..C} /opt/
[root@yyds ~]# ll /opt/
总用量 0
drwxr-xr-x 2 root root 6  7月  2 05:14 A
drwxr-xr-x 2 root root 6  7月  2 05:14 B
drwxr-xr-x 2 root root 6  7月  2 05:14 C

# 案例10.将etc目录复制到当前的位置
[root@yyds ~]# cp -r /etc/ .
[root@yyds ~]# ll
总用量 12
drwxr-xr-x   2 root root    6  7月  2 05:13 A
drwxr-xr-x   2 root root    6  7月  2 05:13 B
drwxr-xr-x   2 root root    6  7月  2 05:13 C
drwxr-xr-x 124 root root 8192  7月  2 05:15 etc
[root@yyds ~]# ll etc/
总用量 1308
drwxr-xr-x  3 root root    101  7月  2 05:15 abrt
-rw-r--r--  1 root root     16  7月  2 05:15 adjtime
-rw-r--r--  1 root root   1529  7月  2 05:15 aliases
......省略

6. rm :删除文件或目录

6.1 语法结构

rm 【参数选项】 【文件名】

6.2 参数选项

|----------|----------------|----------|----------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -d | 仅删除无子文件的空目录 | -f | 强制删除不询问 |
| -r | 递归删除目录及其内全部子文件 | | |

6.3 案例实践

# 案例1. 删除当前的yyds
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 3 root root 15  7月  2 05:56 yyds
[root@yyds ~]# rm -rf yyds/
[root@yyds ~]# ll
总用量 0

# 案例2. 删除opt目录下的a.txt b.txt
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:52 a.log
-rw-r--r-- 1 root root 0  7月  2 05:50 a.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 b.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
drwxr-xr-x 2 root root 6  7月  2 05:53 yyds
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt
[root@yyds ~]# rm /opt/a.txt /opt/b.txt 
rm:是否删除普通空文件 '/opt/a.txt'?y
rm:是否删除普通空文件 '/opt/b.txt'?y
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:52 a.log
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
drwxr-xr-x 2 root root 6  7月  2 05:53 yyds
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt

7. mv :移动文件或目录

7.1 语法结构

mv 【参数选项】 【源文件】 【目标文件】

mv [源文件] [目标文件]
mv [源文件] [修改后的文件名]
mv [文件1] [文件2] [文件3] [目录]
mv [参数] [源文件] [目标文件]

7.2 参数选项

|----------|--------------|----------|------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -b | 覆盖前为目标文件创建备份 | -f | 强制覆盖文件而不询问 |
| -n | 不要覆盖已有文件 | | |

7.3 案例实践

# 案例1.移动当前的yyds.txt到/opt目录下
[root@yyds ~]# touch yyds.txt
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt
[root@yyds ~]# mv yyds.txt /opt/
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt

# 案例2.移动多个文件
[root@yyds ~]# touch {a..c}.txt
[root@yyds ~]# ll
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:50 a.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 b.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
[root@yyds ~]# mv {a..c}.txt /opt/
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:50 a.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 b.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt

# 案例3.移动a.txt到/opt/目录命名为a.log
[root@yyds ~]# touch a.txt
[root@yyds ~]# mv a.txt /opt/a.log
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:52 a.log
-rw-r--r-- 1 root root 0  7月  2 05:50 a.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 b.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt

# 案例4.移动目录 yyds到/opt下
[root@yyds ~]# mkdir yyds
[root@yyds ~]# ll
总用量 0
drwxr-xr-x 2 root root 6  7月  2 05:53 yyds
[root@yyds ~]# mv yyds/ /opt/
[root@yyds ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0  7月  2 05:52 a.log
-rw-r--r-- 1 root root 0  7月  2 05:50 a.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 b.txt
-rw-r--r-- 1 root root 0  7月  2 05:50 c.txt
drwxr-xr-x 2 root root 6  7月  2 05:53 yyds
-rw-r--r-- 1 root root 0  7月  2 05:48 yyds.txt

⚠️⚠️⚠️在企业中用mv替代rm使用

8. tree :树状结构列出目录内容

8.1 语法结构

tree 【参数选项】 【目录】

8.2 参数选项

|----------|------------|----------|-----------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -L | 使用层级显示内容❤️ | -F | 显示文件完整的路径 |
| -d | 仅显示目录名 | | |

8.3 案例实践

# 案例1.
[root@yyds ~]# mkdir -p yyds/a/b/c
[root@yyds ~]# tree
.
└── yyds
    └── a
        └── b
            └── c

4 directories, 0 files

# 案例2.
[root@yyds ~]# tree -L 1 /
/
├── backup
├── bin -> usr/bin
├── boot
├── box
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

21 directories, 0 files

9. du:查看目录大小

9.1 语法格式

du [参数] [文件名]

9.2 参数选项

|----------|--------------|----------|-------------|
| 参数选项 | 注释说明 | 参数选项 | 注释说明 |
| -a | 显示目录中所有文件的大小 | -s | 显示子目录的总大小❤️ |
| | | -h | 以易读方式显示❤️ |

9.3 实践案例

[root@linux:~]# du -sh /etc
29M	/etc