4.2 目录结构及操作命令

目录结构编排文件是目前大多数操作系统所使用的一种通用的方法。每个文件都有文件字,再将文件名编排成目录。目录自身也是一种文件,所以也可以将目录编排到另外一个目录中。以此类推,层层组织可以建立一个结构性很强的环境。Linux也是使用一个目录树来编排所有的文件和目录,所有的文件和目录都在根目录(“/”)的下面。命名文件或目录的时候,从Linux文件系统的树根开始,列出想要的文件或目录的所有分枝目录,目录间用斜线(“/”)分隔。

4.2.1 Nautilus工具

在RHEL 5.x的桌面环境中提供了一个名为Nautilus的工具,可以方便地进行文件系统的管理。通过“应用程序”→“系统工具”→“文件浏览器”或直接双击桌面的“计算机”就可以打开Nautilus,如图4-1所示。Nautilus类似于Windows系统中的资源管理器,但是Nautilus并不能提供所有的功能,所以还是那句话“在Linux系统学会使用命令完成操作是必需的”。

图4-1 打开Nautilus

4.2.2 pwd:查看当前目录

pwd命令告诉用户当前所在的目录。

        [root@srv ~]# pwd
        /root

4.2.3 cd:改变当前目录

cd命令用于改变用户的当前目录,该命令语法如下。

        cd [目录|目录缩写]

常用指数:

cd命令可以改变当前目录,其中目录名表示需要切换到的目录;目录缩写包括:“.”表示当前目录;“..”表示当前目录的父级目录;“~”表示当前用户的家目录;“-”表示上一个工作目录。下面看几个cd命令的例子。

● 将当前目录切换到/home/charles目录。

        [root@srv ~]# cd /home/charles

● 将当前目录切换到当前目录的上一级目录。

        [root@srv ~]# cd ..
        [root@srv ~]# pwd
        /home

● 将当前目录切换到当前用户的家目录。

        [root@srv ~]# cd ~
        [root@srv ~]# pwd
        /home/charles

● 将当前目录切换到上一个工作目录。

        [root@srv ~]# cd -
        [root@srv ~]# pwd
        /home

● 将当前目录切换到用户charles的家目录。

        [root@srv ~]# cd ~charles
        [root@srv ~]# pwd
        /home/charles

4.2.4 ls:显示目录内容

ls命令用于显示指定目录的内容,该命令语法如下。

提示

在Linux系统中如果文件名以“.”开头则表示该文件是隐藏文件。

        ls [-anruhtFSlR] --time=<atime|ctime> --color<=使用时机> [目录…]

常用指数:

常用选项:

● [目录]:指定要显示内容的目录或目录缩写,如果需要显示多个目录时,可在目录名之间使用空格分隔。

● -a:显示包括以“.”开头的隐藏文件在内的所有文件及目录。

● -n:使用UID和GID代替用户名显示文件或目录的所有者和拥有组(有关UID、GID、所有者、拥有组等概念见第5章)。

● -r:反向排序,用相反的顺序列出文件和目录名称。

● -u:以最后存取时间排序,显示文件和目录。

● -h:使用k(KB)、M(MB)、G(GB)为单位,提高信息可读性。

● -t:根据文件或目录最后修改时间的顺序显示文件及目录。

● -F:显示目录下的文件或目录的名称及类型。以“/”结尾表示是目录名;以“*”结尾表示是可执行文件;以“@”结尾表示是符号连接;以“|”结尾的是软链接。

● -S:根据文件大小的顺序显示。

● -l:显示目录所有文件或目录的权限、所有者、文件大小、修改时间及名称。

● -R:显示目录及其所有子目录的文件。

● --time=<atime|ctime>:显示访问时间(atime)或改变权限属性时间(ctime),而不是内容变更时间(mtime)。

● --color<=使用时机>:在显示文件和目录时加上色彩,方便区别各种类型的文件。

● 使用时间的默认值为“none”,也就是不显示任何色彩。只加上“--color”表示设置为“always”。一般在使用“always”时可能显示的色彩包括:蓝色表示目录;绿色表示可执行文件:红色表示压缩文件;浅蓝色表示链接文件;红底白字表示有问题的文件,如符号链接所指向的文件已不存在时符号链接文件就属于有问题的文件(有关符号链接见4.3.6);灰色(白色)表示其他文件。

提示

在Linux系统会为目录或文件记录三个时间分别是:访问时间(atime)表示该文件或目录最后被访问的时间;改变权限属性时间(ctime)表示该文件或目录最后被修改权限属性的时间;内容变更时间(mtime)表示该文件最后被修改内容的时间。

ls命令用于显示指定目录中的内容,如果没有指定需要显示的目录,则显示当前目录的内容。下面看几个ls命令的例子。

● 显示当前目录的内容。

        [root@srv ~]# ls
        anaconda-ks.cfg  Desktop  install.log  install.log.syslog

● 显示“/boot”目录的内容。

        [root@srv ~]# ls /boot
        config-2.6.18-164.el5  grub  initrd-2.6.18-164.el5.img  lost+found

