日历

2017年十二月
« 9月    
 123
45678910
11121314151617
18192021222324
25262728293031

最近评论

    linux/unix基础知识

    第2章 管理目录和文件

     2.1 文件系统和目录结构

    2.1.1 什么是文件系统
         UNIX 系统提供文件系统来管理和组织文件和目录。文可以看做是数据的容器,而目录是文件和(或)其他目录的容器,一个目录下的目录通常称为子目录。

    2.1.2 文件系统结构



        UNIX 文件系统层次提供了一种简单有效的机制来组织文件。由于UNIX 发布版本通常包括几百个文件和程序,所以每个UNIX 系统都支持一种默认的目录结构。在目录的顶端是根目录(UNIX/Linux文件系统像一个倒立的树,所以UNIX/LINUX文件系统又称为树状结构),根目录由一个反斜杠(/ )来表示。UNIX 系统同时提供了一些命令,可以让你在需要时很方便地创建新的目录,或从一个目录移动、拷贝文件到另一个目录。
         在HP-UX 10.0 中,文件系统由两个主要的部分组成:静态文件和动态文件。
        1. 静态文件:(共享的文件)有三个重要的目录:/opt, /usr , /sbin
        /opt 目录用来存放应用程序和产品。开发人员和系统管理员可以用这个目录安装新的产品和本地的应用程序。
        /usr/bin目录包含了最基本的UNIX 系统操作和文件处理命令,此目录下的命令所有用户都有权限使用(”bin” 是 binary 的缩写)。
        /usr/sbin目录存放的是系统管理命令。只有超级用户才能使用其中的大多数命令。在帮助手册 1m 中有关于这些命令的帮助文档。
        /usr/lib 目录包含应用程序使用的文档和共享的库
        /usr/share 目录包含独立提供的文件(其中最重要的是帮助手册)
        /usr/share/man 目录包含所有的语在线帮助相关的所有的文件
        /usr/local/bin 目录通常用来存放本地开发的程序和工具。
        /usr/contrib/bin 目录通常用来存放公用的程序和工具
        /sbin 这个目录包括基本的用于启动与关闭系统的命令。
    2.动态文件(私有的文件)在这个节有七个重要的目录: /home, /etc, /stand , /tmp , /dev, /mnt , 和/var;
        /home: 每一个 UNIX 系统的用户都有自己的帐号。同登录id 和口令一起,系统管理员会给你提供给一个你自己的目录。/home 目录一般包含每个系统用户的家目录,用户对你自己的家目录有完全的控制权。用户有责任在自己的家目录中建立子目录和文件时对这些目录和文件进行组织和管理。当用户登录系统,用户会进入与帐号相联系的目录中,这个目录,通常被称为HOME目录或是登录目录。从这个目录,用户可以跳转到有权访问的目录中,如果权限不够,用户最少可以访问在你家目录中的文件;如果权限足够的话,可以跳转到其他地系统目录(默认的情况),除非系统管理员限制用户对系统中特殊目录的存取。
        /etc 目录存放系统的配置文件。
        stand/vmunix 文件存储的是UNIX 系统内核文件。当系统启动时,这个程序被装载入内存,控制所有的系统操作。
        /tmp 目录通常作为操作系统的一个临时空间,操作系统创建中间文件,或是临时文件时使用这个目录。 注意UNIX 系统的惯例:在该目录下的文件或文件夹可以随时被删除。
         /dev 目录下存放系统的硬件设备文件,在Unix/linux系统中,硬件设备也像文件一样进行管理,这些硬件设备可以连接到一个挂载点进行使用,但是数据并不会被直接存储到这些文件中,这些问文件通常被叫做特殊文件或是设备文件。
        /mnt 用来挂载其它的设备(例如:光驱)
        /var/mail 目录用来存放用户邮件的信箱。
        /var/news 目录包括当前的新闻信息的所有的文件。其的内容可以使用命令new -a 来显示。
        /var/tmp 目录通常作为用户的临时空间。

     2.1.3 路径名 
        有很多UNIX命令的操作对象是文件和(或)目录。为了明确命令操作的文件或目录,命令中需要提供一个路径名作为这个命令的一个参数。路径名代表所要操作的文件或目录所经历的路线。
        $ command [options] [pathname pathname…….]
        为了阐明目录名的概念,我们使用模拟的方法,用一只铅笔沿着UNIX 系统的树状结构从一个位置画到另一个位置。路径名也就是铅笔的笔迹通过的目录结构所遇到的节点(即目录)的一个列表,这个列表直到你想要到达的目录或文件为止。 当指明文件或目录的路径名时,反斜杠(/ )被用来分割目录或文件名。
        Directory/directory/directory (目录/目录/目录)  
        Directory/file( 目录/文件) 
        用户无论何时登录UNIX 系统,都会定位到目录结构的某一目录下,用户通过 UNIX 系统命令变更自己所在的目录,但是普通用户一般会被限定在某些特定的目录中。比如:用户登录时,会被初始化置于用户的HOME 目录中。
        绝对路径和相对路径都能够指明文件和目录的位置。
        绝对路径
        1、给出文件或目录的位置的完全的描述。 
         2、通常由层次结构的根目录开始。
        3、 永远以“/ ”开头 
        4、 不因用户当前所在的目录受影响。
        5、在整个目录结构路径是唯一的。
        相对路径
        1、通常由目录结构中的当前的位置开始
        2、不以 / 开始。
       3、相对当前的位置只有唯一表示方法。 
        4、一般都比绝对路径要短。

    2.1.4 一些特殊的目录
        任何目录在创建时,两个项目会自动被创建,它们分别是点(.),和点点(..)。在使用相对路径的时候通常会用到这两个项目。前面所讲的相对路径仅仅只能向下穿越文件结构,其实也可以向上穿越文件系统结构。
        登录目录 当一个新的用户被加入到系统中,他(或她)会被分配一个登录id,可能还有一个密码,和一个用户自己拥有和控制的目录。这个目录通常创建在/home 目录下, 与用户的登录id名相同,然后用户可以在此目录下任意创建自己的文件和子目录。 当用户登录一个系统时,UNIX 系统会将用户转移这个目录下,这个目录被称为用户的登录目录或者是用户的HOME 目录。
        点(.) 代表用户当前所在的目录。 例如:如果用户当前正处于目录/home/user3 中: . 代表用户当前的目录/home/user3 ,./f1 代表的路径是/home/user3/f1, ./memo/f1 代表/home/user3/memo/f1
        点点(..) 代表当前所在目录的上一级目录。通常被称为父目录。每一个目录在自己的下面都可以有多个文件和多个子目录。但是每一个目录只能有一个父目录。这样,当向上进入文件系统的结构时不会出现混淆。 根目录(/ )象其他的目录一样,包含有点,和点点项目,但是由于根目录没有父目录,所以它的点点代表是根目录本身。 例如:用户当前所在地目录是/home ,那么.. 代表/目录;../.. 同样代表/目录;../tmp 代表/tmp;../tmp/f1 代表/tmp/f1 ;如果用户当前所在的目录是/home/user3,那么 .. 代表/home目录;../.. 代表/目录;../user2 代表/home/user2; ../user1/f1 代表/home/user1/f1; ../../tmp/f1 代表/tmp/f1。 绝对路径比相对路径还要短,如果相对路径使你穿越/ 目录,你可以使用绝对路径来代替相对路径。

    2.2 对目录操作的基本命令
        目录,就像一个文件夹,是组织你的文件的一种方式。下部分会介绍基本的目录 操作命令,这些命令可以: 
        1、 显示当前路径
        2、 了解目录下有什么文件和目录。 
        3、 跳转到文件系统中的另一个目录中去
        4、创建一个目录 
        5、 删除一个目录

    2.2.1 pwd——显示当前的工作目录 
         登陆到UNIX 系统时,用户会被置于文件系统中的某个目录下,这个目录通常被认为是用户的工作目录(家目录)。 pwd 命令会报告用户当前在UNIX 文件系统中位置的绝对路径名,pwd 是英文(print working directory)呈现工作目录的缩写。 pwd的参数比较少,一般直接执行pwd命令就可以了。但是在linux文件系统中,为了方便,有些时候将一些路径做了软连接,比如/etc/init.d,这个路径实际上是/etc/rc.d/init.d这个路径的软连接,但是只使用pwd命令显示的路径是/etc/init.d,如果要查看实际的路径的话,可以加上选项-P,那么命令就是pwd -P,显示的路径是/etc/rc.d/init.d了。
        $ pwd
        /home/user1

     2.2.2 ls——查看目录内容
        ls 命令的作用是列出目录和文件的名称,如果没有参数,ls 列出当前目录下的文件和目录名。 ls 也可以接收指定文件或目录的相对和绝对路径名作为参数。当文件的路径提供给ls,ls 会显示出指定的文件的信息。当目录的路径提供给ls ,ls 会显示指定目录中的内容。 ls 有很多选项。这些选项提供附加的信息。一个命令行可以支持多个选项, 以显示更多更全的文件或目录的信息。
        ls常用的选项有:
        -a 列出所有的文件,包括以点(.)开头的文件,这些文件是隐藏文件,除非使用–a 选项这些隐藏文件才会显现出来,这些以点开始的文件通常记录用户线索和应用的配置信息。
        -d 列出目录的描述,而不是列出目录的内容。通常与-l 一起使用来显示目录的状态。
        -l 长列表显示文件或目录的信息,包括类型,模式,链接数,属 主,组,大小(字节),更改日期,和名称。
        -F 在每个目录后面添加反斜杠(/ ),在可执行文件后面添加星号(*)。
        -R 递归地列出给出的目录和所有子目录中的文件。
        $ pwd
        /home/user1
        $ ls
         f1 f2 f3

    2.2.3 cd——改变目录
           cd 命令改变用户所在的目录。
         语法:$ cd path_name 其中,路径名是想要去的目录相对或绝对的路径名。当执行cd 命令而不带参数时, 会回到用户的HOME 目录,所以,如果在目录中迷路时,简单地键入cd 会让用户回到用户家目录。

      2.2.4 mkdir 和rmdir——创建和删除目录
        mkdir 命令是创建一个目录。当目录被创建时,两个子目录会被自动地创建,它们是代表当前目录的点(.), 和代表父母目录的点点(..), 创建目录时不会改变用户在文件系统中的位置。 默认的情况下,创建目录时指明的相对或绝对路径中的所有的中间目录都必须是已存在的目录;但是如果使用
        -p选项, 如果中间目录不存在,将会创建这些目录
        -m mode (模式) 在创建了指定的目录后,目录被设置成默认的权限。
        rmdir 命令是删除一个目录,被删除的目录必须是空的(也就是除了点和点点外没有其他的东西),同时,你不能删除在你当前目录和根目录之间的目录。 mkdir和rmdir命令都可以有多个参数,mkdir 的参数代表的是新的目录名,rmdir 的参数必须是已经存在地目录名。同时,任何用目录名和文件名作为参数的命令都可以 使用绝对路径和相对路径。

    2.2.5 find——查找文件
    find    path    -option    [  -print ]    [ -exec    -ok    command ]    {} \;
    #-print 将查找到的文件输出到标准输出
    #-exec    command    {} \;       —–将查到的文件执行command操作,{} 和 \;之间有空格
    #-ok 和-exec相同,只不过在操作前要询用户
    ====================================================
    -name    filename               #查找名为filename的文件
    -perm     4000                     #按执行权限来查找,此处是查找设置了UID的文件
    -user     username              #按文件所属用户来查找
    -group groupname           #按文件所属用户组来查找
    -mtime    -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
    -atime     -n +n                    #按文件访问时间来查
    -ctime     -n +n                   #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
    -nogroup                             #查无有效用户组的文件,即文件的用户组在/etc/groups中不存在
    -nouser                                #查无有效用户的文件,即文件的用户在/etc/passwd中不存
    -newer    f1 !f2                   # 找文件,-n指n天以内,+n指n天以前
    -type      b/d/c/p/l/f /s    #查是块设备、目录、字符设备、管道、符号链接、普通文件、套接字文件
    -size       +-n[c]                #查长度为n块[或n字节]的文件,+ 文件大于某个限定值,-文件小于某个限定值
    -depth                        #使查找在进入子目录前先行查找完本目录
    -fstype                       #查更改时间比f1新但比f2旧的文件
    -mount                        #查文件时不跨越文件系统mount点
    -follow                       #如果遇到符号链接文件,就跟踪链接所指的文件
    -cpio                         #对匹配的文件使用cpio命令,将他们备份到磁带设备中
    -prune                        #忽略某个目录
    ==================================================================
    find   . -name april*                                               在当前目录下查找以april开始的文件
    find   . -name    april*    fprint file                     在当前目录下查找以april开始的文件,并把结果输出到file中
    find   . -name ap* -o -name may*                   查找以ap或may开头的文件
    find    /mnt    -name tom.txt    -ftype vfat    在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
    find    /mnt    -name t.txt ! -ftype vfat            在/mnt下查找名称为t.txt且文件系统类型不为vfat的文件
    find    /tmp    -name wa* -type l                        在/tmp下查找名为wa开头且类型为符号链接的文件
    find    /home    -mtime    -2                                 在/home下查最近两天内改动过的文件
    find /home     -atime -1                                       查1天之内被存取过的文件
    find /home -mmin     +60                                  在/home下查60分钟前改动过的文件
    find /home    -amin    +30                                 查最近30分钟前被存取过的文件
    find /home    -newer    tmp.txt                        在/home下查更新时间比tmp.txt新的文件或目录
    find    /home    -used    -2                                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录
    find    /home    -user user1                             列出/home目录内属于用户user1的文件或目录
    find    /home    -uid    +501                            列出/home目录内用户的UID大于501的文件或目录
    find    /home    -group    user1                    列出/home内所属用户组为user1的文件或目录
    find    /home    -gid 501                                列出/home内gid为501的文件或目录
    find    /home    -nouser                                 列出/home内不属于本地用户的文件或目录
    find    /home    -nogroup                            列出/home内不属于本地组的文件或目录
    find    /home     -name tmp.txt     -maxdepth    4    列出/home内的tmp.txt 查时深度最多为3层
    find    /home    -name tmp.txt    -mindepth    3    从第2层开始查
    find    /home    -empty                       查找大小为0的文件或空目录
    find    /home    -size    +512k                 查大于512k的文件
    find    /home    -size    -512k                 查小于512k的文件
    find    /home    -links    +2                   查硬连接数大于2的文件或目录
    find    /home    -perm    0700                  查权限为700的文件或目录
    find    /tmp    -name tmp.txt    -exec cat {} \;
    find    /tmp    -name    tmp.txt    -ok    rm {} \;

    find     /    -amin     -10         # 查找在系统中最后10分钟访问的文件
    find     /    -atime    -2           # 查找在系统中最后48小时访问的文件
    find     /    -empty                # 查找在系统中为空的文件或者文件夹
    find     /    -group    cat          # 查找在系统中属于 groupcat的文件
    find     /    -mmin    -5           # 查找在系统中最后5分钟里修改过的文件
    find     /    -mtime    -1          #查找在系统中最后24小时里修改过的文件
    find     /    -nouser               #查找在系统中属于作废用户的文件
    find     /    -user     fred         #查找在系统中属于FRED这个用户的文件

    其他用法:
    1. 基本用法:
          find / -name 文件名
         find . -type d   在当前目录下查找,仅查找目录
    2. 无错误查找,即将查找到的错误输出到/dev/zero或/dev/null:
          find / -name access_log 2 >/dev/null
    3. 按大小查找:
          find / -size 1500c (查找1,500字节大小的文件,c表示字节)
          find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)   
          find / -size -1500c (查找小于1,500字节大小的文件,-表示小于)   
    4. 按时间:
          find / -amin n 最后n分钟
          find / -atime n 最后n天
          find / -cmin n 最后n分钟改变状态
          find / -ctime n 最后n天改变状态
    5. 其它:
          find / -empty 空白文件、空白文件夹、没有子目录的文件夹
          find / -false 查找系统中总是错误的文件
          find / -fstype type 找存在于指定文件系统的文件,如type为ext2
          find / -depth n 在某层指定目录中优先查找文件内容
          find / -maxdepth levels 在某个层次目录中按递减方式查找
    6. 逻辑
          -and 条件与 -or 条件或

    2.3 文件操作基本命令
    2.3.1 文件属性
        一个文件有几个相关的属性,可以用ls –l 来显示:
        1、 type 普通文件或是特殊文件 ●
        2、permission or mode 定义对文件的访问权限 
        3、 links 与一个独立的数据集合相关联的文件名的数目
         4、 文件所有者的用户
        5、文件所属用户组
        6、文件最后更改的日期时间
        7、文件名 最大14 个字符(如果长文件名支持,最大255 个字符)
        文件名规范 1、 最大14 个字符 2、如果支持长文件名,文件名最大255 个字符 3、文件名 一般由字母(a-zA-Z),数字(0-9),点(.),短横线(-)和下划线 (_ ) 组成。 有许多字符在 shell 中有 “特殊”的意义,例如空格和反斜杠,所以一般 不能使用特殊字符作为文件名。其他的特殊字符有,*,<,>,\,$,|。
        在 UNIX 系统中,点(.)是一个普通的字符,所以它能出现在文件名的任何位置,文件名 a.bcdefg,a.b.c.d和a…b 都是合法的文件名。点只有一点特殊就是作为一个文件名的第一个字符的时候,表示该文件时一个隐藏文件。 显示这些隐藏文件可以使用ls -a或ls -all。
        UNIX  文件系统有多种文件类型,包括: – 普通文件 d 目录 l 链接文件 n 网络专用文件 c 字符设备文件(终端,打印机) b 块设备文件(磁盘) p 命名的管道(一种内部过程通信通道)

    2.3.2 cat——显示文件内容 
        这个命令可不是“猫”的意思,而是catenate的缩写。顾名思义,是把东西串起来。比如:cat file1 file2, 将file1和file2的内容不作任何修改的显示在屏幕上,看上去就像显示一个文件一样,因为cat在在file1文件的结尾也不作任何标识。但是如果文件超过终端屏幕显示的大小,文件的文本会快速地向下滚动使你几乎看不清楚内容。所以这个时候我们可以在cat命令后使用管道命令和more或less来显示文件的内容。 当cat 命令不带任何参数使用的时候,它会等待你从键盘输入,和mail, write 命令一样,回车后ctrl +d 用来结束输入,输入结束后,刚才输入的文本会在屏幕上显示出来。 

     2.3.3 more——显示文件内容
        more 命令显示出文件的内容,它一次只显示一屏。要看下一屏,按一下空格键。按一下回车键可以逐行显示,按q键退出more命令。
       

     $ 2.3.4 tail——显示文件尾部的内容
       语法:tail [-n] [文件名]
        tail 命令的作用是显示一个文件的最后n 行如果没有指定行数的话,默认显示最后10行,如果查看周期性添加信息的日志文件可以使用tail -f  /var/log/messages,即使用选项f,可以动态的显示新增到日志文件中的最后内容。使用tail 命令,可以直接看到已记录的最后的信息,而不需要用cat 和more 来滚动整个文件到末尾。

    2.3.5 lp——打印
        lp 命令让用户将文件送往打印队列来打印文件。每个使用lp 提交的打印请求都会被分配一个唯一的任务标识号(称为一个请求ID)。 lp 会将文件排队打印,或者读取标准输入。 最简单的lp 的用法是提供一个文件名作为一个参数,lp 会将这个文件送到默认的打印机排队打印。 lp 命令有许多的选项定制路由和打印。
        lp 命令的语法是:  lp [-d dest] [-n number] [-o option] –t title [-w] [file….]
        -n  number 文件打印的重复的份数(默认是 1)。
        -ddest 打印请求会被送到的打印机的名字。
        -ttitle 在打印输出的标题页中打印标题。
        -ooption 指定你的打印机的具体的选项,例如字体,间距,灰度等等
        -w 在文件打印完成以后,写一条信息到用户的终端。
        例: $ lp myfile Request id is dp-120(1 file)

    2.3.6 lpstat——查看打印状态
        lpstat 命令报告lp 缓冲系统不同部分的状态。lpstat,当不加任何参数的时候,报告当前送往打印的打印请求。
        -t 选项显示系统中的所有的打印机的状态信息。
        $ lpstat
         Rw-21 user1 2423 Jul9 10:11:25 1999

    2.3.7 cancle——取消打印作业
        cancel 命令被用来从打印队列中删除打印请求。通过取消当前在打印机上的打印任务使下一个打印请求能被打印。在打印非常长的文件或试图错误地打印一个二进制文件时(例如/usr/bin/cat ),如果想要取消一个打印请求,可以使用cancle命令。切记,lp 通常打印文本文件,要取消一个打印请求,必须给cancel 命令一个参数来告诉打印缓冲器那一个打印请求是想要取消的。
        cancel 的参数有两种类型: ● 一个请求的ID (lp 和lpstat 给出的) ● 一个打印机的名字通过赋予cannel 一个打印请求的ID,指明的哪个打印请求就会被取消。如果 cancel 后面的参数是一个打印机名,当前在哪个打印机上正被打印的任务会被停 止,打印队列中的下一个打印请求会开始打印。
        $ lpstat
        Rw-21 user1 2423 Jul9 10:11:25 1999
        $ cancle dp-120
        $ cancle laser

    2.3.8 cp——拷贝文件
        语法: $ cp [-i] file1 new_fle 拷贝一个文件
        $ cp [-i] file [file…] dest_dir 拷贝一个文件到一个目录中去
        $ cp –r [-i] dir [dir …] dest_dir 拷贝目录
        注意事项: 1、要求必须有两个或两个以上的参数,即源文件与目标文件。 2、 一个参数可以使用相对和绝对路径。 当拷贝一个单个的文件是,目标可能是一个文件的路径,或是一个目录。如果目标是一个文件,而这个文件又不存在,它会被创建。如果目标文件已经存在,它的内容会被源文件的内容代替。如果目标是一个目录,文件会被拷贝到这个目录下去,同时文件名不变。
         -a:在复制目录时使用。它保留链接、文件属性,并递归地复制目录。
       
    -d:在进行复制的时候,如果是复制到链接文件,若不加任何参数,则默认情况下会将连接文件指向的源文件复制到目的地地,若加-d时,则连接文件可原封不动地将链接这个快捷方式复制到目的地。
        -f:删除已经存在的目标文件而不提示。
        -r:可以进行目录的递归循环复制。 
        -s:做成链接文件,而不复制,功能与ln命令相同。
        -u,–update:如果来源文件比较新,或者是没有目的文件,那么才会进行复制的操作,可用于文件备份的策略中。

        $ ls /home/user1
         f1
        $ cp f1 f2
        $ ls /home/user1
        f1 f2

    2.3.9 mv——移动或重命名文件 

    语法
    mv [-bfiuv] [–help] [–version] [-S <附加字尾>] [-V <方法>] [源文件或目录]
    参数说明:
    -b或–backup:若需要覆盖文件,则覆盖前先备份。
    -f或–force:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。
    -i或–interactive:覆盖前先询问用户,即采用交互方式。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否覆盖,要有用户回答y或n,这样可以避免误覆盖文件。
    -S<附加字尾>或–suffix=<附加字尾〉:与-b参数一并使用,可指定备份文件所要附加的字尾。
    -u或–update:在移动或更改文件名时,若目标已存在,且其文件日期比源文件新,则不覆盖目标文件。
    -v或–verbose:执行时显示详细的信息。
    -V=<方法>或–version-control=<方法>:与-b参数一并使用,可指定备份的方法。
    –help:显示帮助。
    –version:显示版本信息。

    注意事项: 1、 要求至少有两个参数: 源与目标。2、任何一个参数都可以使用绝对或是相对路径。 3、 当重命名一个单个的文件的时候,目标可以是一个文件的路径或一个目录。 如果目标是当前目录下的一个文件,这个文件会被重命名,如果目标是一 个目录,源文件会被移动到这个目录。如果文件不存在,文件会被创建。 4、 如果目标文件已经存在,它的内容会被源文件所代替,如果目标是一个目录,文件会被移动到哪个目录。5、 -i (interactive 交互)选项会在目标文件或目录存在的情况下提醒你,并且会要你确认是否覆盖文件或目录。6、当移动多个文件时,目标必须是一个目录。 7、当源是个目录的时候,它会被重命名为目标名。

     2.3.10 ln——对文件进行链接 
        语法: ln [bdfinsvF] source dist,
        说明 : Linux/Unix 文件系统中,链接(link)可以视为档案的别名。
        链接分为两种 : 硬链接(hard link)和软链接(symbolic link)。 硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是在同一个文件系统中,不能跨文件系统,也就是不同的分区(挂载点),而软连结却可以跨越不同的文件系统。 
        不论是硬连结或软链结都不会将原本的档案复制一份,只会使用一个inod,占用非常少量的磁碟空间。
        参数 : -f : 链接时先将与dist 同档名的档案删除
        -d : 系统管理者硬链结自己的目录
        -i : 在删除与dist 同档名的档案时先进行询问
        -n : 在进行软链接时,将dist 视为一般的档案
        -s : 进行软链接(symbolic link),最常用的选项
       
     -v : 在链接之前显示其档名
        -b : 将在链接时会被覆写或删除的档案进行备份
        -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
        -V METHOD : 指定备份的方式
        –help : 显示辅助说明
        –version : 显示版本尝试过硬链接后发现硬链接并不是随时被允许,建立了硬链接后就分不清到底哪个是链接哪个都不是了,好象是两个内容一样的复本。
        注意: UNIX 系统没有限制多个用户同时存取和修改同一个文件。每一个用户的修改, 都会在内存中有一份单独的映象,但是最后存盘的用户会决定磁盘上的文件的版本。有的应用程序会提醒一个用户文件已经被打开,可能限制其他的用户来存取那个已经打开的文件。 当许多的文件被链接到一起的时候,用ls –l 显示出的链接数会比1 要大,如果任何一个链接被删除,唯一改变的是链接数会减少,文件的内容不会改变,直到链接数减少到0,在这个时候磁盘的空间也被释放出来。

    2.3.11 rm——删除文件
        语  法:rm [-dfirv][–help][–version][文件或目录…]
        补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数”-r”,否则预设仅会删除文件。 
        参  数:
     -d或–directory            直接把欲删除的目录的硬连接数据删成0,删除该目录。 
     -f或–force                      强制删除文件或目录。 
     -i或–interactive          删除既有文件或目录之前先询问用户。 
     -r或-R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
     -v或–verbose              显示指令执行过程。 
     –help                             在线帮助。 
     –version                      显示版本信息
        rm 命令被用来删除文件。一旦文件被删除是不可挽回的,rm 命令至少要有一个参数(一个文件名),如果指定的文件名超过一个,所有的指明的文件都会被删除。 以下是最常用的选项: -f 强制删除文件—用户不会得到任何提示,甚至在发生一个错误的时候。 -r 递归地删除指定目录中的所有的内容。 -i 询问或交互模式,它会要求用户确认来完成删除。你的回答有y (yes )和n (no ), 回车的作用和回答no 是一样的。 注意: 通常是在极端的情况下才能使用–r 选项,使用不正确,会删除你的所有的文件, 一旦一个文件被删除,只能从备份磁带上恢复这个文件。如果你必须要用–r 选项,请和-i 选项一起应用。

    2.4 实验 回答相关问题。
    1. 什么是主目录?
    2. 在主目录中,用ls 命令查出以目录/home 为根部的整个树状结构,用图表示出来。目录以圆圈表示。
    3. 在主目录创建一个叫 zte 的目录。将这个目录变为工作目录,应当使用什么命令?这个新目录的绝对路径名是什么?
    4. 在主目录创建以下目录,要求只能用一个命令行: zte/dirA/dir1 zte/dirA zte/dirA/dir2 zte/dirA/dir1/dirc 你碰到什么问题了吗?如果碰到问题,在重试之前,将刚才创建的所有目录删除, 这个删除应该使用哪个命令?
    1. 在主目录获取一个在zte 目录下的dirA 目录列表。既可以使用相对路 径名,也可以使用绝对路径名。应该使用什么命令?
    2. 在主目录仅使用 rmdir 命令,删除在 zte 目录下所有子目录。仅用一 个rmdir 命令如何实现这点?
    3. 在主目录用 cat 命令显示文件/var/adm/syslog/syslog.log 的内容会发现 什么?有无其他命令可以显示文件内容时控制文本的滚动?
    4. 用more 命令显示zte 目录的内容会发现什么?用什么命令查看一个目 录下的内容?
    5. 用 more 命令显示文件/usr/bin/ls 会发现什么?用 cat 命令显示文件 /usr/bin/ls 会发生什么情况?
    6. 到主目录下将名为names 的文件拷贝为名为names.cp 的文件,并列举 这两个文件的内容,以确认一致。
    7. 如果文件names 被修改,这个修改会影响到文件names.cp 吗?
    8. 将文件names 再进行一次拷贝,拷贝结果为names.new。将names.new 的名字改为names.orig。
    9. 如何创建两个文件(名为 names.2nd 和 names.3rd),使它们同时指向 文件names 的内容?
    10.如果修改了文件names的内容,names.2nd和names.3rd的内容是否受影 响?将文件funfile拷贝为文件names,用相关命令列出所有以names打 头文件的属性长列表,names.orig是否受影响?names.2nd和names.3rd 是否受到影响?
    11.删除文件names,names.2nd 和names.3rd 是否受到影响?
    12.在主目录下创建一个名为 fruit 目录。用一个命令将names 文件移到目 录fruit 下。
    13.将 fruit 目录更名为tree 目录。

    评论已关闭。