Linux 基本目录操作

路径

根据文件名写法不同,可以分为绝对路径(absolute)和相对路径(relative):

  • 绝对路径

    由根目录开始写起的文件或目录名称,定义了在虚拟目录结构中该文件的确切位置。例如 /home/base/.bashrc

  • 相对路径

    基于目前位置的路径写法。例如 ./base/.bashrc../../home/base/ 等。

Linux 中有些比较特殊的目录表示符号如下表:

符号 意义
. 此层目录
上一层目录
- 前一个工作目录
~ 目前用户身份所在的主文件夹
~account 代表 account 这个用户的主文件夹

显示当前目录

使用 pwd 命令(Print Working Directory 的缩写)显示目前所在目录。

如显示当前路径:

[root@101c7 init.d]$ pwd
/etc/init.d

追踪链接文件显示实际路径加 -P 参数:

[root@101c7 init.d]$ cd /var/mail ; pwd
/var/mail
[root@101c7 mail]$ pwd -P
/var/spool/mail

切换目录

切换目录使用 cd 命令(change directory 的缩写)。

例如进入到用户 abc 主目录下:

[root@101c7 ~]$ cd ~abc

使用绝对路径写法进入到 /etc/fonts/ 目录中:

[root@101c7 ~]$ cd /etc/fonts/

回退到上个目录:

[root@101c7 ~]$ cd -
/etc/fonts

使用相对路径写法进入到上级目录下的 init.d 目录:

[root@101c7 fonts]$ cd ../init.d/

不接参数直接进入当前用户的主目录:

[root@server1 ~]$ cd ; pwd
/root

新建目录

使用 mkdir 命令(make directory 的简写)来建立目录。

如建立一个名为 test1 的目录:

[root@101c7 ~]$ mkdir test1

可以用 -p 参数建立嵌套目录,比如建立 test2 文件夹后,在其下建立 test3 文件夹:

[root@101c7 ~]$ mkdir -p test2/test3 ; ll test2
total 0
drwxr-xr-x. 2 root root 6 Sep 9 04:19 test3

可以同时创建多个目录,目录名之间用空格分开。如一次建立 a1、b2、c3 三个文件夹:

[root@101c7 ~]$ mkdir a1 b2 c3 ; ll
total 3
drwxr-xr-x. 2 root root 6 Sep 9 04:21 a1
drwxr-xr-x. 2 root root 6 Sep 9 04:21 b2
drwxr-xr-x. 2 root root 6 Sep 9 04:21 c3

新建目录默认权限是 755,可以用 -m 参数在创建目录时自定义权限,比如建立权限为 777 的文件夹 decay:

[root@101c7 a1]$ mkdir -m 777 decay ; ll
total 0
drwxrwxrwx. 2 root root 6 Sep 9 04:23 decay

删除空目录

使用 rmdir 只能删除空目录。例如同时删除空目录 b2、c3:

[root@101c7 ~]$ rmdir b2 c3

可以加入 -p 来递归删除多级空目录。例如删除 decay 目录下面的空文件夹 cc,再删除 decay 目录:

[root@101c7 a1]$ ll
total 0
drwxrwxrwx. 3 root root 16 Sep 9 04:31 decay
[root@101c7 a1]$ rmdir -p decay/cc/ ; ll
total 0

查询目录大小

使用 du 可以查询到文件或目录所占大小。列出当前目录下面所有文件与目录大小:

[root@101c7 ext333]$ du -ha
102K    ./100K2
21M     ./1.copy
21M     ./lost+found/1.copy
21M     ./lost+found
2.0K    ./a.cfg
21M     ./1.iso
2.0K    ./users/jill.txt
4.0K    ./users
102K    ./100K
61M     .

最末一行显示整个文件夹大小为 61MB。

只统计当前目录下文件和文件夹(不列出文件夹下文件)大小,不包括隐藏文件:

[root@101c7 ext333]$ du -sh *
102K    ./100K
102K    ./100K2
21M     ./1.copy
21M     ./1.iso
2.0K    ./a.cfg
21M     ./lost+found
4.0K    ./users

统计包含隐藏文件和文件夹大小:

[root@k8s-250 ~]$ du -h --max-depth=1
0       ./.pki
16M     ./.kube
16K     ./.ssh
0       ./.git-credential-cache
8.0K    ./.docker
124K    ./.mizu
40K     ./.cache
1.7G    ./1
1.7G    .