美文网首页LINUX学生会linux学习
Linux命令总结文件命令篇第一章

Linux命令总结文件命令篇第一章

作者: 数据革命 | 来源:发表于2017-06-10 23:23 被阅读28次

    命令总结之文件命令篇

    • 此命令总结会分几篇
    • 文件命令篇
    • 系统命令篇
    • 组权限命令篇
    • 特殊命令篇
    • 更新时间2017年06月10日
      -由于资料过多可能会分很多篇章

    文件命令

    cd

    • cd 用来切换路径
    [root@localhost ~]# cd /home/    #切换到home目录
    
    [root@localhost home]# cd -      #返回切换到home前的目录
    
    [root@localhost ~]# cd ../       #切换到上一级目录
    
    [root@localhost /]# cd ~         #切换当前用户的home目录
    
    [root@localhost ~]# cd /      # 系统根目录 
    
    [root@localhost ~]# cd      # root根目录
    
    [root@localhost ~]# cd ../../     #返回上上一层目录 
    

    ls

    • ls查看目录或当前目录或文件属性等详细信息

    用法:ls [选项]... [文件]...

    [root@rudder ~]# ls
    bak  tank
    
    [root@rudder ~]# ls -l
    总用量 8
    drwxr-xr-x 2 root root 4096  4月 27 12:34 bak
    drwxr-xr-x 4 tnak tnak 4096  4月 28 14:25 tank
    
    [root@localhost ~]#  ls /bin       #查看bin目录下的文件
    arch                  dnsdomainname  kbd_mode         pgawk    tar
    awk                   doexec         keyctl           ping     taskset
    basename              domainname     kill             ping6    touch
    bash                  dumpkeys       link             ps       tracepath
    cat                   echo           ln               pwd      tracepath6
    
    [root@localhost ~]# ls -d */    #列出当前所有目录
    block/  bus/   cpu/   fd/         input/   net/  raw/  snd/
    
    [root@localhost ~]#  ll -Z -d /var/www/html/ 
    
    drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
    
    [root@localhost ~]# ll -Z install.log 
    
    -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log
    
    [root@localhost ~]#  df -a    #显示所有文件系统的磁盘使用情况
    
    [root@localhost ~]#   ls -l     #显示当前目录内容的长列表
    总用量 12
    -rwxrwxrwx 1 apache apache 4674 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 apache apache  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#   ls -lh    #不以字节方式显示文件大小
    总用量 12K
    -rwxrwxrwx 1 apache apache 4.6K 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 apache apache  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#   ls -ihS   #显示文件大小之后,从大到小排序
    264672 app.config.php  264673 db.config.php
    
    [root@localhost ~]#   ls -l --block-size=M    #使用MB作为单位,文件大小
    总用量 1M
    -rwxrwxrwx 1 apache apache 1M 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 apache apache 1M 8月  23 14:26 db.config.php
    
    [root@localhost ~]#   ls -a     #显示隐藏文件
    .  ..  app.config.php  db.config.php
    
    [root@localhost ~]#  ls -d */     #只列出目录
    admin/  etc/  lib/  resource/  server/  tools/  tpls/
    
    [root@localhost ~]#   ls -g    #不打印所有者信息
    总用量 12
    -rwxrwxrwx 1 apache 4674 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 apache  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#  ls -lG   #不打印组信息
    总用量 12
    -rwxrwxrwx 1 apache 4674 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 apache  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#  ls -n    #打印UID和GID 
    总用量 12
    -rwxrwxrwx 1 48 48 4674 8月  23 14:21 app.config.php
    -rwxrwxrwx 1 48 48  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#   ls -li   #打印每个文件的索引号 
    总用量 12
    264672 -rwxrwxrwx 1 apache apache 4674 8月  23 14:21 app.config.php
    264673 -rwxrwxrwx 1 apache apache  442 8月  23 14:26 db.config.php
    
    [root@localhost ~]#  ls -p   #目录增加 / (斜线) 
    admin/  etc/  lib/  resource/  server/  tools/  tpls/
    
    [root@localhost ~]#  ls -r     #按时间倒排序
    db.config.php  app.config.php
    
    [root@localhost ~]#  ls -R    #递归列出子目录 
    .:
      phpass  phpthumb  
    
    ./phpass:
    PasswordHash.php
    
    ./phpthumb:
    GdThumb.inc.php  PhpThumb.inc.php  README.md  ThumbBase.inc.php  ThumbLib.php  thumb_plugins
    
    ./phpthumb/thumb_plugins:
    gd_reflection.inc.php
    
    ./restfullyii:
    components  views
    
    [root@localhost ~]# ls -lx    #扩展名排序
    anaconda-ks.cfg       Desktop  Documents  Downloads
    initial-setup-ks.cfg  Music    Pictures   Public
    Templates             Videos   
    
    [root@localhost ~]# ls -lt  #按修改时间倒排序
    total 8
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Documents
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Music
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Pictures
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Public
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Videos
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Desktop
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Downloads
    drwxr-xr-x. 2 root root    6 Jun 10 03:37 Templates
    -rw-r--r--. 1 root root 1621 Jun 10 03:24 initial-setup-ks.cfg
    -rw-------. 1 root root 1590 Jun 10 01:54 anaconda-ks.cfg   
    

    dir

    • 用法:dir [选项]... [文件]
    [root@localhost ~]#dir
    bak  tank
    
    [root@localhost ~]# dir -l
    总用量 8
    drwxr-xr-x 2 root root 4096  4月 27 12:34 bak
    drwxr-xr-x 4 tnak tnak 4096  4月 28 14:25 tank
    

    touch

    • 用法:touch [选项]... 文件
    [root@localhost ~]# touch test.php           #将test.php的档案时间改为,当前时间
    
    [root@localhost ~]# touch -c -t 05061803 test.php     #将档案时间改为,5月6日18点3分
    
    [root@localhost ~]# touch -r abc.php test.php         #将test.php档案改成跟abc.php一样
    
    [root@localhost ~]# touch -d "2 days ago" test.php   #将test.php日期修改为2天以前
    

    cp

    用法:cp [选项]... [-T] 源文件 目标文件

    • 或:cp [选项]... 源文件... 目录
    • 或:cp [选项]... -t 目录 源文件...
    • 将源文件复制至目标文件,或将多个源文件复制至目标目录
    [root@localhost ~]# cp -p test.rb /home/test   #将test.rb copy到test目录,并且保留原文件的属性
    
    [root@localhost ~]# cp -r Dir/ /home/test      #将Dir目录copy到test目录下
    
    [root@localhost ~]#cp -fr Dir/* /home/test    #将Dir下面的所有文件强制copy到test目录下
    
    [root@localhost www]# cp test.rb{,.bak}          #备份test.rb,并在尾部加上.bak后缀
    
    [root@localhost ~]# cp -u -v file1 file2   #复制文件,只有源文件较目的文件的修改时间新时,才复制文件
    
    [root@localhost ~]# cp file1 file2    #将文件file1复制成文件file2
    
    [root@localhost ~]# cp -i file1 file2   #采用交互方式将文件file1复制成文件file2
    
    [root@localhost ~]# cp -f file1 file2    
    #将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式
    
    [root@localhost ~]# cp -R file1 file2    #将目录dir1复制成目录dir2
    
    [root@localhost ~]# cp -R file1 file2 file3 dir1 dir2   
    #同时将文件file1、file2、file3与目录dir1复制到dir2
    
    [root@localhost ~]# cp -p a.txt tmp/   #复制时保留文件属性
    
    [root@localhost ~]# cp -P  /var/tmp/a.txt  ./temp/    #复制时保留文件的目录结构
    
    [root@localhost ~]# cp -b a.txt tmp/    #复制时产生备份文件
    
    [root@localhost ~]# cp -b -V t   a.txt /tmp     #复制时产生备份文件,尾标 ~1~格式
    
    [root@localhost ~]# cp -b -S _bak a.txt /tmp    #指定备份文件尾标  
    

    mv

    用法:mv [选项]... [-T] 源文件 目标文件
     或:mv [选项]... 源文件... 目录
     或:mv [选项]... -t 目录 源文件...
    将源文件重命名为目标文件,或将源文件移动至指定目录

    [root@localhost ~]# mv abc abc.php  #将abc移动成abc.php
    
    [root@localhost ~]# mv test.php{,.sh}  #将test.php增加后辍
    
    [root@localhost ~]# mv -t ./database 1.sql    #将1.sql移动到database目录下
    
    [root@localhost ~]# mv aaa bbb  #将目录或者文件重命名,如果存在bbb目录,则是将aaa移到bbb目录下
    
    [root@localhost ~]# su root
    Password: 
    [root@localhost home]# mv home php
    [root@localhost home]# ls
    flitrue php
    

    rename

    rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式

    [root@localhost ~]# rename 's/\.sh/\.php/' *        #将当前目录下.sh后缀的文件,变成.php
    
    [root@localhost ~]#rename 's/$/\.bak/' /home/www/*.php     #给www目录下的.php加上bak后缀
    
    [root@localhost ~]# rename 's/^/bak_/' *.bin     #给当前目录下的.bin后缀文件加上bak_前缀
    
    [root@localhost ~]# rename 's/\.bin$//' *       #批量删除当前目录下所有文件的.bin 后缀
    
    [root@localhost ~]# rename 's/A-Z/a-z/' *       #修改当前目录所有文件名为小写
    

    mkdir

    用法:mkdir [选项]... 目录...
    若指定目录不存在则创建目录。

    [root@localhost ~]# mkdir aaa   #创建目录
    
    [root@localhost ~]# mkdir -m a=rw bbb   #创建指定属性的目录
    
    [root@localhost ~]# mkdir -p 111/abc   #创建目录,父目录存在,建之
    
    [root@localhost ~]# mkdir -v test1    #创建目录,并显示详细信息
    mkdir: 已创建目录 "test1"
    
    [root@localhost ~]# mkdir -p /ms/{sales,hr,web}    #创建一个名为/ms的目录,其中有sales、hr、web的子目录 
    

    rmdir

    用法:rmdir [选项]... 目录...
    删除指定的空目录。

    [root@localhost ~]# rmdir test            #删除test目录,注意必须是空目录
    
    [root@localhost ~]# rmdir -p a/b/c        #删除指定目录及其上级文件夹
    

    rm

    用法:rm [选项]... 文件...
    删除 (unlink) 文件。

    [root@localhost ~]# rm test.php        #删除文件需要确认
    
    [root@localhost ~]# rm -f test.php     #强制删除文件不确认
    
    [root@localhost ~]# rm -rfv ./test     #强制删除当前的test目录,并显示删除的详细过程
    
    [root@localhost ~]# rm -rf expect-5.43   #参数表示递归强制删除非空文件夹
    

    tree

    • 显示目录树进程 使用以前需要输入 yum install tree 来下载
    [root@localhost ~]# tree -L 2     #-L n 只显示 n 层目录 (n 为数字)
    .
    ├── anaconda-ks.cfg
    ├── Desktop
    ├── Documents
    ├── Downloads
    ├── initial-setup-ks.cfg
    ├── Music
    ├── Pictures
    ├── Public
    ├── Templates
    └── Videos
    
    [root@localhost ~]# tree -t     #-t 用文件和目录的更改时间排序
    .
    ├── Desktop
    ├── Documents
    ├── Downloads
    ├── Music
    ├── Pictures
    ├── Public
    ├── Templates
    ├── Videos
    ├── initial-setup-ks.cfg
    └── anaconda-ks.cfg
    
    [root@localhost ~]# tree -r      #-r 以相反次序排列
    .
    ├── Videos
    ├── Templates
    ├── Public
    ├── Pictures
    ├── Music
    ├── initial-setup-ks.cfg
    ├── Downloads
    ├── Documents
    ├── Desktop
    └── anaconda-ks.cfg
    
    
     #-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号
    [root@localhost ~]# tree -F
    .
    ├── anaconda-ks.cfg
    ├── Desktop/
    ├── Documents/
    ├── Downloads/
    ├── initial-setup-ks.cfg
    ├── Music/
    ├── Pictures/
    ├── Public/
    ├── Templates/
    └── Videos/
    
    
    
    [root@localhost ~]# tree -f       #在每个文件或目录之前,显示完整的相对路径名称
    .
    ├── ./anaconda-ks.cfg
    ├── ./Desktop
    ├── ./Documents
    ├── ./Downloads
    ├── ./initial-setup-ks.cfg
    ├── ./Music
    ├── ./Pictures
    ├── ./Public
    ├── ./Templates
    └── ./Videos
    
    [root@localhost ~]# tree -d     #只显示目录
    .
    ├── Desktop
    ├── Documents
    ├── Downloads
    ├── Music
    ├── Pictures
    ├── Public
    ├── Templates
    └── Videos
    
    [root@localhost ~]# tree -a       #显示所有文件和目录  (由于目录太长没有显示)
    

    touch

    用法:touch [选项]... 文件...
    将每个文件的访问时间和修改时间改为当前时间

    [root@localhost ~]#  touch test.php       #将test.php的档案时间改为,当前时间,文件不存在建之
    
    [root@localhost ~]#  touch -c -t 05061803 test.php     #将档案时间改为,5月6日18点3分
    
    [root@localhost ~]# touch -r abc.php test.php         #将test.php档案改成跟abc.php一样
    
    [root@localhost ~]#  touch -d "2 days ago" test.php   #将test.php日期修改为2天以前
    

    nano

    用法: nano [选项] [[+行,列] 文件名]..

    [root@localhost ~]# nano test.php   #编辑文件
    

    cat

    用法:cat [选项] [文件]...
    将[文件]或标准输入组合输出到标准输出

    [root@localhost ~]# cat test        #普通输出
    1111111111
    
    
    2222222222
    
    3333333333
    
    [root@localhost ~]# cat -n test     #开头显示行号
         1  1111111111
         2
         3
         4  2222222222
         5
         6  3333333333
    
    [root@localhost ~]# cat -E test     #以$结束
    1111111111$
    $
    $
    2222222222$
    $
    3333333333$
    
    [root@localhost ~]# cat -s test     #超过二个空行,合并成一个
    1111111111
    
    2222222222
    
    3333333333
    
    [root@localhost ~]# cat -ns test   #去空行,加行号
         1  1111111111
         2
         3  2222222222
         4
         5  3333333333
    
    [root@localhost ~]# cat x* > google_bak.tar.gz   #合并文件
    
    [root@localhost ~]# cat > aa  #从键盘录入内容到文件,回车是保存,退出Ctrl+z
    4234234
    234234
    ^Z
    [4]+  Stopped                 cat > aa
    
    [root@localhost ~]#  cat file1 file2 > file  #合并二个文件为一个
    
    [root@localhost ~]#  cat test.tar.gz_?? > test.tar.gz   #可以用cat命令将被切割的多个压缩包合并成一个
    
    [root@localhost ~]#  tar -xvzf test.tar.gz            #再用tar命令解压
    

    tac

    用法:tac [选项]... [文件]...
    将每个指定文件按行倒置并写到标准输出。
    如果不指定文件,或文件为"-",则从标准输入读取数据

    [root@localhost ~]# cat test
    1234
    abcd
    
    [root@localhost ~]# rev test
    4321
    dcba
    
    [root@localhost ~]#  tac test
    abcd
    1234
    

    pwd

    pwd 显示当前目录

    [root@localhost ~]#  pwd  #显示当前目录
    /home
    
    [root@localhost ~]#  pwd -P   #目录是软连接,显示实际物理地址
    /var/spool/mail
    
    [root@localhost ~]#  pwd -L   #-L显示,逻辑地址
    /var/mail
    

    ln

    ln -在文件之间建立连接

    [root@localhost ~]#  ln -s /home/zhangy/heartbeat ./   #在当前目录下,建立heartbeat的软连接
    
    [root@localhost ~]#  ln -s /home/zhangy/test ./        #建立目录的软件接
    
    [root@localhost ~]# ln /home/zhangy/tee.txt ./        #建立硬连接
    
    [root@localhost ~]# ll       ll是ls的别名相当于等同于  (ls -l --color=tty)
    lrwxrwxrwx 1 root root 22 05-11 11:04 heartbeat -> /home/zhangy/heartbeat       #文件软件接
    -rw-r--r-- 2 root root  0 2010-11-24 tee.txt                                     #文件硬连接
    
    
    lrwxrwxrwx 1 root root 17 05-11 11:04 test -> /home/zhangy/test                 #目录软件接```
    

    nl

    nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
    1.命令格式:

    nl [选项]... [文件]...

    
    
    

    [root@localhost ~]#nl log2012.log #用 nl 列出 log2012.log 的内容

    
    

    [root@localhost ~]#nl -b a log2012.log #用 nl 列出 log2012.log 的内容,空本行也加上行号
    1 2012-01
    2 2012-02
    3
    4

    
    

    [root@localhost ~]#nl -b a -n rz log2014.log #让行号前面自动补上0,统一输出格式
    000001 2014-01
    000002 2014-02
    000003 2014-03
    000004 2014-04
    000005 2014-05
    000006 2014-06

    
    
    ###dd
    >dd - 转换和拷贝文件
    
    

    [root@localhost ~]# dd if=/dev/hdx of=/dev/hdy #将本地的/dev/hdx整盘备份到/dev/hdy

    
    

    [root@localhost ~]# dd if=/dev/hdx of=/path/to/image #将/dev/hdx全盘数据备份到指定路径的image文件

    
    

    [root@localhost ~]# dd if=/dev/hdx | gzip >/path/to/image.gz #备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

    
    

    [root@localhost ~]# dd if=/path/to/image of=/dev/hdx # 将备份文件恢复到指定盘

    
    

    [root@localhost ~]# gzip -dc /path/to/image.gz | dd of=/dev/hdx #将压缩的备份文件恢复到指定盘

    
    

    [root@localhost ~]# dd if=/dev/hdx of=/path/to/image count=1 bs=512 #备份磁盘开始的512Byte大小的MBR信息到指定文件

    
    

    [root@localhost ~]# dd if=/dev/cdrom of=/root/cd.iso #拷贝光盘数据到root文件夹下,并保存为cd.iso文件

    
    

    1.将本地的/dev/hdb整盘备份到/dev/hdd
    [root@localhost ~]# dd if=/dev/hdb of=/dev/hdd

    2.将/dev/hdb全盘数据备份到指定路径的image文件
    [root@localhost ~]# dd if=/dev/hdb of=/root/image

    3.将备份文件恢复到指定盘
    [root@localhost ~]# dd if=/root/image of=/dev/hdb

    4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
    [root@localhost ~]# dd if=/dev/hdb | gzip > /root/image.gz

    5.将压缩的备份文件恢复到指定盘
    [root@localhost ~]# gzip -dc /root/image.gz | dd of=/dev/hdb

    6.备份与恢复MBR
    备份磁盘开始的512个字节大小的MBR信息到指定文件:
    [root@localhost ~]# dd if=/dev/hda of=/root/image count=1 bs=512
    count=1指仅拷贝一个块;bs=512指块大小为512个字节。
    恢复:
    [root@localhost ~]# dd if=/root/image of=/dev/had
    将备份的MBR信息写到磁盘开始部分

    7.备份软盘
    [root@localhost ~]# dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)

    8.拷贝内存内容到硬盘
    [root@localhost ~]# dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)

    9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件
    [root@localhost ~]# dd if=/dev/cdrom(hdc) of=/root/cd.iso

    10.增加swap分区文件大小
    第一步:创建一个大小为256M的文件:
    [root@localhost ~]# dd if=/dev/zero of=/swapfile bs=1024 count=262144
    第二步:把这个文件变成swap文件:
    [root@localhost ~]# mkswap /swapfile
    第三步:启用这个swap文件:
    [root@localhost ~]# swapon /swapfile
    第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
    /swapfile swap swap default 0 0

    11.销毁磁盘数据
    [root@localhost ~]# dd if=/dev/urandom of=/dev/hda1
    注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

    12.测试硬盘的读写速度
    [root@localhost ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
    [root@localhost ~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null
    通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。

    13.确定硬盘的最佳块大小:
    [root@localhost ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
    [root@localhost ~]# dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
    [root@localhost ~]# dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
    [root@localhost ~]# dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
    通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

    14.修复硬盘:
    [root@localhost ~]# dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
    当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。
    当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。

    
    

    1、测试磁盘写能力

    [root@localhost ~]# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
    因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,
    IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

    2、测试磁盘读能力

    [root@localhost ~]# time dd if=/dev/sdb1 of=/dev/null bs=8k
    因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,
    所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

    3、测试同时读写能力

    [root@localhost ~]# time dd if=/dev/sdb1 of=/test1.dbf bs=8k
    这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb1是读,对/test1.dbf是写),
    假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力

    
    
    ###basename
    
    >用法:basename 名称 [后缀]
      或:basename 选项
    去掉前导的目录部分后打印“名称”。
    如果指定的话,还会去掉尾随的“后缀”
    
    

    [root@localhost ~]# basename /etc/php.ini
    php.ini

    
    

    [root@localhost ~]# basename /etc/nginx/
    nginx

    
    

    [root@localhost ~]# bashname include/stdio.h .h
    stdio

    
    ###dirname
    >显示指定路径除了文件名之外的路径前缀
    
    

    [root@localhost ~]# dirname /home/tank/test.bz2
    /home/tank

    
    ###head
    >用法:head [选项]... [文件]...
    将每个指定文件的头10 行显示到标准输出。
    如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
    如果不指定文件,或者文件为"-",则从标准输入读取数据
    
    

    [root@localhost ~]#head /etc/passwd #默认,显示开头前10行

    [root@localhost ~]#head -k /etc/passwd #显示开头前k行

    [root@localhost ~]# head -q -n k file1 file2 file3 #显示多文件开头前k行,并且不显示文件名的文件头

    [root@localhost ~]# head -n -k /etc/passwd #除最后k行外,显示剩余全部内容。

    [root@localhost ~]# head -n 5 /etc/passwd #显示前5行

    [root@localhost ~]# head -n -5 /etc/passwd #显示从0到倒数第5行

    [root@localhost ~]# head -c 100 /etc/passwd #显示前100字符

    [root@localhost ~]# head -c -100 /etc/passwd #显示从0到倒数第100字符

    
    ###tail
    
    >tail - 输出文件的末尾部分
    
    

    [root@localhost ~]#tail /etc/passwd #默认,显示最后10 行。

    
     
    
    

    [root@localhost ~]#tail -n 2 /etc/passwd #显示最后2行

    
    

    [root@localhost ~]#tail -q -n k file1 file2 file3 #显示多文件最后k行,并且不显示文件名的文件头

    
    

    [root@localhost ~]#tail -n +k /etc/passwd #从开头第k行处开始输出。

    
    

    [root@localhost ~]#tail -f /var/log/messages #参数-f使tail不停地去读最新的内容,因此有实时监视的效果,用Ctrl+c来终止

    
    

    [root@localhost ~]# tail -n+10 file.txt | head -1 #显示file.txt的第10行

    
    

    以cat 1.txt 为例
    [root@localhost ~]#cat 1.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    [root@localhost ~]#tail 1.txt
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@localhost ~]#tail -3 1.txt
    18
    19
    20
    [root@localhost ~]#tail -n 3 1.txt
    18
    19
    20
    [root@localhost ~]# tail --lines=3 1.txt
    18
    19
    20

    [root@localhost ~]# tail -n +14 1.txt
    14
    15
    16
    17
    18
    19
    20

    
    ###mknod
    >用法:mknod [选项]... 名称 类型 [主设备号 次设备号]
    创建指定类型和名称的特殊文件
    
    

    将其中的1,3这样的数字记录下来,这表示主设备号和次设备号(一般来说主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性——注意,在unix系统中是把设备也当作文件来对待的),在redhat 9下,ls加不加-L参数都无所谓,但是在Solaris下则一定要加上才可以显示

    [root@localhost ~]#ls -lL /dev/null
    crw-rw-rw- 1 root root 1, 3 8月 18 21:56 /dev/null

    [root@localhost ~]# mknod /dev/hda3 b 3 7 #创建一个区块

    [root@localhost ~]# ls -al /dev/hda3 #查看
    brw-r--r-- 1 root root 3, 7 8月 21 11:01 /dev/hda3

    
    ###rev
    
    >rev 显示最后一个字符显示到第一个字符
    
    

    [root@localhost ~]# cat test
    1234
    abcd

    
    

    [root@localhost ~]# rev test
    4321
    dcba

    
    

    [root@localhost ~]# tac test
    abcd
    1234

    
    ###file
    >确定文件类型
    
    

    [root@localhost ~]# file * #查看当前目录下的所有文件类型
    abc.sh: awk script, ASCII text
    abc.sh.bz2: bzip2 compressed data, block size = 900k
    ar_test: directory
    examples.desktop: UTF-8 Unicode text
    rec00001abc.sh.bz2: bzip2 compressed data, block size = 900k
    test: ASCII text
    test.bz2: bzip2 compressed data, block size = 900k

    
    

    [root@localhost ~]# file abc.sh #查看单个文件的文件类型
    abc.sh: awk script, ASCII text

    
    

    [root@localhost ~]# file -z test.bz2 #查看压缩文件的内部信息
    test.bz2: empty (bzip2 compressed data, block size = 900k)

    
    
    ###find
    - find 查找目录和文件
    
    find 路径 -命令参数 [输出形式]
    
    

    通过名字来查找
    [root@localhost ~]# find ~ -name memcached.pid -print #查找home目录下文件名为memcache.pid的文件
    /home/zhangy/memcached/memcached.pid

    [root@localhost ~]#find . -name "*.pid" -print #.代表当前目录,查找所有以pid结尾的文件
    ./memcached/memcached.pid
    ./.tencent/qq/95219454.pid

    [root@localhost ~]# find ~ -name "[0-9].pid" -print #查找以数字开头的所有pid文件,在这里要说[0-9]不能匹配23,它跟一般的语言类正则不太一样,shell里面的*可以代表一切字符(单个,多个都行),如果想匹配2345只能这样写[0-9][0-9][0-9][0-9]
    /home/zhangy/.tencent/qq/95219454.pid

    [root@localhost ~]#find /home/zhangy/.tencent/ -name "[0-9]*.pid" -print #在.tencent文件夹下面找pid文件
    /home/zhangy/.tencent/qq/95219454.pid

    
    

    通过文件权限来查找
    [root@localhost ~]# find ~ -perm 755 -print |more #~代表的是$home目录,查找权限为755的文件
    /home/zhangy/www/css2/c_textshadow.html
    /home/zhangy/www/css2/c_textautospace.html

    [root@localhost ~]#find . -perm 700 -name "u_*" -print |more #查找所有以产u_开头的,并且权限为700的文件
    ./css2/u_length_cm.html
    ./css2/u_length_px.html

    
    

    prune来忽略目录来查找
    [root@localhost ~]#find . -name "*.gz" -prune -o ( ! -name aaa ) -print #查找在前目录中,不在以aaa结尾的目录中的,不以gz结尾的文件
    .
    ./eaccelerator-0.9.5.3.tar
    ./fix-crash-in-excerpts.patch
    ./AddFeed_Widget_WordPress_Plugin.zip
    ./jQuery china-addthis plugin 1.07.rar

    
    

    根据文件类型来查找文件
    [root@localhost ~]#find . -type d -print #查找当前目录下面的目录
    .
    ./ddd

    [root@localhost ~]#find . ! -type d -print #找当前目录下面的非目录文件
    ./eaccelerator-0.9.5.3.tar
    ./haproxy-1.3.15.7.tar.gz
    ./fix-crash-in-excerpts.patch

    
    

    根据文件所属用户和用户组来找文件
    [root@localhost ~]#find . -nouser -print #查找当前目录中,没有归属的文件

    [root@localhost ~]#find /home/zhangy/download -user zhangy -group users -print #查找用户组为users,所属用户为zhangy的文件
    /home/zhangy/download
    /home/zhangy/download/eaccelerator-0.9.5.3.tar
    /home/zhangy/download/haproxy-1.3.15.7.tar.gz

    
    

    根文件大小来查找

    [root@localhost ~]#find /home/zhangy/download -size +1000000c -print #查找文件大小大于1000000字符的文件,注意+号表示大于
    /home/zhangy/download/eaccelerator-0.9.5.3.tar
    /home/zhangy/download/mmseg-0.7.3.tar.gz

    [root@localhost ~]#find /home/zhangy/download -size -10 -print #查找文件大小小于10块的文件,注意-号表示小于,一块等于512b
    /home/zhangy/download
    /home/zhangy/download/fix-crash-in-excerpts.patch
    /home/zhangy/download/test.sql.zip

    
    

    根文件的修改时间来查找

    [root@localhost ~]#find /home/zhangy -mtime -5 -print #5天修改过的文件,- 表示以内
    /home/zhangy/www/css2/c_textshadow.html
    /home/zhangy/www/css2/c_textautospace.html

    [root@localhost ~]#find /home/zhangy -mtime +5 -print #查找5天前修改过的文件,+表示以前
    /home/zhangy/www/test.php

    [root@localhost ~]# find ./ -mmin -5 -print #查找5分钟以内修改过的文件
    ./cache/index.html

    
    

    exec解释

    [root@localhost ~]#find . -type f -size +1000000c -exec ls -al {} ; #显示当前目录下面所有大于1000000的文件,exec后面执行了一个命令,{}这个代表文件名
    -rw-r--r-- 1 zhangy users 3624960 2009-03-08 ./eaccelerator-0.9.5.3.tar
    -rw-r--r-- 1 zhangy users 3091711 12-18 13:48 ./mmseg-0.7.3.tar.gz
    -rw-r--r-- 1 zhangy users 1191330 2009-06-26 ./pcre-7.9.tar.gz

    
    

    匹配

    [root@localhost ~]#find ./database/ -name '*.sql' -print #查找以sql结尾的文件
    ./database/28toplearning.sql

    [root@localhost ~]#find ./database/ -name '.sql' -print #查找文件名包括sql文件
    ./database/28toplearning.sql

    [root@localhost ~]#find ./database/ -name '28*' -print #查找以28开头的文件
    ./database/28toplearning.sql

    
    ###head
    >用法:head [选项]... [文件]...
    将每个指定文件的头10 行显示到标准输出。
    如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
    如果不指定文件,或者文件为"-",则从标准输入读取数据
    
    

    [root@localhost ~]#head /etc/passwd #默认,显示开头前10行

    
     
    
    

    [root@localhost ~]# head -k /etc/passwd #显示开头前k行

    
    

    [root@localhost ~]#head -q -n k file1 file2 file3 #显示多文件开头前k行,并且不显示文件名的文件头

    
    

    [root@localhost ~]#head -n -k /etc/passwd #除最后k行外,显示剩余全部内容。

    
    
    

    [root@localhost ~]# head -n 5 /etc/passwd #显示前5行

    
    

    [root@localhost ~]# head -n -5 /etc/passwd #显示从0到倒数第5行

    
    

    [root@localhost ~]# head -c 100 /etc/passwd #显示前100字符

    
    

    [root@localhost ~]# head -c -100 /etc/passwd #显示从0到倒数第100字符

    
    ###locate
    >用法: locate [OPTION]... [PATTERN]...
    在mlocate数据库中搜索条目
    
    

    [root@localhost ~]# locate ~/install #查找当前目录下以install开头的文件
    /root/install.log
    /root/install.log.syslog

    
    

    [root@localhost ~]# locate -i ~/install #查找当前目录下以install开头的文件,不区分大小写
    /root/install.log
    /root/install.log.syslog

    
    

    [root@localhost ~]# locate -i /etc/fuc #查找/etc目录下面以fuc开头的文件,不区分大小写

    
    ###less
    >less 与more命令类似,但可以通过翻页键查看上下页的内容
    -b<缓冲区大小> 设置缓冲区的大小
    -e 当文件显示结束后,自动离开
    -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    -g 只标志最后搜索的关键词
    -i 忽略搜索时的大小写
    -m 显示类似more命令的百分比
    -N 显示每行的行号
    -o<文件名> 将less 输出的内容在指定文件中保存起来
    -Q 不使用警告音
    -s 显示连续空行为一行
    -S 行过长时间将超出部分舍弃
    -x<数字> 将“tab”键显示为规定的数字空格
    
    命令内部操作
    
    按键功能如下:
    b 向后翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less 命令
    u 向前滚动半页
    y 向前滚动一行
    空格键 滚动一页
    回车键 滚动一行 
    
    1) 向前搜索
    
        / : 使用一个模式进行搜索,并定位到下一个匹配的文本
        n : 向前查找下一个匹配的文本
        N : 向后查找前一个匹配的文本
    
    2) 向后搜索
    
        ? : 使用模式进行搜索,并定位到前一个匹配的文本
        n : 向后查找下一个匹配的文本
        N : 向前查找前一个匹配的文本
    
    2 全屏导航
    
        ctrl + F :向前移动一屏
        ctrl + B :向后移动一屏
        ctrl + D :向前移动半屏
        ctrl + U :向后移动半屏
    
    3 单行导航
    
        j : 向前移动一行
        k : 向后移动一行
    
    4 其它导航
    
        G : 移动到最后一行
        g : 移动到第一行
        q / ZZ : 退出 less 命令
    
    5 编辑文件
    
        v : 进入编辑模式,使用配置的编辑器编辑当前文件
    
    6 标记导航
    
        当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。
    
        ma : 使用 a 标记文本的当前位置
        'a : 导航到标记 a 处
    
    7 浏览多个文件
    
        方式一,传递多个参数给 less,就能浏览多个文件。
    
        less file1 file2
    
        方式二,正在浏览一个文件时,使用 :e 打开另一个文件。
    
        less file1
        :e file2
    
         
        当打开多个文件时,使用如下命令在多个文件之间切换
    
        :n - 浏览下一个文件
        :p - 浏览前一个文件
    

    [root@localhost ~]# less test.php #查看文件

    
    

    [root@localhost ~]# netstat -tpnl |less #常用方式,分页显示

    ###more
    
    
    more- 在显示器上阅读文件的过滤器[[ ]] 
      总览 (SYNOPSIS) 
    
    more[-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...][[ ]] 
    
    

    描述 (DESCRIPTION)

    More是 一个 过滤器, 用于 分页 显示 (一次一屏) 文本. 这个 版本 非常 基本. 用户 应该 知道 less(1) 提供了 more(1) 的 模拟, 并且 做了 增强.[[ ]]
    选项 (OPTION)

    下面 介绍 命令行选项. 选项 可以 从 环境变量MORE中获取 (要 确保 它们 以 短横线 开头 (``-)), 但是 命令行选项 能够 覆盖 它们.
    -num
    这个选项指定屏幕的行数 (以整数表示).
    -d
    让 more 给 用户 显示 提示信息 "[Press space to continue, 'q' to quit.]", 当 用户 按下 其他键 时, 显示 "[Press 'h' for instructions.]", 而不是 扬声器 鸣笛.
    -l
    More 在 通常情况下 把 ^L (form feed) 当做 特殊字符, 遇到 这个字符 就会 暂停. -l 选项 可以 阻止 这种特性.
    -f
    使 more 计数 逻辑行, 而不是 屏幕行 (就是说, 长行 不会 断到 下一行).
    -p
    不卷屏, 而是 清除 整个屏幕, 然后 显示 文本.
    -c
    不卷屏, 而是 从 每一屏的 顶部 开始 显示 文本, 每 显示完 一行, 就 清除 这一行的 剩余部分.
    -s
    把 重复的空行 压缩成 一个 空行.
    -u
    防止下划线.
    +/
    在 显示 每个文件 前, 搜索 +/ 选项 指定的 文本串.
    +num
    从行号 num 开始显示.
    [[ ]]

    
    

    命令 (COMMAND)

    more的交互命令基于 vi(1). 有些命令 以 一个 十进制数字 开始, 在 下面的描述 里 称之为 k. 后面的 描述中, ^X 指 control-X.
    h or ?
    帮助: 显示 这些 命令 的 摘要. 你 如果 忘掉 所有 其他的命令, 请记住这个.
    SPACE
    显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小.
    z
    显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小. 参数 成为 新的缺省值.
    RETURN
    显示 接下来的 k 行文本. 缺省值 是 1. 参数 成为 新的缺省值.
    d or ^D
    卷屏 k 行. 缺省值 是 当前的 卷屏大小, 初始化为 11. 参数 成为 新的缺省值.
    q 或 Q 或 INTERRUPT
    退出.
    s
    向前跳过 k 行文本. 缺省值 是 1.
    f
    向前跳过 k 屏文本. 缺省值 是 1.
    b or ^B
    向后跳回 k 屏文本. 缺省值 是 1.

    跳到 上一次 搜索 开始 的 地方.

    显示当前行号.
    / pattern
    搜索 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
    n
    搜索 最后 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
    ! or :!
    在子 shell 中执行 .
    v
    启动 /usr/bin/vi, 指向 当前行.
    ^L
    刷新屏幕.
    :n
    跳到 后面 第 k 个 文件. 缺省值 是 1.
    :p
    跳到 前面 第 k 个 文件. 缺省值 是 1.
    :f
    显示 当前文件名 和 行号.
    .
    重复上次命令.
    [[ ]]

    
    

    环境 (ENVIRONMENT)

    More利用 下面的 环境变量 (如果 它们 存在):
    MORE

    这个变量 设置 你 喜欢的 more 选项.
    SHELL
    当前使用的 shell (一般说来 就是 登录 shell).
    TERM
    指定 终端类型, more 用它来 获取 操作屏幕 所需的 终端特性

    
    
    

    [root@localhost ~]#more test.php #查看文件

    
    

    [root@localhost ~]#netstat -tpnl |more #常用方式,分页显示

    
    
    
    ###shred
     >用法:shred [选项]... 文件...
    
    多次覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原。
    
    
    

    [root@localhost ~]#shred test.sh #粉碎文件

    
    

    [root@localhost ~]# shred -u test.sh #粉碎文件,并删除

    
    ###tar
    > tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
    
    
    
    

    [root@localhost ~]# tar -czvf ar_test.tar.gz ar_test #将ar_test文件打包并且压缩

    
    

    [root@localhost ~]# tar zxvf ar_test.tar.gz #解压

    
    

    [root@localhost ~]# tar -tf ar_test.tar.gz #查看包里面的文件信息

    
    

    [root@localhost ~]# tar -cf all.tar *.jpg #将当前目录所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名

    
    

    [root@localhost ~]# tar -rf all.tar *.gif #将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

    
    

    [root@localhost ~]# tar -uf all.tar logo.gif #更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思

    
    

    [root@localhost ~]# tar -xf all.tar #解出all.tar包中所有文件,-x是解开的意思

    
    

    [root@localhost ~]# tar -cjf all.tar.bz2 *.jpg #压缩成.bz2的压缩文件

    
    

    [root@localhost ~]# tar -xjf all.tar.bz2 #解压.bz2的文件

    
    

    [root@localhost ~]# tar -cZf all.tar.Z *.jpg #压缩成.Z的压缩文件

    
    

    [root@localhost ~]# tar -xZf all.tar.Z #解压.Z的文件

    
    
    

    [root@localhost ~]# tar -czvf test.tar.gz test --exclude test/not #不包括test下的not目录

    
    
    
    ###xz
    >xz命令是压缩,解压缩.xz后缀的文件
    用法:
    xz [OPTION]... [FILE]...
    
    
    

    [root@localhost ~]# xz -z aaa.txt //压缩,并删除原文件

    
    

    [root@localhost ~]# xz -zk aaa.txt //压缩但不删除原文件

    
    

    [root@localhost ~]# xz -d aaa.txt.xz //解压

    
    ###zcat
    >zcat 查看压缩的文件
    
    

    [root@localhost ~]#tar czvf aaa.tar.gz aaa.txt #压缩
    aaa.txt

    
    
    

    [root@localhost ~]#zcat aaa.tar.gz #查看
    aaa.txt0000664000076400007650000000001112154736511011733 0ustar zhangyzhangyaaa

    bbb

    
    
    ###split
    >将指定的文件切割小的文件
    
    
    

    [root@localhost ~]#split -d -b 4m google.tar.gz #将文件分割成,4M的小块,并用数字代替字母

    [root@localhost ~]#split -l 300 b.txt #分割文件 取文件前300行开始分割

    [root@localhost ~]#cat x* > google_bak.tar.gz #合并文件

    
     
    
    

    [root@localhost ~]#split -b 20m RevolutionOS.rmvb RevOS_part_
    [root@localhost ~]#ls -lh
    -rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb
    -rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_aa
    -rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_ab
    .............
    -rw-r--r-- 1 root root 20M 03-19 18:00 RevOS_part_am
    -rw-r--r-- 1 root root 16M 03-19 18:00 RevOS_part_an

    
    
    

    [root@localhost ~]#split -l 200 test.txt test_part #每200行生成一个文件

    
    
    ###bzcat
    
    

    [root@localhost ~]# bzcat -9 abc.sh.bz2
    BEGIN {
    FS="to"
    count=0
    }
    {

    printf("%s,%s\n",$1,$2)

    split($1,parts1,"-")
    split($2,parts2,"-")
    mystr=sprintf("%4d%2d%2d %4d%2d%2d",parts1[1],parts1[2],parts1[3],parts2[1],parts2[2],parts2[3])
    count+=gsub(" ","0",mystr)
    print mystr
    }
    END{
    print count/2
    }

    
    
    ###bzip2
    >bzip2, bunzip2 - 一种块排序文件压缩软件,v0.9.5 
    bzcat - 将文件解压缩至标准输出 
    bzip2recover - 恢复损坏的 bzip2 文件
    
    
    

    例,压缩

    [root@localhost ~]# bzip2 -z abc.sh #压缩

    [root@localhost ~]# bzip2 -kv abc.sh #压缩原文保留
    abc.sh: 1.220:1, 6.557 bits/byte, 18.04% saved, 255 in, 209 out.

    [root@localhost ~]# bzip2 -9 -c abc.sh >abc.bz2 #压缩原文保留

    
    

    例,解压

    [root@localhost ~]# bzip2 -dv abc.sh.bz2
    abc.sh.bz2: done

    
    

    [root@localhost ~]# bzip2 -tv test.bz2 # 模拟解压

    [root@localhost ~]# bzip2 -k test # 生成新文件,原文件也保留

    [root@localhost ~]# bzip2 -dc test.bz2 # 解压到标准输出

    
    ###bzcat
    
    

    [root@localhost ~]# bzcat -9 abc.sh.bz2
    BEGIN {
    FS="to"
    count=0
    }
    {

    printf("%s,%s\n",$1,$2)

    split($1,parts1,"-")
    split($2,parts2,"-")
    mystr=sprintf("%4d%2d%2d %4d%2d%2d",parts1[1],parts1[2],parts1[3],parts2[1],parts2[2],parts2[3])
    count+=gsub(" ","0",mystr)
    print mystr
    }
    END{
    print count/2
    }

    
    ###cpio
    >存取归档包中的文件
    
    

    [root@localhost ~]#ls|cpio -o > /home/zhangy/test.cpio #备份当前目录下的文件
    31 blocks

    [root@localhost ~]#cpio -i < /home/zhangy/test.cpio #导入以前的备份文件

    
    

    找出当前目录下的所有文件,然后将它们打包进一个cpio压缩包文件
    [root@localhost ~]# find . -depth | cpio -ocvB > backup.cpio 或 find .-depth-print | cpio -ocvB > backup.cpio

    
    

    将当前目录下名为inittab文件加入initrd.cpio包中
    [root@localhost ~]# find . -name inittab -depth | cpio -ovcB -A -F initrd.cpio
    [root@localhost ~]#find . -name inittab -depth | cpio -ovcB -A -O initrd.cpio
    [root@localhost ~]#find . -name inittab -depth | cpio -ovcB -A --quiet -O initrd.cpio

    
    

    [root@localhost ~]# cpio --absolute-filenames -vtc < boot.cpio #不忽略文件列表清单的文件名最前面的“/"
    [root@localhost ~]# cpio --no-absolute-filenames -vtc < boot.cpio #默认是忽略文件列表清单的文件中最前面的
    [root@localhost ~]#cpio --absolute-filenames -icvu < test.cpio #解压到原始位置,解压出来的每个文件的时间属性改为当前时间
    [root@localhost ~]#cpio --absolute-filenames -icvum < test.cpio #解压到原始位置,同时不改变解压出来的每个文件的时间属性
    [root@localhost ~]#cpio -icvu < test.cpio # 解压到当前目录下
    [root@localhost ~]#cpio -icvdu -r < grub.cpio #在解包cpio时,对解包出来的文件进行交互的更名
    [root@localhost ~]#cpio -icvu --to-stdout < grub.cpio #将cpio包中的文件解压并输入标准输出
    [root@localhost ~]#find . -depth| cpio -R ruanxi:ruanxi -pL /backup/ #复制文件并更改文件的属主与属组

    
    ###uncompress
    > 用来解压.Z文件
    -c 输出结果到标准输出
    -f 强制执行
    -v 显示详细的处理信息
    -V 版本信息
    
    
    

    [root@localhost ~]# uncompress test.Z #解压test.Z

    
    ###chattr
    
    
    >chattr 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
    
    
    

    [root@localhost ~]# chattr +i nginx.conf #设置该文件不能进行任何形势的修改

    [root@localhost ~]# mv nginx.conf nginx.conf_bak
    mv: 无法将"nginx.conf" 移动至"nginx.conf_bak": 不允许的操作

    [root@localhost ~]# lsattr nginx.conf #查看chattr设置的权限
    ----i--------e- nginx.conf

    [root@localhost ~]# chattr -i nginx.conf #取消-i的权限设置

    [root@localhost ~]# lsattr nginx.conf #查看chattr设置的权限
    -------------e- nginx.conf

    
    ###getfacl
    
    >getfacl 2.2.51 -- 获取文件访问控制列表
    
    

    [root@localhost ~]# getfacl test #查看acl权限列表

    file: test

    owner: root

    group: root

    user::r-x
    user:tank:rwx #effective:---
    group::r-x #effective:---
    mask::---
    other::---

    [root@localhost ~]# getfacl -c test #查看acl权限,省略头信息
    user::r-x
    user:tank:rwx #effective:---
    group::r-x #effective:---
    mask::---
    other::---

    
    ###setfacl
    
    >设定文件访问控制列表
    
    

    [root@localhost ~]# getfacl test

    file: test

    owner: root

    group: root

    user::r-x
    user:tank:rwx #effective:---
    group::r-x #effective:---
    mask::---
    other::---

    [root@localhost ~]# setfacl -m u:zhangy:rw- test #修改文件的acl权限,添加一个用户权限
    [root@localhost ~]# getfacl test

    file: test

    owner: root

    group: root

    user::r-x
    user:zhangy:rw- #多出来一个用户
    user:tank:rwx
    group::r-x
    mask::rwx
    other::---

    [root@localhost ~]# setfacl -m g:zhangying:r-w test #添加一个组
    [root@localhost ~]# getfacl test

    file: test

    owner: root

    group: root

    user::r-x
    user:zhangy:rw-
    user:tank:rwx
    group::r-x
    group:zhangying:rw-
    mask::rwx
    other::--

    相关文章

      网友评论

        本文标题:Linux命令总结文件命令篇第一章

        本文链接:https://www.haomeiwen.com/subject/hzmcqxtx.html