本章将详细讨论Unix中的目录管理。
目录本质上是一个特殊文件,保存了目录下所有文件的名称及信息。所有文件,无论是普通文件、特殊文件或者目录,都包含在目录中。
Unix使用层次结构来组织文件和目录。这种结构通常称为目录树。树有一个根节点,用斜杠字符(/)表示,所有其他目录都包含在其下面。
用户目录
通常,每个用户都有一个用户专属目录(或称为Home目录)。
当用户登录成功,默认切换到用户目录,用户可以在此目录中保存自己的文件。
可以使用以下命令进入用户目录:
$ cd ~
$
这里~
表示用户目录。进入其他用户的专属目录,使用以下命令:
$ cd ~username
$
要进入上一个当前目录,可以使用下面的命令:
$ cd -
$
绝对/相对路径
目录按照层次结构排列,顶部是root(/),路径的元素由斜杠/
分隔。层次结构中,文件位置由其路径表示。
绝对路径是从根目录开始的路径,例如:
/etc/passwd
/home/kevin
/dev/stdin
相对路径是从某个目录开始的路径,例如:
kevin/notes
kevin/res
要确定当前目录的路径,可使用命令pwd
:
[kevin@localhost ~]$ pwd
/home/kevin
列出目录下内容
要列出目录中的文件,可以使用以下命令:
$ ls dirname
下面的示例列出/usr/local
目录中包含的所有文件
[kevin@localhost ~]$ ls /usr/local
bin etc games include lib lib64 libexec sbin share src
创建目录
可以通过mkdir
命令创建目录:
$ mkdir dirname
dirname
是要创建的目录名,可以指定路径。例如:
当前目录中创建:
$ mkdir mydir
指定路径下创建:
$ mkdir /tmp/test
$
如果mkdir
命令成功创建目录,不会产生任何输出。
mkdir
可以1次创建多个目录,例如:
$ mkdir book1 book2
$
创建父目录
有时,当你想创建一个目录时,它的父目录可能不存在,mkdir
会报错,创建目录失败。
可通过mkdir
命令的-p
选项创建路径中所有必要的目录,例如:
$ mkdir -p /tmp/kevin/test
$
上面的命令中,kevin
目录也将被创建。
删除目录
可以使用rmdir
命令删除目录,如下所示
$ rmdir dirname
$
注意:要删除一个目录,目录必须为空。
可以1次删除多个目录,如下所示:
$ rmdir dirname1 dirname2 dirname3
$
rmdir
命令执行成功,不产生任何输出。
切换目录
可以使用cd
命令切换到任何目录。语法如下所示:
$ cd dirname
$
dirname
是要切换过去的目录。例如:
$ cd /usr/local
$
切换到目录/usr/local
。
重命名目录
可以使用mv (move)命令重命名目录。语法是这样的:
$ mv olddir newdir
$
可以将目录mydir
重命名为yourdir
,如下所示
$ mv mydir yourdir
$
单点目录(.)与双点目录(..)
- 单点目录(.) – 表示当前工作目录;
- 双点目录(..) – 表示当前工作目录上一层目录,通常称为父目录。
可通过ls
命令的-a
选项列出单点目录(.)与双点目录(..)
[kevin@localhost ~]$ ls -al
总用量 20
drwx------. 3 kevin kevin 111 3月 31 18:40 .
drwxr-xr-x. 4 root root 33 3月 30 21:51 ..
-rw-------. 1 kevin kevin 457 3月 31 19:37 .bash_history
-rw-r--r--. 1 kevin kevin 18 10月 31 01:07 .bash_logout
-rw-r--r--. 1 kevin kevin 193 10月 31 01:07 .bash_profile
-rw-r--r--. 1 kevin kevin 231 10月 31 01:07 .bashrc
drwxrwxr-x. 2 kevin kevin 157 3月 31 18:40 book
-rw-------. 1 kevin kevin 760 3月 31 18:40 .viminfo
[kevin@localhost ~]$