• lesson


    一.帮助+基本文件管理+用户管理
      1.怎么查看命令帮助
        ls --help
        man ls :查看命令/man 5 file:查看配置文件

    二.基本文件管理,通过{查,建,删,改} 四个维度介绍了不同的命令
    *查:
      ls : 查看文件等信息
        /cat: 查看文件只显示最后一页、
        /cat > filename:创建新文件 
        /cat file1 file2 > file:合并文件 
        / -A : 全文显示
        / -b :对非空输出行编号
        / -n: 全文显示并编行号
      tac: 文件最后一页并使文件内容前后颠倒
      more:分屏显示,按空格翻页,无法前翻
        /(Ctrl+B 返回上一屏/Ctrl+F(空格): 向下滚动一屏) /
        / +/string 搜寻该字串,前两行之后开始显示 /
        / ls -l | more -5: 分页显示文件,每页5条
      less:可上下滚动查看文件内容(空格翻页,上下箭头换行,PgUp/PgDn:翻已存在的页面)
        /ps -ef |less: 分页显示进程
        /ctrl + F - 向前移动一屏
        /ctrl + B - 向后移动一屏
        /ctrl + D - 向前移动半屏
        /ctrl + U - 向后移动半屏
      head:默认查看文件前10行
        /head -n 5 file: 显示file前5 行的数据
      tail:默认查看文件后10行
        /tail -n 5 file: 显示file后5行的数据
      rev:使文件左右颠倒

    *建
      mkdir:创建一个目录
        /mkdir a b c :创建同级目录
        /mkdir -p aa/bb/cc: 递归创建目录
      touch:修改文件时间戳,或者新建一个不存在的文件
        /-a 更改存取时间
        /m 更改变动时间
        /-t 使用指定的日期时间 
    *删
      cp:复制文件
        /cp -r:复制目录 
        /bin/cp -f: 复制文件并覆盖已有文件(写命令的绝对路径/bin/) 
        /cp /ect/passwd .:将其他文件复制到当前目录 
        /-n :不要覆盖已存在的文件
        /-f: force如果目标文件无法打开则将其移除并重试
        /-i: 覆盖前询问
        /-R/r:复制目录及目录内的所有项目
      mv:移动文件
        /-b :若需覆盖文件,则覆盖前先行备份。 
        /-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
        /-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
        /-t : 选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后
        /-u :若目标文件已经存在,且 source 比较新,才会更新(update)
        /mv * ../:移动当前文件夹下的所有文件到上一级目录
      rm:删除文件
        /-f, --force 忽略不存在的文件,从不给出提示。
        /-i, --interactive 进行交互式删除
        /-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
        /-v, --verbose 详细显示进行的步骤
        --help 显示此帮助信息并退出
        --version 输出版本信息并退出、
      rmdir:删除目录
        /-p :当子目录被删除后使它也成为空目录的话,则顺便一并删除
        /-v, --verbose 显示指令执行过程

    *改

       vim :修改文件

      模式: 默认进来是一般模式、i 编辑模式、esc 退出编辑 、shift+: 底行模式
      参数: w: write/q:quit/! force
      编辑模式: 
        /a:光标之后插入内容
        /A:光标最后插入内容
        /o:当前光标下新行插入内容
        /O:当前光标上新行插入内容
        /x:向后删除
        /X:向前删除
        /u:撤销当前操作
        /U:撤销所有操作
        /shift+D :删除光标之后的字符

      一般模式:
        /^:跳到行首
        /$:跳到行尾
        /ndd:删除n行,从光标起
        /nyy:复制n行
        /p :粘贴 
        /gg:文件首行
        /G :文件尾行
        /g :全局替换 1,$s/root/ROOT/g 1,$s#root#ROOT#g 
        /1, $s#/#\/#g: 脱意:,去掉特殊符号的意思
        /: 查找字符, n: 查找下一个 N:查找上一个
        /dw:删除词语

      底行模式:
        set number: 显示行号
        set nonu: 不显示行号
        r file: 合并文件

    三.inode 详解

    1.inode 解析:

    存储文件元信息(文件创建者,创建日期,大小等)的区域叫做inode即 索引节点。

    2.inode 内容:
    文件字节数、拥有者UserID,GroupID,读写执行权限,时间戳,链接数,block位置
    3.inode 大小
    inode 也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成连个区域, 一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode节点的大小,一般是128 字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb 或2kb 就设置一个inode, 假定在一块1GB的硬盘中,每个inode节点的大小为128字节, 每1KB就设置一个inode,那么inode table 的大小就会达到128MB, 占整个硬盘的12.8%
     
    查看每个硬盘分区的inode总数和已经使用的数量,可以使用df 命令;
    df -i 
    查看每个inode节点的大小,可以用如下命令
    sudo dumpe2fs -h /dev/hda |grep "Inode size"
    (由于每个文件都必须有一个inode,因此有可能发生inode 已经用光,但是应胖还未存满的情况, 这时,就无法再硬盘上创建为新文件。)

    4.inode号码

    每个inode 都有一个号码,操作系统用inode号码来识别不同的文件。

    Unix、Linux系统内部都不使用文件名,而通过inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的名称或绰号。 表面上,用户通过文件名打开文件。实际上,系统内部这个过程分为三步:首先,系统找到这个文件名对应的inode号码, 其次,通过inode号码,获取inode信息, 最后,根据inode信息,找到文件数据所在的block,读取数据。

    5.目录文件
    Unlx/Linux 系统中,目录也是一种文件。打开目录,就是打开目录文件。
    目录文件的结构非常简单,就是一系列目录项的列表,每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码
    6.硬链接
    一般情况下,文件名和inode号码是一一对应的关系,每个inode号码对应一个文件名。 但是,Unix、Linux 系统允许对个文件名指向同一个inode号码,这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。这种情况被称为“硬链接”
    任何一个目录的‘硬链接’总数总是等于2加上它的子目录总数。
    7.软链接
    文件A和文件B的inode号码不同,但是文件A的内容是文件B的路径,读取文件A时,系统工会自动将访问者导向文件B,因此,无论打开哪一个文件,最后读取的都是文件B,这时,文件A就称为文件B的软链接 或者符号链接。
    这意味着,文件A依赖文件B存在,如果删除文件B,打开文件A报错,没有相关文件或目录。 这时软硬链接的区别, 文件A指向文件B的文件名,而不是文件B的inode号码。 文件B的inode 链接数不会发生改变。
    8.inode 的特殊作用
    *有时文件名包含特殊字符,无法正常删除,这时,删除inode节点,就能祈祷删除文件的作用。
    *移动文件或重命名文件,只是改变文件名,不改变inode号码
    *打开文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。 因此,一般系统无法从inode号码得知文件名。
    9. 实际问题
    在一台配置较低的Linux服务器(内存,硬盘比较小)的/data 分区内创建文件时,系统提示磁盘空间不足,用df -h 命令查看一下磁盘使用情况, 发现/data 分区只使用66% , 还有12G的剩余空间。  之后df -i查看 /data 分区的索引节点,发现已经用满了。导致系统无法创建新目录和文件。
    查找原因: /data/cache 目录中存在数量非常多的小字节缓存文件, 占用的blcok不多, 但是占用了大量的inode空间。
    解决方案: 1.删除/data/cache 目录中的部分文件,释放/data分区的一部分inode
               2.用软链接将空闲分区/opt 中的newcache 目录链接到/data/cache ,使用/opt分区的inode来缓解 /data 分区inode不足的问题
     ln -s /opt/newcache /data/cache
     

    四、特殊权限


     

     1.SUID : Set User ID (find / -perm -04000 -type f -ls查找设置SUID的程序)
        作用:临时赋予用户二进制文档的拥有者的权限(主要用于让普通用户可以使用某些特殊命令)
        语法1:chmod u+s file(增加s权限)
        语法2:chmod u-s file(减去s权限)
        使用限制与环境:
          1、仅对于二进制文件有效;

          2、执行者必须对文件拥有x权限(否则即使设置了SUID,由于你对文件根本无法执行SUID此时也无效,此时权限位显示S);

          3、权限只是在执行过程中拥有。

          4、执行者必须对文件拥有x权限(否则即使设置了SUID,由于你对文件根本无法执行SUID此时也无效,此时权限位显示S);

          PS:例如passwd命令,路径/usr/bin/passwd,权限为"-rwsr-xr-x"。(passwd命令会修改"/etc/shadow")
          PS:SUID只可用于二进制文件,不可用于shell script文件。

    2.SGID : Set Group ID:继承上一级目录的所属组权限
      对于文件
        作用:临时赋予用户二进制文档的拥有组的权限(多用于让普通用户可以使用某些特殊命令,和suid类似)
        语法1:chmod g+s file(增加s权限)
        语法2:chmod g-s file(减去s权限)
        使用限制与环境:
          1、仅对于二进制文件有效;
          2、执行者必须对文件拥有x权限(否则根本无法执行文件,更别谈SGID赋予权限,此时权限位显示S);
          3、权限只是在执行过程中拥有。     

          4、执行者必须对文件拥有x权限(否则根本无法执行文件,更别谈SGID赋予权限,此时权限位显示S);

          PS:例如locate命令,路径/usr/bin/locate,权限为"rwx--s--x"。
          ( locate命令会读取"/var/lib/mlocate/mlocate.db")
      对于目录
        作用:临时将用户的effective group修改成该目录的的群组
        语法1:chmod g+s dir(增加s权限)
        语法2:chmod g-s dir(减去s权限)
        使用限制与环境:      

        1、文件的所属组是用户的主组,如果在设置了SGID目录下建立文件,则文件的所属组是继承目录的属组,并且新建立的目录也继承g+s权限
        2、若用户对此目录拥有w权限,由于effective group被修改成该目录的group,所以用户在此目录下创建任何文件,属组该目录的用户组。
        3、在group位的x显示为S或s,s代表包含了x权限,S代表未包含x权、
        4、使用者必须对该目录拥有x权限(否则无法进入,更别谈SUID赋予权限,此时权限位显示S);

    3.SBIT Sticky Bit, 只对目录有效,对文件无效,防止删除其他用户的资料
      作用:限制目录下不同用户之间对于其他用户文档或目录的编辑权限。
      语法1:chmod o+t dir(增加t权限)
      语法2:chmod o-t dir(减去t权限)
      使用限制与环境
        1、只能针对目录;
        2、必须有x和w权限(否则无法进入和编辑,更不用谈sbit权限,此时权限位显示T);
        3、用户自身创建的文档和目录,只有自己和root可以编辑(重命名、修改内容、复制、删除等)

          4、必须有x和w权限(否则无法进入和编辑,更不用谈sbit权限,此时权限位显示T);

    赋予权限

    chmod 4777 //是设sid 
    chmod 2777 //是设置gid 
    chmod 1777 //是设sticky-- t 该位可以理解为防删除位. 一个文件是否可以被>某用户删除,主要取决于
            该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不 
            能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则 
            可以对文件使用sticky bit位

     

    0: 不设置特殊权限 
    1: 只设置sticky 
    2 : 只设置SGID 
    3: 只设置SGID和sticky 
    4 : 只设置SUID 
    5 : 只设置SUID和sticky 
    6 : 只设置SUID和SGID 
    7 : 设置3种权限

     

     

     

    4.chmod
      作用:修改文件权限(= 赋值不管存在与否, + 增加权限)
      语法1:chmod u=rwx,g=r--,o=r--(ugo=r) filename
      语法2:chmod 744 filename
      语法3:chmod u+x filename

      chmod go+x install.log
      chmod go=rw

    5.chown
      作用:修改文件属主、属组
      语法:chown user:group filename
      PS:还可以单独修改属主或属组,命令语法为chown user filename和chown :group filename

    6.umask 参考:http://blog.itpub.net/7318139/viewspace-920215/
      作用:通过设置umask值,来控制新建目录文件及普通文件的初始权限(指定在建立文件时预设的权限掩码)
      语法:umask=022(可自定义) 
      原理:目录文件的默认完整权限是777(rwxrwxrwx),减掉umask的022(----w--w-),所以新建目录文件权限为(rwxr-xr-x)755;
      普通文件的默认完整权限是666(rw-rw-rw-),减掉umask的022(----w--w-),所以新建目录文件权限为(rw-r--r--)644。
      (对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,  这样针对目录来 说,umask中各个数字最大可以到7)
      一个文件是否可以被删除取决于上级目录权限

    7.rwx

     

    其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限,如果是0则没有相应权限
    第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于三组rwx位
    11 10 9 8 7 6 5 4 3 2 1 0
    S G T r w x r w x r w x

    第9位表示文件类型,可以为p、d、l、s、c、b和-:
    p表示命名管道文件 -pipe 
    d表示目录文件 -directory
    l表示符号连接文件 -link
    -表示普通文件 -
    s表示socket文件 -socket
    c表示字符设备文件 -Character device
    b表示块设备文件 -block

    第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其他用户的权限,其形式为rwx:
    (以上的其他用户,不包括root这个super user。)
    r表示可读,可以读出文件的内容 --数字4表示
    w表示可写,可以修改文件的内容 --数字2表示
    x表示可执行,可运行这个程序 --数字1表示
    没有权限的位置用-表示


    五、查询文件等

    1.输入输出重定向
      ls -l /dev/stdin -> /proc/self/fd/0
      标准输入 设备:键盘 标记:0 
      ls -l /dev/stdout -> /proc/self/fd/1
      标准输出 设备:屏幕 标记:1
      ls -l /dev/stderr -> /proc/self/fd/2
      错误输出 设备:屏幕 标记:2

      ls /etc/passwd /etc/passwd1 1>1.log 2>2.log
      将正确输出1 写入1.log ,将错误输出写入2.log
      ls /etc/passwd /etc/passwd1 &>all.log
      将正确输出和错误输出一同写入all.log
      ls /etc/passwd /etc/passwd1 1>lei.log 2>&1
      将正确输出和错误输出一同写入lei.log
      ls /etc/passwd /etc/passwd1 /dev/null 2>&1
      系统的黑洞:不占用磁盘空间

      dd if=/dev/zero of=aaa.log bs=1 count=1M
      零发射器,将1M数据写入文件

      echo "aaa" > aaa.log
      将字符写入文件
      echo "bbb" >>aaa.log
      将字符追加写入文件

      cat < aaa.log
      将文件的内容作为cat 的输入

     | 管道妙用
      将上一个命令的标准输出,传递给下一个命令做标准输入
      cat /etc/passwd | head -n 3 | cut -d: -f 1,3,7 |sort -rt: -k 2 |tr [a-z] [A-Z] 

     --通配符
      *:匹配任意长度的任意字符
      ?:匹配任意一个字符
      []:任意属于字符组的字符
      {}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
      >>:附加到指定文件的结尾
      >:输出重定向
      <:输入重定向
      |:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
      ||:逻辑或
      &&:逻辑与
      &:在后台执行


    2.wc: Word Count
     作用:计算文件的单词数,行数,字符数,并将统计结果显示输出 
     参数:-c 统计字节数。
      -l 统计行数。
      -m 统计字符数。这个标志不能与 -c 标志一起使用。
      -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
      -L 打印最长行的长度。
      -help 显示帮助信息
      --version 显示版本信息
     语法:wc fileNM 
      7 8 70 test.txt
      行数 单词数 字节数 文件名

    3.grep :http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html
     作用:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活
     参数:-a --text #不要忽略二进制的数据。
      -c --count #计算符合样式的列数。
      -i --ignore-case #忽略字符大小写的差别。 
      -v --revert-match #显示不包含匹配文本的所有行。
      -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。

     规则表达式:^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
      $ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
      . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 
      * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 
      .* #一起用代表任意字符。 
      [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 
      [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 
      (..) #标记匹配字符,如'(love)',love被标记为1。 
      < #锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行。 
      > #锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。 
      x{m} #重复字符x,m次,如:'0{5}'匹配包含5个o的行。 
      x{m,} #重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。 
      x{m,n} #重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。 
      w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 
      W #w的反置形式,匹配一个或多个非单词字符,如点号句号等。 
       #单词锁定符,如: 'grep'只匹配grep。
     语法: grep '^string' file
      grep 'string$' file
      grep -c 'string' file


    4. tr 
     作用:标准输入中通过替换或删除操作进行字符转换
     语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
     参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
      -d 删除字符串1中所有输入字符。
      -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
      input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
     字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
      [a-z] a-z内的字符组成的字符串。
      [A-Z] A-Z内的字符组成的字符串。
      [0-9] 数字串。
      octal 一个三位的八进制数,对应有效的ASCII字符。
      [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
     tr中特定控制字符的不同表达方式
      速记符含义八进制方式
      a Ctrl-G 铃声07
       Ctrl-H 退格符10
      f Ctrl-L 走行换页14
       Ctrl-J 新行12
       Ctrl-M 回车15
       Ctrl-I tab键11
      v Ctrl-X 30
     语法:cat file | tr "abc" "xyz" > new_file
      将文件中的abc 替换为 xyz
      cat file | tr -d "Snail" > new_file
      凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
      cat file | tr -d " " > new_file
      删除文件file中出现的换行' '、制表' '字符
      cat file | tr -d " " > new_file
      删除文件file中出现的换行' '、制表' '字符
      cat file | tr -s [a-zA-Z] > new_file
      删除“连续着的”重复字母,只保留第一个
      cat file | tr -s " " > new_file
      删除空行

    5.sort 
     作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序
     参数: -b 忽略每行前面开始出的空格字符。
      -c 检查文件是否已经按照顺序排序。
      -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
      -f 排序时,将小写字母视为大写字母。
      -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
      -k 选择以哪个区间进行排序。
      -m 将几个排序好的文件进行合并。
      -M 将前面3个字母依照月份的缩写进行排序。
      -n 依照数值的大小排序。
      -o<输出文件> 将排序后的结果存入指定的文件。
      -r 以相反的顺序来排序。
      -t<分隔字符> 指定排序时所用的栏位分隔字符。
      -u 去除重复行

      +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
     语法:sort -n -t 'ch' -k num file
      ch 字符的第num 段按照数值排序

    6.cut 
     作用:按列提取文件
     参数: -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
      -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
      -c :以字符为单位进行分割。
      -d :自定义分隔符,默认为制表符。
      -f :与-d一起使用,指定显示哪个区域。
      -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除
     语法: cut -b 8,3-5
      3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦 
      cut -b -3
      -3表示从第一个字节到第三个字节
      cut -b 3-
      3-表示从第三个字节到行尾
      cut -b -3,3-
      输出整行,不会出现连续两个重叠的
      cut -c 
      -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,

      cut -d : -f 1,3-5

      提取按照:分割的第一列,第三列到第五列
      sed -n l file
      空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母

    7.which 
      作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果 
      参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
         -p  与-n参数相同,但此处的包括了文件的路径。
         -w  指定输出时栏位的宽度。
           -V  显示版本信息

      语法: which 命令

    8.whereis
      作用:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 
      参数:-b 定位可执行文件。 
          -m 定位帮助文件。 
         -s 定位源代码文件。 
          -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
          -B 指定搜索可执行文件的路径。 
          -M 指定搜索帮助文件的路径。 
          -S 指定搜索源代码文件的路径。

    9.locate :http://www.cnblogs.com/peida/archive/2012/11/12/2765750.html
      作用:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,是最近才建立或刚更名的数据,可能会找不到,执行updatedb则会更新数据库。
      参数:-e 将排除在寻找的范围之外。 
        -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。     实际搜寻硬盘查询文件名称
        -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。 
        -q 安静模式,不会显示任何错误讯息。 
        -n 至多显示 n个输出。 
        -r 使用正规运算式 做寻找的条件。 
        -o 指定资料库存的名称。 
        -d 指定资料库的路径 
        -h 显示辅助讯息 
        -V 显示程式的版本讯息 


    10.find
      作用:用于在文件树种查找文件,并作出相应的处理 (硬盘)
      格式:find pathname -options [-print -exec -ok ...]
      格式参数:pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 
        -print: find命令将匹配的文件输出到标准输出。 
        -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格。 
        -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 
      命令选项:-name 按照文件名查找文件。 
        -perm 按照文件权限来查找文件。 
        -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
        -user 按照文件属主来查找文件。 
        -group 按照文件所属的组来查找文件。 
        -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,
        -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 
        -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 
        -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 
        -type 查找某一类型的文件,诸如: 
          b - 块设备文件。 
          d - 目录。 
          c - 字符设备文件。
          p - 管道文件。 
          l - 符号链接文件。

          f - 普通文件。 
        -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 
        -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
        -mount:在查找文件时不跨越文件系统mount点。 
        -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 
        -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 
        另外,下面三个的区别: 
        -amin n 查找系统中最后N分钟访问的文件 
        -atime n 查找系统中最后n*24小时访问的文件 
        -cmin n 查找系统中最后N分钟被改变文件状态的文件 
        -ctime n 查找系统中最后n*24小时被改变文件状态的文件
        -mmin n 查找系统中最后N分钟被改变文件数据的文件 
        -mtime n 查找系统中最后n*24小时被改变文件数据的文件
      语法   :find -atime -2 :查找指定时间内修改过的文件
          find -name "*.log" :根据关键字查找 
          find /opt/soft/test/ -perm 777:按照目录或文件的权限来查找文件
          find -type f -name "*.log":按类型查找 
          find -type d | sort:查找当前所有目录并排序
          find -size +1M -print:按大小查找文件并输出
          find -name "*.log" |xargs rm -rf: 删除查找文件 
          find -name "*.log" -exec ls -l {}; 以长格式显示查找文件 
          find -name "*.log" -exec rm -f {}; 删除查找文件
          find -name "*.log" -ok rm -f {}; 交互删除文件

    六、ln 命令

      作用:它的功能是为某一个文件在另外一个位置建立一个同步的链接
      参数:必要参数: 
        -b 删除,覆盖以前建立的链接 
        -d 允许超级用户制作目录的硬链接 
        -f 强制执行 
        -i 交互模式,文件存在则提示用户是否覆盖 
        -n 把符号链接视为一般目录 
        -s 软链接(符号链接) 
        -v 显示详细的处理过程 
      选择参数: 
        -S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
        -V “-V<备份方式>”或“--version-control=<备份方式>” 

        辨析:

     

    硬链接和软连接 
      硬链接:ln file1 file2 : 文件内容一致,inode一致,同时引用了一个inode编号 
      软连接:ln -s file1 file2 : 文件内容一致,inode不一致,记录的是原始文件的路径名称 
      创建连接: 硬链接不产生新的inode, 软连接生成新inode
      删除源文件: 硬链接无影响, 软连接同时删除。
      修改源文件: 连接文件同时修改 。 
      创建目录: 硬链接无法指向目录, 软连接可以指向目录。
      分区创建: 硬链接无法跨分区设备连接,软连接可以跨分区设备连接。

      功能区别:Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个    档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文    件系统。
      软链接: 
        1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式 
        2.软链接可以 跨文件系统 ,硬链接不可以 
        3.软链接可以对一个不存在的文件名进行链接 
        4.软链接可以对目录进行链接 
      硬链接: 
        1.硬链接,以文件副本的形式存在。但不占用实际空间。 
        2.不允许给目录创建硬链接 
        3.硬链接只有在同一个文件系统中才能创建 

      注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化; 
      第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文 件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
         ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

  • 相关阅读:
    JavaWeb--HttpSession案例
    codeforces B. Balls Game 解题报告
    hdu 1711 Number Sequence 解题报告
    codeforces B. Online Meeting 解题报告
    ZOJ 3706 Break Standard Weight 解题报告
    codeforces C. Magic Formulas 解题报告
    codeforces B. Sereja and Mirroring 解题报告
    zoj 1109 Language of FatMouse 解题报告
    hdu 1361.Parencodings 解题报告
    hdu 1004 Let the Balloon Rise 解题报告
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/4354418.html
Copyright © 2020-2023  润新知