● 使用长格式显示“/boot”目录的内容。

        [root@srv ~]# ls -l /boot
        total 5541
        -rw-r--r--1 root root   68663 Aug 19 03:56 config-2.6.18-164.el5
        drwxr-xr-x 2 root root   1024 Feb  3 11:58 grub
        -rw-------1 root root 2636467 Jan 29 19:46 initrd-2.6.18-164.el5.img
        drwx------2 root root   12288 Jan 29 19:09 lost+found

● 使用长格式并使用k、M、G单位显示“/boot”目录的内容。

        [root@srv ~]# ls -lh /boot
        total 5.5M
        -rw-r--r--1 root root  68K Aug 19 03:56 config-2.6.18-164.el5
        drwxr-xr-x 2 root root 1.0K Feb  3 11:58 grub
        -rw-------1 root root 2.6M Jan 29 19:46 initrd-2.6.18-164.el5.img
        drwx------2 root root  12K Jan 29 19:09 lost+found

提示

在RHEL 5.x中为“ls-l--color”定义了一个别名“ll”,也就是说,在RHEL 5.x系统中使用“ll”命令时实际的意义是“ls-l--color”。

在使用“ls -l”时每行都会显示七列(如图4-2所示),每列的含义分别表示:第一列是权限位;第二列,如果该行是文件显示的是包含硬链接数,如果该行是目录包含子目录数(新建立的目录中就会显示子目录数为2,这是因为任何新建的目录都包括“.”和“..”两个目录);第三、四列是所有者和拥有组;第五列是大小;第六列是最后修改时间;第七列是文件或目录名。“total”表示该目录所有文件占用的空间。

图4-2 ls-l

4.2.5 mkdir:创建目录

mkdir命令用于创建目录,该命令语法如下。

        mkdir [-p] [-m <目录属性>] 目录名称…

常用指数:

常用选项:

● 目录名称:需要创建的目录,如果需要建立多个目录时,可在目录名之间使用空格分隔。

● -p:如果要建立的目录的父级目录当前尚未创建,则一起建立父级目录。

● -m:建立目录时,同时设置目录的权限,权限设置方法与chmod命令相同(chmod命令具体见第6章)。

mkdir命令类似于在Windows图形界面中的“新建”→“文件夹”功能,但是mkdir功能更强大。下面看几个mkdir命令的例子。

● 在当前目录下建立一个名为charles的目录。

        [root@srv ~]# mkdir charles

● 在根目录下建立一个名为charles的目录。

        [root@srv ~]# mkdir /charles

● 在/etc/目录是建立名为charles和jack的目录。

        [root@srv ~]# mkdir /etc/charles /etc/jack

● 在根目录下的doc目录中建立一个名为charles的目录,使用“-p”选项是因为doc目录目前还不存在。

        [root@srv ~]# mkdir -p /doc/charles

4.2.6 tree:以树状图显示目录内容

tree命令用于以树状图显示目录内容,该命令语法如下。

        tree [-aACdDfFgipstu] [-P <范本样式>] [-I <范本样式>] [目录…]

常用指数:

常用选项:

● [目录…]:指定要显示的目录,如果不指定则显示当前目录。

● -a:显示所有文件和目录,包括以“.”为名称开头的文件;当前目录“.”;父级目录“..”。

● -A:使用ANSI绘图字符显示树状图。

● -C:在文件和目录清单加上色彩,方便区分各种类型文件。

● -d:只显示目录,而不显示文件。

● -D:显示文件或目录的修改时间。

● -f:在每个文件或目录前显示完整的相对路径名称。

● -F:显示文件或目录的名称及类型。以“/”结尾表示是目录名;以“*”结尾表示是可执行文件;以“@”结尾表示是符号连接;以“|”结尾的是符号链接。

● -g:显示文件或目录的拥有组名称。

● -i:不使用阶梯状列出文件或目录名称。

● -p:显示文件或目录权限标示。

● -s:显示文件或目录大小。

● -t:使用文件或目录的修改时间排序。

● -u:显示文件或目录的所有者名称。

● -P<范本样式>:只显示符合范本样式的文件。

● -I<范本样式>:不显示符合范本样式的文件。

tree会显示指定目录下所有的文件、目录及子目录中的文件。下面看几个tree命令的例子。

● 以树状图显示/home目录内容。

        [root@srv ~]# tree /home/
        /home/
        |-- lost+found
        `-- charles
            `-- grub.conf
        2 directories, 1 file

● 以树状图显示/boot目录以.conf结尾的文件。

        [root@srv ~]# tree /boot/ -P *.conf
        /boot/
        |-- grub
        |   `-- grub.conf
        `-- lost+found
        2 directories, 1 file

● 以树状图显示/bin目录内容及文件类型,但是只显示以.conf结尾的文件。

        [root@srv ~]# tree -F -P t* /bin/
        /bin/
        |-- tar*
        |-- taskset*
        |-- tcptraceroute -> traceroute*
        |-- traceroute6-> traceroute*
        |-- tracert -> traceroute*
        `-- true*
        0 directories, 11 files