目录
Linux cd命令:切换目录
Linux pwd命令:显示当前路径
Linux ls命令:查看目录下文件
Linux mkdir命令:创建目录(文件夹)
Linux rmdir命令:删除空目录
cd命令(change Directory) 用来切换工作目录
Linux命令按照来源方式,可分为两种,分别是Shell内置命令和外部命令。所谓Shell内置命令,就是Shell自带的命令,这些命令是没有执行文件的;而外部命令就是由程序员单独开发的,所以会有命令的执行文件。Linux中的绝大多数命令都是外部命令,而cd命令是一个典型的Shell内置命令,所以cd命令没有执行文件所在路径。
[root@localhost ~]# cd [相对路径或绝对路径]
除此之外,cd命令后面可以跟一些特殊符号,表达固定的含义
特殊符号 | 作用 |
---|---|
~ | 代表当前登录用户的主目录 |
~用户名 | 表示切换至指定用户的主目录 |
- | 代表上次所在目录 |
. | 代表当前目录 |
.. | 代表上级目录 |
[root@localhost ~]# cd ~ #表示回到自己的主目录,对于root用户,其主目录为/root [root@localhost ~]# cd #没有加上任何路径,也代表回到当前登录用户的主目录 [root@localhost ~]# cd ~Fancy #代表切换到Fancy这个用户的主目录,亦即/home/Fancy[root@localhost ~]# cd .. #表示切换到目前的上一级目录,亦即/root的上一级目录的意思
需要注意的是,Linux系统中,根目录确实存在.(当前目录)以及..(当前目录的父目录)两个目录,但由于根目录是最顶级目录,因此根目录的..和.的属性和权限完全一致,也就是说,根目录的父目录是自身。
[root@localhost ~]# cd - #表示回到刚刚的那个目录
其实在 [root@localhost ~] 中,就已经指明了当前所在的目录,通常刚登陆时会位于自己的主目录中,而 ~ 就表示主目录,因此也就有了通过使用 cd ~
可以回到自己的主目录。
由于Linux文件系统中有许多目录,当用户执行一条Linux命令又没有指定该命令或参数所在的目录时,Linux系统就会首先在当前目录(目前的工作目录)搜寻这个命令或它的参数。因此,用户在执行命令之前,常常需要确定目前所在的工作目录,即当前目录。
当用户登录Linux系统之后,其当前目录就是它的主目录。pwd来显示当前目录的绝对路径。
pwd命令,Print Working Directory(打印工作目录)的缩写,功能是显示用户当前所处的工作目录。
[root@localhost ~]# whoami root [root@localhost ~]# pwd /root
whoami命令用于确定当前登陆的用户,root用户当前所在目录是它的主目录/root。
ls 命令,list 的缩写,是最常见的目录操作命令,其主要功能是显示当前目录下的内容。
[root@localhost ~]# ls [选项] 目录名称
选项 | 功能 |
---|---|
-a | 显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来,这是最常用的选项之一。 |
-A | 显示全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录。 |
-d | 仅列出目录本身,而不是列出目录内的文件数据。 |
-f | ls 默认会以文件名排序,使用 -f 选项会直接列出结果,而不进行排序。 |
-F | 在文件或目录名后加上文件类型的指示符号,例如,* 代表可运行文件,/ 代表目录,= 代表 socket 文件,| 代表 FIFO 文件。 |
-h | 以人们易读的方式显示文件或目录大小,如 1KB、234MB、2GB 等。 |
-i | 显示 inode 节点信息。 |
-l | 使用长格式列出文件和目录信息。 |
-n | 以 UID 和 GID 分别代替文件用户名和群组名显示出来。 |
-r | 将排序结果反向输出,比如,若原本文件名由小到大,反向则为由大到小。 |
-R | 连同子目录内容一起列出来,等於将该目录下的所有文件都显示出来。 |
-S | 以文件容量大小排序,而不是以文件名排序。 |
-t | 以时间排序,而不是以文件名排序。 |
--color=never --color=always --color=auto | never 表示不依据文件特性给予颜色显示。 always 表示显示颜色,ls 默认采用这种方式。 auto 表示让系统自行依据配置来判断是否给予颜色。 |
--full-time | 以完整时间模式 (包含年、月、日、时、分)输出 |
--time={atime,ctime} | 输出 access 时间或改变权限属性时间(ctime),而不是内容变更时间。 |
当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色(蓝色显示目录,白色显示一般文件)。
[illusion@Fancy ~]$ ls -al ~ total 112 drwx------. 18 illusion illusion 4096 Jul 12 14:10 . drwxr-xr-x. 6 root root 60 Jul 11 16:18 .. -rw-rw-r--. 1 illusion illusion 0 May 25 10:32 a drwxr-xr-x. 3 root root 93 Jun 9 15:29 abc -rw-------. 1 illusion illusion 1980 Jul 11 16:34 .bash_history -rw-r--r--. 1 illusion illusion 18 Aug 30 2019 .bash_logout -rw-r--r--. 1 illusion illusion 141 Aug 30 2019 .bash_profile -rw-r--r--. 1 illusion illusion 312 Aug 30 2019 .bashrc drwx------. 13 illusion illusion 4096 Jun 9 10:56 .cache -rw-rw-r--. 1 illusion illusion 11 May 25 09:59 cat
通过使用 -a,你会看到以 . 为开头的几个文件,以及目录文件 (.)、(..)、.gconf 等等,这些都是隐藏的目录和文件。其中,目录文件名以蓝色显示,一般文件以白色显示。
Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!所以,不论是 Linux 还是 Windows 都可以非常简单地査看隐藏文件,只是在 Windows 中绝大多数的病毒和木马都会把自己变成隐藏文件,给用户带来了错觉,以为隐藏文件是为了不让用户发现。
drwxr-xr-x. 6 root root 60 Jul 11 16:18 ..
ls 命令还使用了 -l 选项,因此才显示出了文件的详细信息,此选项显示的这 7 列的含义分别是:
第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。 第二列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。 第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。 第五列:大小,默认单位是字节。 第六列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。 第七列:文件名或目录名。
查看某个目录的详细信息
[root@Fancy ~]# ls -l /root/ total 48 -rw-r--r--. 1 root root 10 Nov 10 2021 123 -rw-------. 1 root root 1407 Jul 11 14:52 anaconda-ks.cfg lrwxrwxrwx. 2 root root 1 Jun 1 21:19 b -> a drwxr-xr-x. 2 root root 57 Jul 11 14:31 base drwxr-xr-x. 3 root root 22 Nov 10 2021 beixin -rw-r--r--. 2 root root 0 Jul 11 11:45 bols lrwxrwxrwx. 2 root root 1 Jun 1 21:19 c -> a -rw-r--r--. 1 root root 0 Jul 11 11:45 cangls
这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。如果想显示目录本身的信息,就必须加入 "-d" 选项。
[root@Fancy ~]# ls -dl /root/ dr-xr-x---. 23 root root 4096 Jul 12 14:27 /root/
"ls-l" 显示的文件大小是字节,但是我们更加习惯的是千字节用 KB 显示,兆字节用 MB 显示,而 "-h" 选项就是按照人们习惯的单位显示文件大小
[root@Fancy ~]# ls -lh total 48K -rw-r--r--. 1 root root 10 Nov 10 2021 123 -rw-------. 1 root root 1.4K Jul 11 14:52 anaconda-ks.cfg lrwxrwxrwx. 2 root root 1 Jun 1 21:19 b -> a drwxr-xr-x. 2 root root 57 Jul 11 14:31 base drwxr-xr-x. 3 root root 22 Nov 10 2021 beixin -rw-r--r--. 2 root root 0 Jul 11 11:45 bols
mkdir 命令,是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用。
mkdir 命令的基本格式为:
[root@localhost ~]# mkdir [-mp] 目录名
-m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
-p 选项递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及 /home/test/demo。
创建目录
[root@Fancy ~]# mkdir cangls [root@Fancy ~]# ls anaconda-ks.cfg cangls ....
建立一个名为 cangls 的目录,通过 ls 命令可以查看到这个目录已经建立。注意,我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下。
使用 -p 选项递归建立目录
[root@Fancy ~]# mkdir -p lm/movie/jp/cangls [root@Fancy ~]# ls anaconda-ks.cfg cangls lm ... [root@Fancy ~]# ls lm/ movie
使用 -m 选项自定义目录权限
[root@Fancy ~]# mkdir -m 711 test2 [root@Fancy ~]# ls -l drwx--x--x. 2 root root 6 Jul 12 14:41 test2 ...
默认权限(默认权限值是 755)。在创建 test2 时,使用了 -m 选项,通过设定 711 权限值来给予新的目录 drwx--x--x 的权限。
和 mkdir 命令(创建空目录)恰好相反,rmdir(remove empty directories 的缩写)命令用于删除空目录,此命令的基本格式为:
[root@localhost ~]# rmdir [-p] 目录名
-p 选项用于递归删除空目录。
[root@Fancy ~]# rmdir cangls
命令后面加目录名称即可,但命令执行成功与否,取决于要删除目录是否是空目录,因为 rmdir 命令只能删除空目录。
通过学习 mkdir 命令我们知道,使用 mkdir -p 可以实现递归建立目录,同样地,rmdir 命令可以使用 -p 选项递归删除目录。例如:
[root@Fancy ~]# rmdir -p lm/movie/jp/cangls/
注意,此方式先删除最低一层地目录(这里先删除 cangls),然后逐层删除上级目录,删除时也需要保证各级目录是空目录。
rmdir 命令的作用十分有限,因为只能刪除空目录,所以一旦目录中有内容,就会报错。例如:
[root@Fancy ~]# mkdir test 建立测试目录 [root@Fancy ~]# touch test/boduo [root@Fancy ~]# touch test/longze 在测试目录中建立两个文件 [root@Fancy ~]# rmdir test rmdir: failed to remove 'test': Directory not empty 删除失败 目录非空