linux 基础命令总结

命令总结

0.跟踪路由 

tractert  172.16.0.10

1、history

history     #显示命令的历史记录
[root@zyc01 ~]# history -c #清除所有的历史记录
[root@zyc01 ~]# history -d #删除历史ID对应的命令
[root@zyc01 ~]# history -w #将当前历史记录保存到默认的文件中 = ~/.bash_history

2、alias

alias#设置别名 
[root@zyc01 ~]# alias 别名='执行的命令' :# [root@zyc01 ~]# alias baidu="www.baidu.com"
等号=左右不能有空格!!!

3、unalias

unalias     #取消别名 
[root@zyc01 ~]# unalias 别名 :       [root@zyc01 ~]# unlias baidu

4、shutdown

shutdown  #关机及重启的命令 
[root@zyc01 ~]# shutdown -h +分钟 #表示多少分钟之后关机.
[root@zyc01 ~]# shutdown 0           #立刻关机,
[root@zyc01 ~]# shutdown now           #立刻关机
[root@zyc01 ~]# shutdown -h 12:00       #定时关机,在12点关机。
[root@zyc01 ~]# shutdown -r +分钟         #表示多少分钟之后重启
[root@zyc01 ~]# shutdown -r 0           #立刻重启
[root@zyc01 ~]# shutdown now           #立刻重启
[root@zyc01 ~]# shutdown -r 12:00       #定时重启,在12点重启
[root@zyc01 ~]# shutdown -c           #取消定时的关机或者重启。 c = cancel

5、poweroff

poweroff    #关机命令  ,立刻关机
[root@zyc01 ~]# poweroff

6、halt

halt  #关机命令,本身只会关闭系统,不会关闭电源,需要手动关闭电源
[root@zyc01 ~]# halt -p #关闭电源及系统

7、init

init   #切换运行级别
[root@zyc01 ~]# init 0 #关机     将运行级别切换为关机级别
[root@zyc01 ~]# init 6 #重启 将运行级别切换为重启级别

8、reboot:重启

reboot  #重启
[root@zyc01 ~]# rebot     #立即重启系统

9、logout

logout      #退出当前登录的用户 ,不能退出非登录式shell
[root@zyc01 ~]# logout   #立即退出当前登录用户,

10、exit

exit       #退出当前登录的用户,主要用于脚本退出
[root@zyc01 ~]# exit     #立即退出当前登录用户,

11、ip

ip    #显示网络IP信息
[root@zyc01 ~]# ip address   #显示所有IP地址     ==   简写为 [root@zyc01 ~]# ip a  
[root@zyc01 ~]# ip address show eth0 #显示某个网卡的信息   == 简写为   [root@zyc01 ~]# ip a s eth0

12、ifconfig

ifconfig      #显示所有ip地址的信息,centos 6中默认的显示网卡信息命令,centos7中需要先下载安装。
[root@zyc01 ~]# ifconfig eth0 #显示某块网卡的信息  

13、hostname

hostname    #显示系统主机名 
[root@zyc01 ~]# hostname             #显示系统主机名
[root@zyc01 ~]# hostname -i #显示所有IP地址,包括IPv6地址
[root@zyc01 ~]# hostname -I #只显示IPv4地址

14、man

#显示命令的帮助信息 
[root@zyc01 ~]# man ls   #ls命令的所有帮助信息,列举的全面

15、help

#显示系统内置命令的帮助信息 

16、info

#显示命令的说明信息

17、pwd

pwd (print working directory)#显示当前工作目录的绝对路径 ,定位的功能。
    [root@zyc01 ~]# pwd
    /root

18、cd

cd  (change directory)      #切换工作目录,切换路径 
    a.[root@zyc01 hao]# cd   #直接切换到当前用户的家目录       === cd ~
    b.[root@zyc01 ~]# cd ~   #切换当前用户的家目录             ===   cd /root
    c.[root@zyc01 ~]# cd .           #保持当前目录不变,切换到当前目录。 === cd ./
    d.[root@zyc01 ~]# cd ..   #切换当前目录的上一级目录         ===cd ../
    e.不同目录下,执行的相对路径操作,得到的结果是不同的:
        [root@zyc01 local]# cd ../etc
        [root@zyc01 etc]# pwd               #进入当前目录的上一级目录/usr下的etc目录
        /usr/etc
        [root@zyc01 usr]# cd   ../etc
        [root@zyc01 etc]# pwd               #进入当前目录的上一级目录/下的etc目录
        /etc
    f.[root@zyc01 etc]# cd /   #切换到根目录,根本身也是一个目录
    g.[root@zyc01 /]# cd -   #切换到你上一次所在的目录,快速的到达上一次所在的路径.
      /etc
      [root@zyc01 etc]#

19、ls

ls  (list)  :列表显示 #显示文件或者目录列表信息,打开目录,显示目录里面的内容。
选项: -l    #以长格式形式显示文件或者目录的详细属性信息  
      -i  #显示文件或者目录的inode信息,索引节点信息
      -h  #以字节大小的形式显示文件大小   B   KB   MB   GB  
      -a  #显示所有的文件,隐藏文件,所有以点开头的文件就是隐藏文件
      -S  #以文件大小进行排序,从大到小显示
      -t  #根据时间进行排序,最新的时间在最上面
      -1          #数字1,竖向显示当前目录里的文件或者目录。
      -r  #倒序排序  
      -F  #给不同的文件加上不同的标识符    
          /  #目录
    *  #可执行文件  
     =  #套接字文件 socker文件  
    |  #管道文件  
      -d  #显示目录的本身信息,
#举例:
不加选项时:默认针对的是当前目录操作,显示当前目录的内容
  [root@zyc01 ~]# ls #如果不加目录信息,默认针对的是当前目录操作
  anaconda-ks.cfg

-l:以长格式形式显示文件或者目录的详细属性信息
  [root@zyc01 ~]# ls -l   显示文件的具体详细信息。   系统自带的别名: ll   === ls -l  
  total 4
   -rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
   ===     系统自带的别名   ll   ===  ls   -l  

-i:显示文件或者目录的inode信息
  [root@zyc01 ~]# ls -li
  total 4
   134317667 -rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg

-h:以字节大小的形式显示文件大小
  [root@zyc01 ~]# ll -h
  total 4.0K
   -rw-------. 1 root root 1.4K Jul  6 02:17 anaconda-ks.cfg

-a:显示当前目录下所有的文件,包含隐藏文件(以.或者..开头的文件)。
  [root@zyc01 ~]# ll -a
  total 28
  dr-xr-x---.  2 root root  135 Jul  6 09:06 .
  dr-xr-xr-x. 17 root root  224 Jul  6 02:16 ..
   -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
   -rw-------.  1 root root  879 Jul  7 18:59 .bash_history
   -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
   -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
   -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc

-S(大S): 以文件大小进行排序,从大到小显示。
  [root@zyc01 ~]# ll -aS  
  total 28
   -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
   -rw-------.  1 root root  879 Jul  7 18:59 .bash_history
  dr-xr-xr-x. 17 root root  224 Jul  6 02:16 ..
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
  dr-xr-x---.  2 root root  135 Jul  6 09:06 .
   -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
   -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
   -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout

-t:根据时间进行排序,最新的时间在最上面
  [root@zyc01 ~]# ll -at
  total 28
   -rw-------.  1 root root  879 Jul  7 18:59 .bash_history
  dr-xr-x---.  2 root root  135 Jul  6 09:06 .
   -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
  dr-xr-xr-x. 17 root root  224 Jul  6 02:16 ..
   -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
   -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
   -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
   -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc

-r:将文件倒序排序。
  a. [root@zyc01 ~]# ll -atr     按照时间倒序的顺序来排列
      total 28
      -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
      -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
      -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
      -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
      -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
      dr-xr-xr-x. 17 root root  224 Jul  6 02:16 ..
      -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
      dr-xr-x---.  2 root root  135 Jul  6 09:06 .
      -rw-------.  1 root root  879 Jul  7 18:59 .bash_history
     
    b.[root@zyc01 ~]# ll -aSr     按照文件大小倒序的顺序来排列
      total 28
      -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
      -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
      -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
      dr-xr-x---.  2 root root  135 Jul  6 09:06 .
      -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
      -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
      dr-xr-xr-x. 17 root root  224 Jul  6 02:16 ..
      -rw-------.  1 root root  879 Jul  7 18:59 .bash_history
      -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
   
-F: 给不同的文件加上不同的标识符    
  [root@zyc01 ~]# ll -aF  
  total 28
  dr-xr-x---.  2 root root  135 Jul  6 09:06 ./                     #目录
   -rw-------.  1 root root  879 Jul  7 18:59 .bash_history*  #可执行文件
   -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout=  #套接字文件 socker文件
   
-d:显示目录的本身信息,    
  [root@zyc01 ~]# ll -d /root
  dr-xr-x---. 2 root root 135 Jul  6 09:06 /root
   
   
-1(数字1):横向行的形式显示当前目录里的文件或者目录  
  [root@zyc01 ~]# ls /         #默认是以列的形式
  bin boot dev etc home lib lib64 media mnt opt proc root  
  [root@zyc01 ~]# ls -1 /       #以行的形式显示文件名称  
  bin
  boot
  dev
  etc
  home
  lib
  lib64
  media
  mnt
  opt
  proc
  root

20、tree

tree    #以树状形式显示目录列表  :树状显示
  [root@zyc01 ~]# yum install -y tree   #首先要安装tree命令软件
选项:
       -a #显示所有文件或者目录 隐藏文件
       -d #只显示目录及目录的数量
       -h #显示文件的大小  
       -F #给不同类型的文件加上不同的标识符
              / #目录
              * #可执行文件  
              = #套接字文件 socker文件  
              | #管道文件  
       -L #根据目录的层级数显示  
#举例:
不加选项,默认针对当前目录操作。
      [root@zyc01 ~]# tree
      .
      └── anaconda-ks.cfg
      0 directories, 1 file
-a:#显示所有文件或者目录 隐藏文件        
      [root@zyc01 ~]# tree -a
      .
      ├── anaconda-ks.cfg
      ├── .bash_history
      ├── .bash_logout
      ├── .bash_profile
      ├── .bashrc
      ├── .cshrc
      └── .tcshrc
      0 directories, 7 files
     
-d:#只显示目录及目录的数量      
      [root@zyc01 ~]# tree -d   /var/log/
      /var/log/
      ├── anaconda
      ├── audit
      ├── rhsm
      └── tuned
      4 directories
     
-h:#显示文件的大小      
      [root@zyc01 ~]# tree -h   /var/log/
      /var/log/
      ├── [ 176] anaconda
      │   ├── [ 26K] anaconda.log
      │   ├── [3.9K] ifcfg.log
      │   ├── [1.5M] journal.log
      │   ├── [   0] ks-script-3PCKae.log
      │   ├── [108K] packaging.log
      │   ├── [ 29K] program.log
      │   ├── [121K] storage.log
      │   ├── [275K] syslog
      │   └── [ 21K] X.log
     
-L #根据目录的层级数显示
      [root@zyc01 ~]# tree -L 2 /   只显示根目录下的两层级

21、mkdir

mkdir (make directory)  #创建目录:1.在相同的路径下,不能存在相同的文件名称 
                                   2.在不同的路径下,可以存在相同的文件名称
                                   3.在Linux系统中,是区分大小写的
选项:
       -p #创建多级目录 递归创建   当目录已经存在时,再次创建不会提示报错  
       -v #显示创建的过程  
       -m #创建的时候,给目录设置一个权限  
      {} #生成序列,有规律和无规律:有规律使用..分割 ,无规律的使用逗号分割
      * #通配符   所有的意思
#举例:
不加选项,默认在当前目录创建,    
      [root@zyc01 ~]# mkdir /data #使用绝对路径进行创建
      [root@zyc01 ~]# mkdir data #使用相对路径进行创建
       
-p:#创建多级目录 递归创建   当目录已经存在时,再次创建不会提示报错      
      [root@zyc01 ~]# mkdir -p test/oldboy
      [root@zyc01 ~]# ll
      total 4
       -rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
      drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
      drwxr-xr-x. 3 root root   20 Jul  8 19:57 test
      [root@zyc01 ~]# ll test/
      total 0
      drwxr-xr-x. 2 root root 6 Jul  8 19:57 oldboy
       
-v:#显示创建的过程          
      [root@zyc01 ~]# mkdir -v   data01
       mkdir: created directory ‘data01’
       
-m:#创建的时候,给目录设置一个权限
      [root@zyc01 ~]# mkdir -m 700   data02
      [root@zyc01 ~]# ll
      total 4
       -rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
      drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
      drwxr-xr-x. 2 root root    6 Jul  8 20:02 data01
      drwx------. 2 root root    6 Jul  8 20:04 data02

{}:#生成序列,有规律和无规律。有规律使用..分割,无规律的使用逗号分割
      [root@zyc01 ~]# mkdir test/data{01..10} #有规律批量创建10个目录
      [root@zyc01 ~]# ll test/
      total 0
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data01
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data02
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data03
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data04
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data05
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data06
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data07
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data08
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data09
      drwxr-xr-x. 2 root root 6 Jul  8 20:09 data10
       
      [root@zyc01 ~]# mkdir data-{a,c,d,h}   #无规律批量创建4个目录
      [root@zyc01 ~]# ll
      total 4
       -rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
      drwxr-xr-x.  2 root root    6 Jul  8 19:51 data
      drwxr-xr-x.  2 root root    6 Jul  8 20:02 data01
      drwx------.  2 root root    6 Jul  8 20:04 data02
      drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-a
      drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-c
      drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-d
      drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-h
       
*:#通配符,所有的意思        
      [root@zyc01 ~]# mkdir test/oldboy-{a..g}  
      [root@zyc01 ~]# ll -d test/oldboy-*   #显示所有带oldboy-的目录。*表示所有
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-a
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-b
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-c
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-d
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-e
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-f
      drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-g

22、touch

touch       #创建文件,创建非空文件,当文件已经存在时,创建的时候不会报错,但是会改变文件的时间戳.
#举例:
不加选项,默认创建在当前目录下
      [root@zyc01 ~]# touch test.txt
       
创建非空文件:
      [root@zyc01 ~]# touch “好好” > test.txt   #先清空test.txt中内容,再将好好这句,写入test.txt。
       
追加文件内容:
      [root@zyc01 ~]# touch “好好” >> test.txt   #先不清空test.txt中内容,直接在末尾追加。
       
{}:#生成序列 有规律和无规律   有规律使用..分割   无规律的使用逗号分割
      [root@zyc01 ~]# touch data.{txt,sh,log,xml,tar,py,js}
      [root@zyc01 ~]# ll
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.js
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.log
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.py
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.sh
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.tar
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.txt
       -rw-r--r--.  1 root root    0 Jul  8 12:27 data.xml

23、cp

cp  (copy):复制,拷贝  
语法:
命令     源文件     目标目录
选项:
-r #递归复制   复制目录时所使用的
-p #保持源文件属性
-d #复制的时候保持软连接
-a ===  -pdr
-t #把源文件的位置根目标目录的位置进行调换   在批量拷贝文件时使用
-i #当拷贝的文件在目标目录已经存在时,提示是否覆盖     系统自带的别名
   
直接使用:
      [root@zyc01 ~]# cp /etc/hosts /root     #把文件hosts从/etc目录复制到 /root 目录。
      [root@zyc01 ~]# cp /etc/passwd   ./     #把文件passwd从/etc目录复制到 ./ 当前目录。
      [root@zyc01 ~]# cp /etc/resolv.conf .   #把文件resolv从/etc目录复制到 . 当前目录。
      [root@zyc01 ~]# ll
      total 12
      -rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
      -rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
      -rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf
     
-r #递归复制,复制目录时所使用的。
      [root@zyc01 ~]# cp /opt/   ./    
      cp: omitting directory ‘/opt/’    #无法直接复制目录,因为目录下还有很多文件。
      [root@zyc01 ~]# cp -r   /opt/ ./   #加上选项 -r,意思是将/opt/这个目录包含里面的文件全部复制。
      [root@zyc01 ~]# ll
      total 12
      drwxr-xr-x. 2 root root   6 Jul  9 09:14 opt
     
-d #复制的时候保持软连接
      [root@zyc01 ~]# ll /etc/grub2.cfg   #软链接文件
      lrwxrwxrwx. 1 root root 22 Jul  6 02:14 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
    #直接复制软链接文件,复制后已经不是软链接文件了。
      [root@zyc01 ~]# cp /etc/grub2.cfg ./
      [root@zyc01 ~]# ll
      total 20
      -rw-r--r--. 1 root root 4229 Jul  9 09:16 grub2.cfg    #复制后已经变成普通文件了。
    #加上选项 -d.
      [root@zyc01 ~]# cp -d /etc/grub2.cfg   ./       #加上选项 -d.
      [root@zyc01 ~]# ll
      total 12
      lrwxrwxrwx. 1 root root  22 Jul  9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg   #保持了软链接。

-a ===  -pdr 三种功能结合到一起
      [root@zyc01 ~]# cp -a /etc/passwd ./
      [root@zyc01 ~]# ll
      total 680
      -rw-r--r--. 1 root root    974 Jul  7 14:41 passwd

-t #把源文件的位置根目标目录的位置进行调换,在批量拷贝文件时使用      
      [root@zyc01 ~]# cp -t ./   /etc/fstab
      [root@zyc01 ~]# ll
      total 16
      -rw-r--r--. 1 root root 501 Jul  9 09:21 fstab
     
-i #当拷贝的文件在目标目录已经存在时,提示是否覆盖,系统自带的别名。    
      [root@zyc01 ~]# cp /etc/hosts   ./
      cp: overwrite ‘./hosts’? n            #提示是否覆盖
      [root@zyc01 ~]# alias
      alias cp='cp -i'                      #系统自带的别名
      [root@zyc01 ~]# \cp /etc/hosts ./     #强制覆盖不提示   临时取消别名

24、 mv

mv (move):移动和重命名文件 
语法:
  命令     源文件   目标目录  
选项:
-i #当文件已经存在时,移动的时候,提示是否覆盖目标文件,系统自带别名 mv == mv -i 。
-f #强制覆盖,不提示  
-t #把源文件的位置跟目标目录的位置进行调换
   
#直接使用,移动文件:
      [root@zyc01 ~]# mv /opt/hosts   ./               #将/opt下的hosts文件移动到当前目录。
      [root@zyc01 ~]# ll
      total 4
       -rw-r--r--. 1 root root 158 Jul  9 09:28 hosts
       
#移动目录是不需要加选项
      [root@zyc01 ~]# mv /opt/mnt/   ./ #将/opt/mnt/目录移动到当前目录。
      [root@zyc01 ~]# ll
      total 4
      drwxr-xr-x. 2 root root   6 Jul  9 09:59 mnt
         
-i #当文件已经存在时,移动的时候,提示是否覆盖目标文件,系统自带别名 mv == mv -i 。
      [root@zyc01 ~]# mv /opt/hosts   ./ #文件已经存在,继续执行移动时,会输出提示。
       mv: overwrite ‘./hosts’? n               #提示是否覆盖
       
#在命令前加 \,即取消别名
      [root@zyc01 ~]# \mv /opt/hosts   ./       #执行时会强制覆盖不提示

-f #强制覆盖,不提示        
      [root@zyc01 ~]# mv -f /opt/hosts   ./
      [root@zyc01 ~]# ll
      total 4
       -rw-r--r--. 1 root root 158 Jul  9 10:00 hosts
       
-t #把源文件的位置跟目标目录的位置进行调换        
      [root@zyc01 ~]# mv -t /opt/   ./hosts  
      [root@zyc01 ~]# ll /opt/
      total 12
       -rw-r--r--. 1 root root 158 Jul  9 10:00 hosts
       
重命名 #在移动文件或者目录的过程中,修改了名称  
      [root@zyc01 ~]# mv /opt/hosts   ./host     #将hosts文件移动到当前目录,并改名成host。
      [root@zyc01 ~]# ll
      total 4
       -rw-r--r--. 1 root root 158 Jul  9 10:00 host

25.、rename

rename 重命名:利用替换字符串的方式进行重命名 。
      [root@zyc01 ~]# rename   test   oldboy   test.txt   #将test.txt 改名成 oldboy.txt。
      [root@zyc01 ~]# ll
      total 4
       -rw-r--r--. 1 root root   0 Jul  9 10:08 oldboy.txt

26、rm

rm (remove):删除命令,命令特别的危险,使用时要谨慎细心。
选项:
-i    #在删除文件的时候,提示你是否确认删除   系统别名
-f #强制删除不提示  
-r #删除目录使用 递归删除  
-v   #详细显示进行的步骤

-i #在删除文件的时候,提示你是否确认删除,系统别名:rm == rm -i
      [root@zyc01 ~]# rm host
       rm: remove regular file ‘host’? n   #提示是否删除此文件

-f #强制删除不提示      
      [root@zyc01 ~]# rm -f   host

-r #删除目录使用,递归删除.
      [root@zyc01 ~]# rm -f mot
       rm: cannot remove ‘mot/’: Is a directory  #提示这是一个目录,不能删除。
      [root@zyc01 ~]# rm -rf mot/               #加上 -r 后,直接删除,不会提示。

*  #所有的意思      
      [root@zyc01 ~]# rm -rf ./*         #删除目录下的所有,排除隐藏文件。
      [root@zyc01 ~]# rm -rf ./{*,.*}         #删除目录下的所有,包括隐藏文件。

27、echo

echo :# 1.打印要输出的内容,2.打印变量的值,3.创建新文件,4.修改文件,5.输出加上颜色 。此命令在脚本中使用的多
选项:
-n #不自动换行
-e #支持一些特殊字符的使用
    \n #换行符
    \t #tab键
   
直接使用,输入什么,就输出什么,自动换行。
        [root@zyc01 ~]# echo hello world
        hello world
       
-n #不自动换行
        [root@zyc01 ~]# echo -n   hello world
        hello world[root@zyc01 ~]#
       
#定义和打印变量
        [root@zyc01 ~]# Name=qls
        [root@zyc01 ~]# echo $Name
        qls
        [root@zyc01 ~]# echo $PWD
        /root
        [root@zyc01 ~]# cd /opt/
        [root@zyc01 opt]# echo $PWD
        /opt
       
#创建新文件 :创建非空文件,
  >   #标准输出重定向 ,如果文件不存在,会自动创建,如果文件存在,会首先把文件的内容清空,然后再把你要
            输出的内容重定向进去。  
        [root@zyc01 ~]# echo 1 > test.txt
        [root@zyc01 ~]# cat test.txt
        1
       
  >> #标准输出追加重定向 如果文件不存在,会自动创建,如果文件存在,会把你要输出的内容追加到文件的底部
        [root@zyc01 ~]# echo 3 >> test.txt
        [root@zyc01 ~]# cat test.txt
        1
        3
       
-e #支持一些特殊字符的使用
  \n :输出时换行
        [root@zyc01 ~]# echo -e "hello\nworld"
        hello
        world
        [root@zyc01 ~]# echo -e "1\n2\n3"
        1
        2
        3
  \t:增加tab键
        [root@zyc01 ~]# echo -e '1\t2'
        1 2
   
#输出加上颜色
  字颜色:30—–37
          echo -e "\033[30m 黑色字 \033[0m"
          echo -e "\033[31m 红色字 \033[0m"
          echo -e "\033[32m 绿色字 \033[0m"
          echo -e "\033[33m 黄色字 \033[0m"
          echo -e "\033[34m 蓝色字 \033[0m"
          echo -e "\033[35m 紫色字 \033[0m"
          echo -e "\033[36m 天蓝字 \033[0m"
          echo -e "\033[37m 白色字 \033[0m"
  字背景颜色范围:40—–47
          echo -e "\033[40;37m 黑底白字 \033[0m"
          echo -e "\033[41;37m 红底白字 \033[0m"
          echo -e "\033[42;37m 绿底白字 \033[0m"
          echo -e "\033[43;37m 黄底白字 \033[0m"
          echo -e "\033[44;37m 蓝底白字 \033[0m"
          echo -e "\033[45;37m 紫底白字 \033[0m"
          echo -e "\033[46;37m 天蓝底白字 \033[0m"
          echo -e "\033[47;30m 白底黑字 \033[0m"

28、cat

cat命令 :#显示文件内容  把文件内容全部显示出来     创建新文件  修改文件    合并文件
选项:
-n #显示文件时,显示文件的行号  
-A #给显示的文件内容的每行结尾加上一个标识符  

直接使用,查看当前目录下文件
          [root@zyc01 ~]# cat passwd
          root:x:0:0:root:/root:/bin/bash
          bin:x:1:1:bin:/bin:/sbin/nologin
          daemon:x:2:2:daemon:/sbin:/sbin/nologin
          adm:x:3:4:adm:/var/adm:/sbin/nologin
          lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          sync:x:5:0:sync:/sbin:/bin/sync
          shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         
-n #显示文件时,显示文件的行号  
          [root@zyc01 ~]# cat -n passwd
          1 root:x:0:0:root:/root:/bin/bash
          2 bin:x:1:1:bin:/bin:/sbin/nologin
          3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
          4 adm:x:3:4:adm:/var/adm:/sbin/nologin
          5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          6 sync:x:5:0:sync:/sbin:/bin/sync
          7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         
-A #给显示的文件内容的每行结尾加上一个标识符
          [root@zyc01 ~]# cat -A passwd       #在每一行的行尾增加$符,可以查看行位有没有空格。
          root:x:0:0:root:/root:/bin/bash$  
          bin:x:1:1:bin:/bin:/sbin/nologin$
          daemon:x:2:2:daemon:/sbin:/sbin/nologin$
          adm:x:3:4:adm:/var/adm:/sbin/nologin$
          lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
          sync:x:5:0:sync:/sbin:/bin/sync$
          shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$
         
#   <<   标识符限定输入重定向 , 命令从标准输入中输入,直到遇到标识符的分解符结束
          [root@zyc01 ~]# cat >123.txt<<EOF     #先清空123.txt中内容,
          > 123
          > 456
          > 789
          > EOF
         
# >   先清空文件内容,  
# >> 不清空文件内容,直接追加
          [root@zyc01 ~]# cat >>123.txt<<oldboy #不清空123.txt中内容,可以在后接着输入新内容,
          > 000
          > oldboy
                 
#同时查看多个文件:
          [root@zyc01 ~]# cat pass.txt
          123456
          [root@zyc01 ~]# cat test.txt
          2
          3
          [root@zyc01 ~]# cat pass.txt test.txt  
          123456
          2
          3
         
#将多个文件合并为一个文件 ,并重命名。
          [root@zyc01 ~]# cat pass.txt test.txt   > new.txt
          [root@zyc01 ~]# cat new.txt
          123456
          2
          3

29、more

more命令 :#分页显示文件内容,文件显示完成之后,会自动退出  
选项:
-num #num是数字   指定一页显示多少行
+num #num是数字   指定从第几行开始显示文件内容
  空格或者f键        #向下翻页
b键 #向上翻页
回车    #向下一行  
h     #帮助信息
q #退出  
/xxx #搜索你要搜索的内容,搜索出来的内容不会高亮显示 ,使用 n #向下查找,不能向上查找
= #显示当前光标所在的行号
           
-num  #num是数字,指定一页显示多少行。          
          [root@zyc01 ~]# more -1 services     #指定每页显示1行。空行也算
           # /etc/services:
           --More--(0%)
           
+num   #num是数字,指定从第几行开始显示文件内容。
          [root@zyc01 ~]# more +5 services     #从第5行开始显示。空行也算。
           # IANA services version: last updated 2013-04-10
           #
           # Note that it is presently the policy of IANA to assign a single well-know

30、less

less命令:#分页显示文件内容,文件显示完成后,不会自动退出,手动按 q 键退出。 
选项:
      -N   #显示文件内容的时候,加上行号  
  -i       #在搜索的时候,忽略大小写  
空格或者f键 #向下翻页
b键   #向上翻页
回车   #向下一行
q #退出
h #显示帮助
/xxxx #搜索指定的内容   会把搜索出来的内容高亮显示  
n #向下查找
N #向上查找
= #1.显示当前页的内容是由哪些行组成的显示总行数
2.显示文件从开头到当前行总共显示了多少字节内容,总字节大小。

-N #显示文件内容的时候,加上行号
    [root@zyc01 ~]# less -N shi.txt
     1 春江潮水连海平,海上明月共潮生。
     2
     3 滟滟随波千万里,何处春江无月明!
     4
     5 江流宛转绕芳甸,月照花林皆似霰;
     6
     7 空里流霜不觉飞,汀上白沙看不见。
 
-i #在搜索的时候,忽略大小写
    [root@zyc01 ~]# less -i passwd

 

31、 head

head 命令 :#显示文件的头部信息,默认显示文件的前10行内容 
选项:
       -n #取消默认输出
       -c #显示文件的最前面的字符  
       
#直接使用,默认显示文件的前10行:
          [root@zyc01 ~]# head passwd
          root:x:0:0:root:/root:/bin/bash
          bin:x:1:1:bin:/bin:/sbin/nologin
          daemon:x:2:2:daemon:/sbin:/sbin/nologin
          adm:x:3:4:adm:/var/adm:/sbin/nologin
          lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          sync:x:5:0:sync:/sbin:/bin/sync
          shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
          halt:x:7:0:halt:/sbin:/sbin/halt
          mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
          operator:x:11:0:operator:/root:/sbin/nologin
 
-n #取消默认输出          
          [root@zyc01 ~]# head -n 2 passwd ==== head -2 passwd (n可有可无) 。
          root:x:0:0:root:/root:/bin/bash
          bin:x:1:1:bin:/bin:/sbin/nologin
         
-c #显示文件的最前面的字符,空格也算在内,显示后不换行。
          [root@zyc01 ~]# head -c5 passwd
          root:[root@zyc01 ~]#

32、 tail

tail 命令:#显示文件的尾部信息,默认显示文件最后10行,可自动换行(因为每一行的行尾都有换行符)
选项:
 -n    #取消默认输出
     -c #显示最后几个字符
     -f #实时显示文件的尾部变化信息  
     -F #实时更新文件的内容,当文件不存在,不会退出,会一直尝试读取这个文件,直到文件存在 。
     
#直接使用,默认显示文件的前10行:
        [root@zyc01 ~]# tail passwd
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
       
-n #取消默认输出:    
        [root@zyc01 ~]# tail -n 1 passwd   ====   tail -1 passwd (n可有可无)
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
       
-c #显示最后几个字符:      
        [root@zyc01 ~]# tail -c5 passwd #显示最后5个字符,只能看见4个,另外一个是换行符
        ogin

33、tailf

tailf命令:#实时更新文件的内容:tailf    ====    tail   -f
        当文件内容没有发生变化时,tailf不会去读取磁盘中的信息,减少磁盘的读写 ,tail  -f 当文件内容没有发
        生变化时,会一直向磁盘进行读取。
选项:  
 -n       #取消默认输出

34、locate

locate命令:#根据本地的数据库进行查找文件,不会查找到最新的文件,需要更新数据库才可以查到最新的文件。 
[root@zyc01 ~]# yum install -y locate   先下载安装locate命令。
选项:
           -i #不区分大小写  
  -r   #简单使用正则表达式   $ 结尾  

          /var/lib/mlocate/mlocate.db
          [root@zyc01 ~]# updatedb #更新数据库  

#把系统中所有文件名称包含passwd的文件全部查找出来:
          [root@zyc01 ~]# locate passwd
          /etc/passwd
          /etc/passwd-
          /etc/pam.d/passwd
          /etc/security/opasswd
          /root/passwd
          /usr/bin/gpasswd
          /usr/bin/grub2-mkpasswd-pbkdf2
          /usr/bin/passwd
          /usr/lib/firewalld/services/kpasswd.xml
           
-i #不区分大小写:
          [root@zyc01 ~]# locate -i hostnamectl
          /opt/HOSTNAMEctl
          /root/hostnamectl
          /usr/bin/hostnamectl
          /usr/share/bash-completion/completions/hostnamectl
          /usr/share/man/man1/hostnamectl.1.gz
          /usr/share/zsh/site-functions/_hostnamectl
           
r #简单使用正则表达式   $ 结尾
          [root@zyc01 ~]# locate -r hostname$
          /etc/hostname
          /etc/selinux/targeted/active/modules/100/hostname
          /usr/bin/hostname
          /usr/bin/nmtui-hostname
          /usr/lib64/gettext/hostname

35、which

which命令:#查找命令的绝对路径  

        [root@zyc01 ~]# which ping
        /usr/bin/ping
         
#查找命令的绝对路径时,是通过PATH环境变量中的路径进行查找  
        [root@zyc01 ~]# echo $PATH
        /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
         
         #不使用which的别名进行查找命令的绝对路径
         
#取消显示别名的返回信息:
        [root@zyc01 ~]# \which   cp
        /usr/bin/cp

        [root@zyc01 ~]# rpm -qf `which ping`   #先执行反引号内的内容。
        iputils-20160308-10.el7.x86_64
         ====
        [root@zyc01 ~]# rpm -qf /usr/bin/ping
        iputils-20160308-10.el7.x86_64

36、whereis

whereis命令:#查找系统二进制程序、man帮助文件、源代码文件,###查找不到自己创建的文件##  
选项:
      -b #只查找二进制程序文件
 -m #查找man帮助文件
 -s #查找源代码文件
     
-b #只查找二进制程序文件
          [root@zyc01 ~]# whereis   ping
          ping: /usr/bin/ping /usr/share/man/man8/ping.8.gz
         
-m #查找man帮助文件
          [root@zyc01 ~]# whereis -b ping
          ping: /usr/bin/ping
          [root@zyc01 ~]# whereis -m ping
          ping: /usr/share/man/man8/ping.8.gz

37、type

type命令:#显示命令的类型  : ##help命令可以显示系统中所有的内置命令 
选项:
    -a #显示内置命令的绝对路径  
    -p #只显示命令的绝对路径

直接使用:显示命令的路径:
        [root@zyc01 ~]# type ping  
         ping is /usr/bin/ping       #这是个安装命令,显示路径所在。
         
        [root@zyc01 ~]# type cd
         cd is a shell builtin       #这是个内置命令,查看不到绝对路径。
         
-a #显示内置命令的绝对路径,还提示命令的类型
        [root@zyc01 ~]# type -a cd
         cd is a shell builtin
         cd is /usr/bin/cd
         
-p #只显示命令的绝对路径
        [root@zyc01 ~]# type -p ping
        /usr/bin/ping
-ap #只想要内置命令的绝对路径时:使用-ap
        [root@zyc01 ~]# type -ap cd
        /usr/bin/cd

38、find +xargs +-exec

1)find命令概述

find命令:#查找和搜索文件,查找时会查找锁定位置下的所有文件,包括隐藏文件。
        可以根据文件的名称、文件大小、文件的修改时间、文件的类型、文件的权限、文件的属主属组、
        文件的目录层级进行查找

语法结构:
  选项,条件               干什么                  
命令     位置       【类型     名称】       动作(print)     默认动作就是打印

选项:
  -type #根据文件类型进行查找
f #普通文件
d #目录
l #软连接文件
s #socket文件 套接字文件  
p #管道文件
  -name #根据名称进行查找  
  -iname #查找的时候忽略大小写  

#精确查找:find 位置 -type -name
            在/etc目录下进行查找,查找类型为普通文件,名称为 hostname    
            [root@zyc01 ~]# find /etc -type f   -name "hostname"  
            /etc/hostname

#查找以hostname开头的文件:在名字后面加*号。
            [root@zyc01 ~]# find /opt/   -name "hostname*"
            /opt/hostname
            /opt/hostnamectl
             
#查找以hostname为结尾的文件:在名字前面加*号。
            [root@zyc01 ~]# find   /opt/ -name "*hostname"
            /opt/hostname
            /opt/test_hostname
             
#查找文件名称包含hostname的文件:在名字前后都加*号。
            [root@zyc01 ~]# find /opt/ -name "*hostname*"
            /opt/hostname
            /opt/hostnamectl
            /opt/test_hostname
            /opt/test_hostname.txt
             
-iname #查找的时候忽略大小写:  
            [root@zyc01 ~]# find /opt/ -type d -iname "*hostname*"
            /opt/HOSTNAMECTL

2) find根据文件名称查找

选项:
-name #根据名称查找
-i #忽略大小写   -iname
通配符  
* #所有
#匹配任意一个字符 只能匹配一个
[] #匹配中括号中的任意一个字符
[^] #排除中括号中的字符

#精确查找
        [root@zyc01 ~]# find / -name "hostnamectl"  
        /usr/bin/hostnamectl
        /usr/share/bash-completion/completions/hostnamectl
         
#查找以什么开头的
        [root@zyc01 ~]# find / -name "hostnamectl*"
        /usr/bin/hostnamectl
        /usr/share/man/man1/hostnamectl.1.gz
        /usr/share/bash-completion/completions/hostnamectl
         
#以什么为结尾的
        [root@zyc01 ~]# find / -name "*hostnamectl"
        /usr/bin/hostnamectl
        /usr/share/bash-completion/completions/hostnamectl
        /usr/share/zsh/site-functions/_hostnamectl
         
#查找包含某个字符串的查找
        [root@zyc01 ~]# touch /tmp/rrhostnamectlfg
        [root@zyc01 ~]# find / -name "*hostnamectl*"
        /tmp/rrhostnamectlfg
        /usr/bin/hostnamectl
        /usr/share/man/man1/hostnamectl.1.gz
        /usr/share/bash-completion/completions/hostnamectl
        /usr/share/zsh/site-functions/_hostnamectl
         
#忽略大小写
        [root@zyc01 ~]# touch Hostnamectl
        [root@zyc01 ~]# find / -name "*hostnamectl*"
        /tmp/rrhostnamectlfg
        /usr/bin/hostnamectl
        /usr/share/man/man1/hostnamectl.1.gz
        /usr/share/bash-completion/completions/hostnamectl
        /usr/share/zsh/site-functions/_hostnamectl
         
        [root@zyc01 ~]# find / -iname "*hostnamectl*"
        /root/Hostnamectl
        /tmp/rrhostnamectlfg
        /usr/bin/hostnamectl
        /usr/share/man/man1/hostnamectl.1.gz
        /usr/share/bash-completion/completions/hostnamectl
        /usr/share/zsh/site-functions/_hostnamectl
                 
通配符:
* :#所有
        [root@zyc01 ~]# find /root -name "hostnamectl*"
        /root/test/hostnamectla
        /root/test/hostnamectlb
        /root/test/hostnamectlc
        /root/test/hostnamectld
        /root/test/hostnamectle
        /root/test/hostnamectlf
        /root/test/hostnamectlg
        /root/test/hostnamectlo
        /root/test/hostnamectlp
        /root/test/hostnamectlq
        /root/test/hostnamectlr
        /root/test/hostnamectls
        /root/test/hostnamectlt
        /root/test/hostnamectlo123
        /root/test/hostnamectlp123
        /root/test/hostnamectlq123
        /root/test/hostnamectlr123
        /root/test/hostnamectls123
        /root/test/hostnamectlt123

?:#匹配任意一个字符,只能匹配一个字符。
        [root@zyc01 ~]# find /root -name "hostnamectl?"
        /root/test/hostnamectla
        /root/test/hostnamectlb
        /root/test/hostnamectlc
        /root/test/hostnamectld
        /root/test/hostnamectle
        /root/test/hostnamectlf
        /root/test/hostnamectlg
        /root/test/hostnamectlo
        /root/test/hostnamectlp
        /root/test/hostnamectlq
        /root/test/hostnamectlr
        /root/test/hostnamectls
        /root/test/hostnamectlt
         
[]:#匹配中括号中的任意一个字符
        [root@zyc01 ~]# find /root -name "hostnamectl[abcd]"
        /root/test/hostnamectla
        /root/test/hostnamectlb
        /root/test/hostnamectlc
        /root/test/hostnamectld
         
[^]:#排除中括号中的字符
        [root@zyc01 ~]# find /root -name "hostnamectl[^b]"
        /root/test/hostnamectla
        /root/test/hostnamectlc
        /root/test/hostnamectld
        /root/test/hostnamectle
        /root/test/hostnamectlf
        /root/test/hostnamectlg
        /root/test/hostnamectlo
        /root/test/hostnamectlp
        /root/test/hostnamectlq
        /root/test/hostnamectlr
        /root/test/hostnamectls
        /root/test/hostnamectlt

3)find根据文件类型查找

选项:
-type #根据类型进行查找
f #普通文件
d #目录
l #软链接
s #套接字 socket文件
p #管道文件
b #块设备 硬盘 硬盘分区 镜像光盘
c #字符设备

f : #查找所有的普通文件,包括隐藏文件  
        [root@zyc01 ~]# find /root   -type f  
        /root/.bash_logout
        /root/.bash_profile
        /root/.cshrc
        /root/.tcshrc
        /root/.bash_history
        /root/.lesshst
        /root/.viminfo
        /root/Hostname
        /root/Hostnamectl
        /root/test/hostnamectla
        /root/test/hostnamectlb
        /root/test/hostnamectlc
        /root/test/hostnamectld

d : #所有的目录 包括隐藏目录 也包含自己的本身
        [root@zyc01 ~]# find /root   -type d
        /root
        /root/test
        /root/.pki
        /root/.pki/nssdb

      #tree命令会把软链接也统计成目录( 因为软链接的源文件是目录 )   但是find不会 。
        [root@zyc01 ~]# tree -ad /root
        /root
        ├── opt -> /opt/
        ├── .pki
        │   └── nssdb
        └── test
        4 directories

s :#套接字 socket文件
        [root@zyc01 ~]# find /dev   -type   s
        /dev/log
       
        [root@zyc01 ~]# find /run   -type   p
        /run/systemd/inhibit/1.ref
        /run/systemd/sessions/1.ref
        /run/systemd/initctl/fifo
       
p : #管道文件
        [root@zyc01 ~]# find /root   -type l
        /root/opt

b : #块设备,硬盘,硬盘分区,镜像光盘
        [root@zyc01 ~]# find /dev   -type   b
        /dev/sda3
        /dev/sda2
        /dev/sda1
        /dev/sda
        /dev/sr0

c : #字符设备
        [root@zyc01 ~]# find /dev   -type   c
        /dev/vsock
        /dev/vcsa6
        /dev/vcs6
        /dev/vcsa5
       

4)find根据文件的大小查找

选项:
-size #根据文件大小查找
+n #大于
-n #小于
n #精确匹配

b k M G #单位

0b : #查找空文件
        [root@zyc01 ~]# find /var/log/   -size 0b  
        /var/log/tallylog
        /var/log/anaconda/ks-script-3PCKae.log
        /var/log/boot.log
        /var/log/firewalld
        /var/log/maillog-20200726
        /var/log/spooler-20200726
        /var/log/spooler
        /var/log/spooler-20200716
        /var/log/nginx/error.log
        /var/log/nginx/access.log
        /var/log/spooler-20200723
        [root@zyc01 ~]# ll /var/log/tallylog
        -rw-------. 1 root root 0 Jul  6 02:13 /var/log/tallylog
       
1k :#字节的大小在find中四舍五入,不足1k的文件按照1k处理。
      [root@zyc01 ~]# find /var/log/   -size -1k -ls
       67159586    0 -rw-------   1 root     root            0 Jul  6 02:13 /var/log/tallylog
       67563450    0 -rw-------   1 root     root            0 Jul  6 02:17 /var/log/anaconda/ks-
       67563454    0 -rw-------   1 root     root            0 Jul 27 17:35 /var/log/boot.log
       67563460    0 -rw-r--r--   1 root     root            0 Jul  6 02:17 /var/log/firewalld
       67588777    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/maillog-
       67588781    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/spooler-
       67588808    0 -rw-------   1 root     root            0 Jul 26 03:33 /var/log/spooler
       67528019    0 -rw-------   1 root     root            0 Jul  6 02:14 /var/log/spooler-
       134348936    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/
       134348938    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/
       67113674    0 -rw-------   1 root     root            0 Jul 16 03:25 /var/log/spooler-
       
      [root@zyc01 ~]# find /var/log/   -size 1k -ls #字节的大小在find中四舍五入  
       67160720    4 -rw-r--r--   1 root     root          193 Jul  6 02:13 /var/log/grubby_prune_
       681834    0 drwxr-xr-x   2 root     root           23 Jul  6 02:17 /var/log/tuned
       714023    0 drwx------   2 root     root           23 Jul  6 02:17 /var/log/audit
       67284924    0 drwxr-xr-x   2 root     root          176 Jul  6 02:17 /var/log/anaconda
       134317666    0 drwxr-xr-x   2 root     root            6 Jul  6 02:17 /var/log/rhsm
       67112876    4 -rw-r--r--   1 root     root          696 Jul  6 09:06 /var/log/vmware-network
       67112867    4 -rw-r--r--   1 root     root          678 Jul 13 16:29 /var/log/vmware-network.
       67112878    4 -rw-r--r--   1 root     root          674 Jul  6 17:07 /var/log/vmware-network.
       67112882    4 -rw-r--r--   1 root     root          678 Jul 20 19:45 /var/log/vmware-network.
       67528018    4 -rw-------   1 root     root          558 Jul 13 16:29 /var/log/maillog-202007
       134348871    0 drwxrwx---   2 nginx   root           41 Jul 20 19:50 /var/log/nginx
       67588805    4 -rw-------   1 root     root          186 Jul 27 16:30 /var/log/maillog
       67588807    4 -rw-------   1 root     root          679 Jul 27 16:30 /var/log/secure
       67112916    4 -rw-r--r--   1 root     root          678 Jul 27 16:29 /var/log/vmware-network.


      [root@zyc01 ~]# find /var/log/ -type f   -size 20k
      /var/log/cron-20200726
      [root@zyc01 ~]# find /var/log/ -type f   -size 20k -ls
       67588776   20 -rw-------   1 root     root        19815 Jul 26 03:33 /var/log/cron-20200726
       
      [root@zyc01 ~]# find /var/log/ -type f   -size 6k -ls
           75    8 -rw-r--r--   1 root     root         6085 Jul 27 16:29 /var/log/tuned/tuned.log
       67113677    8 -rw-------   1 root     root         6005 Jul 27 18:01 /var/log/cron
       67528017    8 -rw-------   1 root     root         5865 Jul 13 16:29 /var/log/secure-20200716
       67112870    8 -rw-r--r--   1 root     root         5650 Jul  6 08:52 /var/log/vmware-network.
       67112865    8 -rw-r--r--   1 root     root         5650 Jul  9 10:36 /var/log/vmware-network.


#根据范围进行查找
      [root@zyc01 ~]# find /var/log/ -type f -size +100k -size   -1000k
      /var/log/anaconda/syslog
      /var/log/anaconda/packaging.log
      /var/log/anaconda/storage.log
      /var/log/dmesg.old
      /var/log/messages-20200716
      /var/log/messages-20200723
      /var/log/messages
      /var/log/dmesg
      [root@zyc01 ~]# find /var/log/ -type f -size +100k -size   -1000k -ls
       67496291  276 -rw-------   1 root     root       281510 Jul  6 02:17 /var/log/anaconda/syslog
       67563447  112 -rw-------   1 root     root       110647 Jul  6 02:17 /var/log/anaconda/packag
       67563448  124 -rw-------   1 root     root       124184 Jul  6 02:17 /var/log/anaconda/stora
       67112877  120 -rw-r--r--   1 root     root       122832 Jul 20 19:45 /var/log/dmesg.old
       67528016  388 -rw-------   1 root     root       395555 Jul 16 03:25 /var/log/messages-20200
       67113672  148 -rw-------   1 root     root       148158 Jul 23 03:13 /var/log/messages-20200
       67588806  120 -rw-------   1 root     root       122869 Jul 27 18:01 /var/log/messages
       67112864  120 -rw-r--r--   1 root     root       122838 Jul 27 16:29 /var/log/dmesg


#四舍五入 1k
      [root@zyc01 ~]# find /var/log/ -type f -size 5k
      /var/log/vmware-network.8.log
      [root@zyc01 ~]# find /var/log/ -type f -size 5k -ls
       67112873    8 -rw-r--r--   1 root     root         4127 Jul  6 09:05 /var/log/vmware-network.


#以M为单位查找时,所有小于1M的文件都四舍五入到1M
      [root@zyc01 ~]# find /var/log/ -type f -size 1M -ls
       67160720    4 -rw-r--r--   1 root     root          193 Jul  6 02:13 /var/log/grubby_prune
       67284922   48 -rw-rw-r--   1 root     utmp        45696 Jul 27 16:30 /var/log/wtmp
       67284923    8 -rw-------   1 root     utmp         6912 Jul 23 12:09 /var/log/btmp
           75    8 -rw-r--r--   1 root     root         6085 Jul 27 16:29 /var/log/tuned/tuned.log
       67495714   28 -rw-------   1 root     root        26591 Jul  6 02:17 /var/log/anaconda/anac
       67496291  276 -rw-------   1 root     root       281510 Jul  6 02:17 /var/log/anaconda/syslog
       67563444   24 -rw-------   1 root     root        21872 Jul  6 02:17 /var/log/anaconda/X.log
       67563445   32 -rw-------   1 root     root        29721 Jul  6 02:17 /var/log/anaconda/p
       67563447  112 -rw-------   1 root     root       110647 Jul  6 02:17 /var/log/an packaglog
       67563448  124 -rw-------   1 root     root       124184 Jul  6 02:17 /var/log//storage.log
       67563449    4 -rw-------   1 root     root         4017 Jul  6 02:17 /var/log//ifcfg.log
       67563456   12 -rw-r--r--   1 root     root        10054 Jul 27 16:29 /var/log/vvmsvc.log
       67563457    8 -rw-r--r--   1 root     root         6934 Jul 27 16:29 /var/log/vgauthsvc.log.0
       67113677    8 -rw-------   1 root     root         6005 Jul 27 18:01 /var/log/cron
       67588778   12 -rw-------   1 root     root         9327 Jul 26 03:33 /var/log/messages-
       67588779   16 -rw-------   1 root     root        13606 Jul 24 12:11 /var/log/secure-20200726
       67112873    8 -rw-r--r--   1 root     root         4127 Jul  6 09:05 /var/log/network.8.log
       67112876    4 -rw-r--r--   1 root     root          696 Jul  6 09:06 /var/log/vnetwork.5.log
       67112867    4 -rw-r--r--   1 root     root          678 Jul 13 16:29 /var/log/ network.2.log
       67588799    8 -rw-------   1 root     root         8015 Jul 27 17:35 /var/log/boot.log-
       67112877  120 -rw-r--r--   1 root     root       122832 Jul 20 19:45 /var/log/dmesg.old
       67112871    4 -rw-r--r--   1 root     root         3986 Jul  6 09:05 /var/log/ network.7.log
     

      [root@zyc01 ~]# find /var/log/ -type f -size 2M -ls
       67263633   40 -rw-r--r--   1 root     root      1946764 Jul 27 16:30 /var/log/lastlog
       714345 1436 -rw-------   1 root     root      1468869 Jul 27 18:01 /var/log/audit/audit.log
       67563451 1520 -rw-------   1 root     root      1552657 Jul  6 02:17 /var/log /journal.log
      [root@zyc01 ~]# ll -h /var/log/lastlog
       -rw-r--r--. 1 root root 1.9M Jul 27 16:30 /var/log/lastlog
      [root@zyc01 ~]# ll -h /var/log/audit/audit.log
       -rw-------. 1 root root 1.5M Jul 27 18:01 /var/log/audit/audit.log
       
      [root@zyc01 ~]# find /var/log/ -type f -size +2M -ls
       67113676 5704 -rw-r--r--   1 root     root      5840292 Jul 27 17:56 /var/log/test.log
       
      [root@zyc01 ~]# find /var/log/ -type f -size 6M -ls
       67113676 5704 -rw-r--r--   1 root     root      5840292 Jul 27 17:56 /var/log/test.log
       
      [root@zyc01 ~]# find /var/log/ -type f -size +2M -size -7M  
      /var/log/test.log
       
       
      [root@zyc01 ~]# dd </dev/zero >/var/log/123.log bs=100M count=13
       13+0 records in
       13+0 records out
       1363148800 bytes (1.4 GB) copied, 28.178 s, 48.4 MB/s
      [root@zyc01 ~]# ll /var/log/123.log
       -rw-r--r-- 1 root root 1363148800 Jul 27 18:17 /var/log/123.log
      [root@zyc01 ~]# ll /var/log/123.log -h
       -rw-r--r-- 1 root root 1.3G Jul 27 18:17 /var/log/123.log
      [root@zyc01 ~]# find /var/log/ -type f -size +1G -ls
       67588811 1331200 -rw-r--r--   1 root     root     1363148800 Jul 27 18:17 /var/log/123.log
      [root@zyc01 ~]# find /var/log/ -type f -size 2G -ls
       67588811 1331200 -rw-r--r--   1 root     root     1363148800 Jul 27 18:17 /var/log/123.log
       

5)find根据文件的时间查找

选项:
-mtime #最后修改时间
+n #多少天以前
-n #多少天以内
n #具体某一天

[root@zyc01 ~]# for i in {01..27};do date -s 2020/07/$i && touch data/file-${i}.txt;done

        [root@zyc01 ~]#
        [root@zyc01 ~]# ntpdate ntp.aliyun.com
       
        [root@zyc01 ~]# ll data/
        total 0
        -rw-r--r-- 1 root root 0 Jul 10 00:00 file-10.txt
        -rw-r--r-- 1 root root 0 Jul 11 00:00 file-11.txt
        -rw-r--r-- 1 root root 0 Jul 12 00:00 file-12.txt
        -rw-r--r-- 1 root root 0 Jul 13 00:00 file-13.txt
        -rw-r--r-- 1 root root 0 Jul 14 00:00 file-14.txt
        -rw-r--r-- 1 root root 0 Jul 15 00:00 file-15.txt
        -rw-r--r-- 1 root root 0 Jul 16 00:00 file-16.txt
        -rw-r--r-- 1 root root 0 Jul 17 00:00 file-17.txt
        -rw-r--r-- 1 root root 0 Jul 18 00:00 file-18.txt
        -rw-r--r-- 1 root root 0 Jul 19 00:00 file-19.txt
        -rw-r--r-- 1 root root 0 Jul  1 00:00 file-1.txt
        -rw-r--r-- 1 root root 0 Jul 20 00:00 file-20.txt
        -rw-r--r-- 1 root root 0 Jul 21 00:00 file-21.txt
        -rw-r--r-- 1 root root 0 Jul 22 00:00 file-22.txt
        -rw-r--r-- 1 root root 0 Jul 23 00:00 file-23.txt
        -rw-r--r-- 1 root root 0 Jul 24 00:00 file-24.txt
        -rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
        -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
        -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
        -rw-r--r-- 1 root root 0 Jul  2 00:00 file-2.txt
        -rw-r--r-- 1 root root 0 Jul  3 00:00 file-3.txt
        -rw-r--r-- 1 root root 0 Jul  4 00:00 file-4.txt
        -rw-r--r-- 1 root root 0 Jul  5 00:00 file-5.txt
        -rw-r--r-- 1 root root 0 Jul  6 00:00 file-6.txt
        -rw-r--r-- 1 root root 0 Jul  7 00:00 file-7.txt
        -rw-r--r-- 1 root root 0 Jul  8 00:00 file-8.txt
        -rw-r--r-- 1 root root 0 Jul  9 00:00 file-9.txt
        [root@zyc01 ~]#
        [root@zyc01 ~]# find /root -type f   -mtime +7 #查找7天以前的
        /root/.bash_logout
        /root/.cshrc
        /root/.tcshrc
        /root/.lesshst
        /root/.vimrc
        /root/data/file-1.txt
        /root/data/file-2.txt
        /root/data/file-3.txt
        /root/data/file-4.txt
        /root/data/file-5.txt
        /root/data/file-6.txt
        /root/data/file-7.txt
        /root/data/file-8.txt
        /root/data/file-9.txt
        /root/data/file-10.txt
        /root/data/file-11.txt
        /root/data/file-12.txt
        /root/data/file-13.txt
        /root/data/file-14.txt
        /root/data/file-15.txt
        /root/data/file-16.txt
        /root/data/file-17.txt
        /root/data/file-18.txt
        /root/data/file-19.txt
        [root@zyc01 ~]# find /root -type f   -mtime 7 #查找第七天
        /root/data/file-20.txt
       
       
        [root@zyc01 ~]# find /root -type f   -mtime -7 #查找七天以内
        /root/.bash_profile
        /root/.bash_history
        /root/.viminfo
        /root/.bashrc
        /root/data/file-21.txt
        /root/data/file-22.txt
        /root/data/file-23.txt
        /root/data/file-24.txt
        /root/data/file-25.txt
        /root/data/file-26.txt
        /root/data/file-27.txt
       
        [root@zyc01 ~]# find /root -type f   -mtime +3 |xargs   rm -f
       
        [root@zyc01 ~]# find /var/log/   -type f   -size +1G -mtime -1 | xargs rm -f
       

6)find根据文件的权限查找

选项:
-perm #根据权限查找
-421 #包含这些权限
421 #精确匹配  
/421 #包含其中的某个权限   三个身份中满足一个则匹配
! #取反  
    [root@zyc01 ~]# find   /root -type f
    /root/.bash_history
    /root/.viminfo
    /root/data/file-24.txt
    /root/data/file-25.txt
    /root/data/file-26.txt
    /root/data/file-27.txt
    [root@zyc01 ~]# find   /root ! -type f #排除普通的文件的其他所有类型文件  
    /root
    /root/.pki
    /root/.pki/nssdb
    /root/data



#精确匹配
      [root@zyc01 ~]# chmod 633 data/file-24.txt
      [root@zyc01 ~]# ll data/
      total 0
      -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
      -rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
      -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
      -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
      [root@zyc01 ~]# find   data/ -type f -perm 644  
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt
      [root@zyc01 ~]# find   data/ -type f -perm 633
      data/file-24.txt


#满足查找最低权限 每个身份都有满足  
      [root@zyc01 ~]# find   data/ -type f -perm -644
      data/file-26.txt
      data/file-27.txt
      [root@zyc01 ~]# ll data/
      total 0
      -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
      -r--r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
      -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
      -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
      [root@zyc01 ~]# chmod 666 data/file-25.txt
      [root@zyc01 ~]# find   data/ -type f -perm -644
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt
     
      [root@zyc01 ~]# chmod 744 data/file-26.txt
      [root@zyc01 ~]# find   data/ -type f -perm -644
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt


#满足一个身份的某个权限就可以
      [root@zyc01 ~]# ll data/
      total 0
      -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
      -rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
      -rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
      -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
      [root@zyc01 ~]# find   data/ -type f -perm /644
      data/file-24.txt
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt
     
     
      [root@zyc01 ~]# chmod 333 data/file-24.txt
      [root@zyc01 ~]# find   data/ -type f -perm /644
      data/file-24.txt
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt
      [root@zyc01 ~]# ll data/
      total 0
      --wx-wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
      -rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
      -rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
      -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
      [root@zyc01 ~]# find   data/ -type f -perm /444
      data/file-25.txt
      data/file-26.txt
      data/file-27.txt
     
     
      [root@zyc01 ~]# find /   -perm -4000 -ls
      201418870   24 -rws--x--x   1 root     root        24048 Oct 31  2018 /usr/bin/chfn
      201418873   24 -rws--x--x   1 root     root        23960 Oct 31  2018 /usr/bin/chsh
      201369302   32 -rwsr-xr-x   1 root     root        32096 Oct 31  2018 /usr/bin/fusermount
      201418745   80 -rwsr-xr-x   1 root     root        78272 Oct 31  2018 /usr/bin/gpasswd
     
     
      [root@zyc01 ~]# find /   -perm -2000 -ls
      201368725   16 -r-xr-sr-x   1 root     tty         15344 Jun 10  2014 /usr/bin/wall
      201418931   20 -rwxr-sr-x   1 root     tty         19624 Oct 31  2018 /usr/bin/write
      201614897  376 ---x--s--x   1 root     nobody     382240 Apr 11  2018 /usr/bin/ssh-agent
      201682585   40 -rwx--s--x   1 root     slocate     40520 Apr 11  2018 /usr/bin/locate
      682454  216 -rwxr-sr-x   1 root     postdrop   218632 Oct 31  2018 /usr/sbin/postdrop
     
     
      [root@zyc01 ~]# find /   -perm -1000 -ls
      67108936    4 drwxrwxrwt  16 root     root         4096 Jul 27  2020 /tmp
      187047    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.font-unix
      67284921    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.XIM-unix
      134469085    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.ICE-unix
      201458049    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.X11-unix
     

7)find根据文件的属主属组查找

选项:
-user #根据属主
-group #根据属组
-nouser #没有属主
-nogroup #没有属组
#查找属主为ops01
      [root@zyc01 ~]# find /   -user ops01 -ls
       201696842    0 -rw-rw----   1 ops01   mail       0 Jul 24 09:08 /var/spool/mail/ops01
       67588770    0 drwx------   2 ops01   ops01       83 Jul 24 09:10 /home/ops01
       67588774    4 -rw-r--r--   1 ops01   ops01       18 Oct 31  2018 /home/ops01/.bash_logout
       67588780    4 -rw-r--r--   1 ops01   ops01       193 Oct 31  2018 /home/ops01/.bash_profile
       67588782    4 -rw-r--r--   1 ops01   ops01       231 Oct 31  2018 /home/ops01/.bashrc
       67588795    4 -rw-------   1 ops01   ops01      145 Jul 24 09:55 /home/ops01/.bash_history
       820161    4 -rw-rw-r--   1 ops01   ops_group     12 Jul 24 09:16 /data/ops01.log

#查找属主为ops01并且 属组为ops01
      [root@zyc01 ~]# find /   -user ops01 -group ops01   -ls
       67588770    0 drwx------   2 ops01   ops01   83 Jul 24 09:10 /home/ops01
       67588774    4 -rw-r--r--   1 ops01   ops01   18 Oct 31  2018 /home/ops01/.bash_logout
       67588780    4 -rw-r--r--   1 ops01   ops01  193 Oct 31  2018 /home/ops01/.bash_profile
       67588782    4 -rw-r--r--   1 ops01   ops01  231 Oct 31  2018 /home/ops01/.bashrc
       67588795    4 -rw-------   1 ops01   ops01  145 Jul 24 09:55 /home/ops01/.bash_history

# -a 并且: 可写也可不写
      [root@zyc01 ~]# find /   -user ops01 -a -group ops01   -ls
       67588770    0 drwx------   2 ops01   ops01   83 Jul 24 09:10 /home/ops01
       67588774    4 -rw-r--r--   1 ops01   ops01   18 Oct 31  2018 /home/ops01/.bash_logout
       67588780    4 -rw-r--r--   1 ops01   ops01   193 Oct 31  2018 /home/ops01/.bash_profile
       67588782    4 -rw-r--r--   1 ops01   ops01   231 Oct 31  2018 /home/ops01/.bashrc
       67588795    4 -rw-------   1 ops01   ops01   145 Jul 24 09:55 /home/ops01/.bash_history
       
      [root@zyc01 ~]# find /   -user ops01 -a -group ops_group   -ls
       67495942    0 --wx-wx-wx   1 ops01   ops_group        0 Jul 24 00:00 /root/data/file-24.txt
       820161    4 -rw-rw-r--   1 ops01   ops_group       12 Jul 24 09:16 /data/ops01.log

-o :或者 #括号前后要有空格 也需要使用转义字符进行转义    
      [root@zyc01 ~]# find /   \( -user ops01 -o -group ops_group \)   -ls
       67495942    0 --wx-wx-wx   1 ops01   ops_group    0 Jul 24 00:00 /root/data/file-24.txt
       201696842    0 -rw-rw----   1 ops01   mail        0 Jul 24 09:08 /var/spool/mail/ops01
       67588770    0 drwx------   2 ops01   ops01        83 Jul 24 09:10 /home/ops01
       67588774    4 -rw-r--r--   1 ops01   ops01        18 Oct 31  2018 /home/ops01/.bash_logout
       67588780    4 -rw-r--r--   1 ops01   ops01        193 Oct 31  2018 /home/ops01/.bash_profile
       67588782    4 -rw-r--r--   1 ops01   ops01        231 Oct 31  2018 /home/ops01/.bashrc
       67588795    4 -rw-------   1 ops01   ops01        145 Jul 24 09:55 /home/ops01/.bash_history
       818813    0 drwxrws---   3 root     ops_group      121 Jul 20 10:48 /data
       820160    4 -rw-r--r--   1 root     ops_group      5 Jul 24 09:14 /data/root.log
       820161    4 -rw-rw-r--   1 ops01   ops_group      12 Jul 24 09:16 /data/ops01.log
       820162    4 -rw-rw-r--   1 ops02   ops_group      6 Jul 24 09:15 /data/ops02.log
       818814    0 drwxrwsr-x   2 ops02   ops_group      6 Jul 24 09:21 /data/test
       820215    0 -rw-r--r--   1 root     ops_group      0 Jul 20 10:48 /data/file-20.log

#没有属主
      [root@zyc01 ~]# find /   -nouser   -ls
       201729427    0 -rw-rw----   1 666     mail            0 Jul 21 16:47 /var/spool/mail/user02
       201685422    0 -rw-rw----   1 6666     mail            0 Jul 21 16:40 /var/spool/mail/user123

#没有属组的
      [root@zyc01 ~]# find /   -nogroup   -ls
       134355712    0 -rw-------   1 root     1013     0 Jul 22 11:11 /var/db/sudo/lectured/qiudao


#没有属主也没有属组的
      [root@zyc01 ~]# userdel ops02
      [root@zyc01 ~]# ll data/file-26.txt
       67255910    0 -rwxr--r--   1 1045     1047     0 Jul 26 00:00 /root/data/file-26.txt
       134356976    0 drwx------   2 1045     1047    99 Jul 24 09:16 /home/ops02
       134356977    4 -rw-r--r--   1 1045     1047    18 Oct 31  2018 /home/ops02/.bash_logout
       134356978    4 -rw-r--r--   1 1045     1047    193 Oct 31  2018 /home/ops02/.bash_profile
       134356979    4 -rw-r--r--   1 1045     1047    231 Oct 31  2018 /home/ops02/.bashrc
       134356980    4 -rw-------   1 1045     1047    276 Jul 24 09:49 /home/ops02/.bash_history
       134356968    4 -rw-------   1 1045     1047    637 Jul 24 09:16 /home/ops02/.viminfo
       818815    0 -rw-rw-r--   1 1045     1047       0 Jul 24 09:11 /data/ops02.txt

#用括号将二者绑定在一起,交给 -ls。 否则只会显示满足nogroup的文件。
      [root@zyc01 ~]# find / \( -nouser -o -nogroup \)   -ls
       67255910    0 -rwxr--r--   1 1045     1047        0 Jul 26 00:00 /root/data/file-26.txt
       134355712    0 -rw-------   1 root     1013       0 Jul 22 11:11 /var/db/sudo/lectured/qiudao
       201729427    0 -rw-rw----   1 666     mail       0 Jul 21 16:47 /var/spool/mail/user02
       201685422    0 -rw-rw----   1 6666     mail       0 Jul 21 16:40 /var/spool/mail/user123
       201696843    0 -rw-rw----   1 1045     mail       0 Jul 24 09:08 /var/spool/mail/ops02
       134356976    0 drwx------   2 1045     1047       99 Jul 24 09:16 /home/ops02
       134356977    4 -rw-r--r--   1 1045     1047       18 Oct 31  2018 /home/ops02/.bash_logout
       134356978    4 -rw-r--r--   1 1045     1047       193 Oct 31  2018 /home/ops02/.bash_profile
       134356979    4 -rw-r--r--   1 1045     1047       231 Oct 31  2018 /home/ops02/.bashrc
       134356980    4 -rw-------   1 1045     1047       276 Jul 24 09:49 /home/ops02/.bash_history
       134356968    4 -rw-------   1 1045     1047       637 Jul 24 09:16 /home/ops02/.viminfo
       818815    0 -rw-rw-r--   1 1045     1047          0 Jul 24 09:11 /data/ops02.txt
       820162    4 -rw-rw-r--   1 1045     ops_group     6 Jul 24 09:15 /data/ops02.log
       818814    0 drwxrwsr-x   2 1045     ops_group     6 Jul 24 09:21 /data/test

8)find根据文件的目录层级查找

选项:
-maxdepth #最大的目录层级   tree -L
[root@zyc01 ~]# find /   -maxdepth 2 \( -nouser -o -nogroup \)   -ls
     134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
     818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
     820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
     818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test
    [root@zyc01 ~]# find /   -maxdepth 3 \( -nouser -o -nogroup \)   -ls
     67255910    0 -rwxr--r--   1 1045     1047            0 Jul 26 00:00 /root/data/file-26.txt
     134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
     134356977    4 -rw-r--r--   1 1045     1047           18 Oct 31  2018 /home/ops02/.bash_logout
     134356978    4 -rw-r--r--   1 1045     1047          193 Oct 31  2018 /home/ops02/.bash_profile
     134356979    4 -rw-r--r--   1 1045     1047          231 Oct 31  2018 /home/ops02/.bashrc
     134356980    4 -rw-------   1 1045     1047          276 Jul 24 09:49 /home/ops02/.bash_history
     134356968    4 -rw-------   1 1045     1047          637 Jul 24 09:16 /home/ops02/.viminfo
     818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
     820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
     818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test

9)Find的执行的动作

-print      #默认的动作 打印你所查找出来的文件的名称 
-ls #把查找出来的文件以长格形式显示出来文件的详细信息
-delete #把查找出来的文件进行删除 只能删除空目录
-exec #后面加自定义的shell命令

      [root@zyc01 ~]# find /   -maxdepth 2 \( -nouser -o -nogroup \)  
      /home/ops02
      /data/ops02.txt
      /data/ops02.log
      /data/test

-print :#默认的动作 打印你所查找出来的文件的名称
      [root@zyc01 ~]# find /   -maxdepth 2 \( -nouser -o -nogroup \)   -print
      /home/ops02
      /data/ops02.txt
      /data/ops02.log
      /data/test
       
-ls:#把查找出来的文件以长格形式显示出来文件的详细信息
      [root@zyc01 ~]# find /   -maxdepth 2 \( -nouser -o -nogroup \)   -ls
       134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
       818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
       820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
       818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test
       
-delete:#把查找出来的文件进行删除 只能删除空目录
      [root@zyc01 ~]# find /opt/   -type d -name "opt"
      /opt/
      [root@zyc01 ~]# ll /opt/
      total 0
      [root@zyc01 ~]# cp /etc/hosts /opt/
      [root@zyc01 ~]# find /opt/   -type d -name "opt" -delete
       find: cannot delete ‘/opt/’: Directory not empty
      [root@zyc01 ~]# ll /opt/
      total 4
       -rw-r--r-- 1 root root 158 Jul 27 12:11 hosts
       
      [root@zyc01 ~]# find /opt/   -type f -name "hosts" -delete
      [root@zyc01 ~]# ll /opt/
      total 0
      [root@zyc01 ~]# find /opt/   -type d -name "opt" -delete
       
       
      [root@zyc01 ~]# find /root/data/     -type f    
      /root/data/file-24.txt
      /root/data/file-25.txt
      /root/data/file-26.txt
      /root/data/file-27.txt
      [root@zyc01 ~]# find /root/data/     -type f     -delete
      [root@zyc01 ~]# ll data/
      total 0

#把某个目录下七天以前的数据删除

      [root@zyc01 ~]# find /backup   -type f -mtime +7 -delete

      [root@zyc01 ~]# find /var/log/ -type f -name "*.log" -exec cp {} /opt/ \;  
      [root@zyc01 ~]# ll /opt/
      total 9076
       -rw-r--r-- 1 root root       0 Jul 27 12:17 access.log
       -rw------- 1 root root   26591 Jul 27 12:17 anaconda.log
       -rw------- 1 root root 1485709 Jul 27 12:17 audit.log
       -rw------- 1 root root       0 Jul 27 12:17 boot.log
       -rw-r--r-- 1 root root       0 Jul 27 12:17 error.log
       -rw------- 1 root root    4017 Jul 27 12:17 ifcfg.log
       -rw------- 1 root root 1552657 Jul 27 12:17 journal.log
       -rw------- 1 root root       0 Jul 27 12:17 ks-script-3PCKae.log
       -rw------- 1 root root  110647 Jul 27 12:17 packaging.log
       -rw------- 1 root root   29721 Jul 27 12:17 program.log
       -rw------- 1 root root  124184 Jul 27 12:17 storage.log
       -rw-r--r-- 1 root root 5840292 Jul 27 12:17 test.log

10)Find命令跟xargs 和 -exec 的配合

1.xargs :让不支持管道技术的命令支持。将前面输出的结果以文件的形式给后面的命令

      [root@zyc01 ~]# find /var/log/ -type f -name "*.log" | xargs cp -t /opt/a  
      [root@zyc01 ~]# ll /opt/a
      total 9076
       -rw-r--r-- 1 root root       0 Jul 27 12:22 access.log
       -rw------- 1 root root   26591 Jul 27 12:22 anaconda.log
       -rw------- 1 root root 1485709 Jul 27 12:22 audit.log
       -rw------- 1 root root       0 Jul 27 12:22 boot.log
       -rw-r--r-- 1 root root       0 Jul 27 12:22 error.log
       -rw------- 1 root root    4017 Jul 27 12:22 ifcfg.log
       -rw------- 1 root root 1552657 Jul 27 12:22 journal.log
       
       
      [root@zyc01 ~]# find /var/log/ -type f -name "*.log" | xargs -I {} cp {} /opt/b  
      [root@zyc01 ~]# ll /opt/b
      total 9076
       -rw-r--r-- 1 root root       0 Jul 27 12:23 access.log
       -rw------- 1 root root   26591 Jul 27 12:23 anaconda.log
       -rw------- 1 root root 1485709 Jul 27 12:23 audit.log
       -rw------- 1 root root       0 Jul 27 12:23 boot.log
       -rw-r--r-- 1 root root       0 Jul 27 12:23 error.log
       -rw------- 1 root root    4017 Jul 27 12:23 ifcfg.log
       
       
      [root@zyc01 ~]# cp `find /var/log/ -type f -name "*.log"` /opt/c
      [root@zyc01 ~]# ll /opt/c
      total 9076
       -rw-r--r-- 1 root root       0 Jul 27 12:24 access.log
       -rw------- 1 root root   26591 Jul 27 12:24 anaconda.log
       -rw------- 1 root root 1485709 Jul 27 12:24 audit.log
       -rw------- 1 root root       0 Jul 27 12:24 boot.log
       -rw-r--r-- 1 root root       0 Jul 27 12:24 error.log
       -rw------- 1 root root    4017 Jul 27 12:24 ifcfg.log
       -rw------- 1 root root 1552657 Jul 27 12:24 journal.log
       
       
      [root@zyc01 ~]# \cp $(find /var/log/ -type f -name "*.log") /opt/c
       
       
$()   ==  `` (反引号)    #优先执行里面的命令 把命令执行的结果交给外面的命令
       
      [root@zyc01 ~]# find /var/log/ -type f -name "*.log" |xargs ls -l
       -rw-------. 1 root root   26591 Jul  6 02:17 /var/log/anaconda/anaconda.log
       -rw-------. 1 root root    4017 Jul  6 02:17 /var/log/anaconda/ifcfg.log
       -rw-------. 1 root root 1552657 Jul  6 02:17 /var/log/anaconda/journal.log
       -rw-------. 1 root root       0 Jul  6 02:17 /var/log/anaconda/ks-script-3PCKae.log
       -rw-------. 1 root root  110647 Jul  6 02:17 /var/log/anaconda/packaging.log
       -rw-------. 1 root root   29721 Jul  6 02:17 /var/log/anaconda/program.log
       
      [root@zyc01 ~]# find /opt/a   -type f -name "*.log" |xargs rm -f  
      [root@zyc01 ~]# ll /opt/a
      total 0
       
#2. find+ -exec
(1)在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
find ./ -name "*.txt" -exec grep "bin" {} \;
(2)在当前目录下(包含子目录),删除所有txt文件
find ./ -name "*.txt" -exec rm {} \;        
       
xargs和-exec区别:
总结
相比之下,也不难看出各自的缺点
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \; 作为命令的结束符,书写不便。
3、xargs 不能操作文件名有空格的文件;

4、exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数

5、exec文件名有空格等特殊字符也能处理;xargs不能处理特殊文件名,如果想处理特殊文件名需要特殊处理

综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,
那么使用 xargs比较方便; 否则,就要用 exec了。

39、rz

rz命令: #将本地的文件上传到Linux操作系统     
       #不能上传目录,需要将目录打成一个压缩包进行上传,只能上传4G以下的文件
       #执行命令后,会跳出一个Windows界面的窗口,选择你要上传的文件。  
      [root@zyc01 ~]# yum install -y lrzsz         #先安装命令
选项:
-E #当上传的文件已经存在时,系统会进行重命名 ,会在原来的文件名称后面加上.数字,从0开始。
  root@qls ~]# rz -E
      [root@zyc01 ~]# ll
      total 32
       -rw-r--r--. 1 root root 13140 Jul  7 12:23 day03.md
       -rw-r--r--. 1 root root 13140 Jul  7 12:23 day03.md.0

40、sz

sz命令
#将Linux系统的文件下载到本地
#执行命令后,会跳出一个Windows界面的窗口,选择你要将文件保存在何处。
      [root@zyc01 ~]# sz /etc/hosts

41、wget

wget命令  联网下载。需要知道URL地址:
[root@zyc01 ~]# yum install -y wget     #先安装命令
选项:  
      -O            #指定下载的路径和名称  
 -q            #静默输出  
 --limit-rate=10k #限制下载的速率:     k ===KB   m == MB
 
#直接加网址,会下载该网站的主页,下载完成后,直接保存在当前目录。
    [root@zyc01 ~]# wget http://www.baidu.com
          --2020-07-10 11:57:50-- http://www.baidu.com/
          Resolving www.baidu.com (www.baidu.com)... 112.80.248.75, 112.80.248.76
          Connecting to www.baidu.com (www.baidu.com)|112.80.248.75|:80... connected.
          HTTP request sent, awaiting response... 200 OK
          Length: 2381 (2.3K) [text/html]
          Saving to: ‘index.html’
         
          100%[===============================================================================>]
          2,381       --.-K/s   in 0.008s  
         
          2020-07-10 11:57:51 (290 KB/s) - ‘index.html’ saved [2381/2381]
         
#下载安装包:直接加URL地址,下载完成后,默认保存在当前文件夹。
          [root@zyc01 ~]# wget   http://nginx.org/download/nginx-1.18.0.tar.gz
          --2020-07-10 12:00:16-- http://nginx.org/download/nginx-1.18.0.tar.gz
          Resolving nginx.org (nginx.org)... 95.211.80.227, 62.210.92.35,
          2001:1af8:4060:a004:21::e3
          Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
          HTTP request sent, awaiting response... 200 OK
          Length: 1039530 (1015K) [application/octet-stream]
          Saving to: ‘nginx-1.18.0.tar.gz’
         
          100%[===============================================================================>]
          1,039,530   282KB/s   in 3.6s  
         
          2020-07-10 12:00:20 (282 KB/s) - ‘nginx-1.18.0.tar.gz’ saved [1039530/1039530]
         
          [root@zyc01 ~]# ll
          total 1020
          -rw-r--r--. 1 root root    2381 Jul 10 11:57 index.html
          -rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz
         
-O #指定下载的路径和名称             指定的路径和名称               下载地址
          [root@zyc01 ~]# wget -O /opt/nginx.tar.gz http://nginx.org/download/nginx-
          1.18.0.tar.gz
          --2020-07-10 12:01:41-- http://nginx.org/download/nginx-1.18.0.tar.gz
          Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227,
          2001:1af8:4060:a004:21::e3
          Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
          HTTP request sent, awaiting response... 200 OK
          Length: 1039530 (1015K) [application/octet-stream]
          Saving to: ‘/opt/nginx.tar.gz’
         
          100%[===============================================================================>]
          1,039,530   272KB/s   in 3.7s  
         
          2020-07-10 12:01:46 (272 KB/s) - ‘/opt/nginx.tar.gz’ saved [1039530/1039530]
         
          [root@zyc01 ~]# ll /opt/
          total 1016
          -rw-r--r--. 1 root root       0 Jul 10 10:32 hostname
          -rw-r--r--. 1 root root       0 Jul 10 10:32 hostnamectl
          drwxr-xr-x. 2 root root       6 Jul 10 10:39 HOSTNAMECTL
          -rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx.tar.gz
         
-q #静默输出,下载时不出现下载过程。
          [root@zyc01 ~]# wget -q http://nginx.org/download/nginx-1.19.1.tar.gz
          [root@zyc01 ~]# ll
          total 2100
          -rw-r--r--. 1 root root   41240 Mar 23 00:20 032220_1620_Zabbix1.png
          -rw-r--r--. 1 root root    9810 Jul  8 00:06 download.html
          -rw-r--r--. 1 root root    2381 Jul 10 11:57 index.html
          -rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz
          -rw-r--r--. 1 root root 1047223 Jul  7 23:59 nginx-1.19.1.tar.gz
         
--limit-rate=10k :#限制下载的速率为10k:
          [root@zyc01 ~]# wget   --limit-rate=10k   http://nginx.org/download/nginx-1.18.0.tar.gz
          --2020-07-10 12:11:13-- http://nginx.org/download/nginx-1.18.0.tar.gz
          Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227,
          2001:1af8:4060:a004:21::e3
          Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
          HTTP request sent, awaiting response... 200 OK
          Length: 1039530 (1015K) [application/octet-stream]
          Saving to: ‘nginx-1.18.0.tar.gz’
         
          32% [========================>                                                       ]
          335,872     10.0KB/s eta 70s  

42、curl

curl命令:#1.通过url规则进行文件传输的工具。类似于Linux的浏览器,可以查看网页源码。
        #2.多用来测试网站而使用的命令  
选项:
       -o #将访问的数据内容写入到指定的文件中
       -s #静默输出  
       
-o :#将访问的数据内容写入到指定的文件中
          [root@zyc01 ~]# curl -o ./baidu.html   www.baidu.com
            % Total   % Received % Xferd Average Speed   Time   Time     Time Current
                                          Dload Upload   Total   Spent   Left Speed
          100  2381  100  2381    0     0    311      0  0:00:07  0:00:07 --:--:--   657
          [root@zyc01 ~]# ll
          total 1356
          -rw-r--r--. 1 root root    2381 Jul 10 12:15 baidu.html

-s :#静默输出:不显示下载的过程
          [root@zyc01 ~]# curl -s   -o   ./nginx.tar.gz   http://nginx.org/download/nginx-
          1.18.0.tar.gz

Day07

43、sort

sort命令:#排序,将不相同的行进行排序,默认是根据第一列进行排序,默认是以空白字符为分割符,默认以字母进行排序。
选项:
    -k #指定为哪一列排序  
    -n #以数值大小的方式进行排序
    -r #倒叙排序  
    -t #指定分割符  
   
#新建一组数列显示如下:
        [root@zyc01 ~]# cat sort.txt
        b   5
        c   3
        a   11
        f   2
        d   9
         
#默认以字母进行排序:
        [root@zyc01 ~]# sort sort.txt
        a   11
        b   5
        c   3
        d   9
        f   2

-k #指定为哪一列排序:
        [root@zyc01 ~]# sort -k2   sort.txt
        a   11
        f   2
        c   3
        b   5
        d   9

-n #以数值大小的方式进行排序:
        [root@zyc01 ~]# sort -nk2   sort.txt
        f   2
        c   3
        b   5
        d   9
        a   11

-r #倒叙排序:
        [root@zyc01 ~]# sort -rnk2 sort.txt
        a   11
        d   9
        b   5
        c   3
        f   2
         
-t #指定分割符:指定“ :”为分隔符。
        [root@zyc01 ~]# sort -t ":" -nk3 passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin

44、uniq

uniq命令:#去重:去除重复的行(只能去除相同相邻的行);统计:将重复的行的次数统计出来,跟sort结合使用。  
        #跟sort结合使用时使用管道符“ | ”:将前面命令执行的结果交给后面的命令继续执行,操作的是数据。  
选项:
     -c #统计重复行的次数

          [root@zyc01 ~]# sort file.txt
          123
          123
          123
          456
          abc
          abc
          edf
         
直接使用:
          [root@zyc01 ~]# sort file.txt | uniq  
          123
          456
          abc
          edf

-c #统计重复行的次数 :
          [root@zyc01 ~]# sort file.txt | uniq -c
                3 123
                1 456
                2 abc
                1 edf
         
#统计完重复行的数量之后再交给sort排序。
          [root@zyc01 ~]# sort file.txt | uniq -c | sort  
                1 456
                1 edf
                2 abc
                3 123
          [root@zyc01 ~]# sort file.txt | uniq -c | sort -n
                1 456
                1 edf
                2 abc
                3 123
          [root@zyc01 ~]# sort file.txt | uniq -c | sort -rn
                3 123
                2 abc
                1 edf
                1 456

45、cut

cut命令:#取列:awk命令的小弟,默认的分隔符为tab键。 
选项:
     -d #指定分隔符
     -f #取出指定的列
     -c #取出指定的字符,按照行进行处理的  

#新建一组数列:
        [root@zyc01 ~]# echo "root:x:0:0:root:/root:/bin/bash" >test.txt
        [root@zyc01 ~]# cat test.txt
        root:x:0:0:root:/root:/bin/bash
         
-d #指定“ :”为分隔符:
-f #取出指定的列:后加数字。
         #取出第七列
        [root@zyc01 ~]# cut -d ":" -f7   test.txt
        /bin/bash
         
         #取出第一列和第七列
        [root@zyc01 ~]# cut -d ":" -f1,7   test.txt
        root:/bin/bash
         
         #取出第五列到第七列
        [root@zyc01 ~]# cut -d ":" -f5-7   test.txt
        root:/root:/bin/bash
         
        [root@zyc01 ~]# cut -d ":" -f7   passwd
        /bin/bash
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /bin/sync
        /sbin/shutdown
        /sbin/halt
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
       
#指定“ :”为分隔符,取出第7列后,把结果交给sort排序:
        [root@zyc01 ~]# cut -d ":" -f7   passwd | sort  
        /bin/bash
        /bin/sync
        /sbin/halt
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/shutdown

#指定“ :”为分隔符,取出第7列后,把结果交给sort排序,并使用uniq去重:
        [root@zyc01 ~]# cut -d ":" -f7   passwd | sort   | uniq
        /bin/bash
        /bin/sync
        /sbin/halt
        /sbin/nologin
        /sbin/shutdown
         
#指定“ :”为分隔符,取出第7列后,把结果交给sort排序,并使用uniq去重,统计重复行数。
        [root@zyc01 ~]# cut -d ":" -f7   passwd | sort   | uniq -c
               1 /bin/bash
               1 /bin/sync
               1 /sbin/halt
              14 /sbin/nologin
               1 /sbin/shutdown
               
#指定“ :”为分隔符,取出第7列后,把结果交给sort排序,再使用uniq去重统计重复行数,再使用sort按照数字排序:
        [root@zyc01 ~]# cut -d ":" -f7   passwd | sort   | uniq -c | sort -n
               1 /bin/bash
               1 /bin/sync
               1 /sbin/halt
               1 /sbin/shutdown
              14 /sbin/nologin
             
#指定“ :”为分隔符,取出第7列后,把结果交给sort排序,再使用uniq去重统计重复行数,再使用sort按照数字排倒序:  
        [root@zyc01 ~]# cut -d ":" -f7   passwd | sort   | uniq -c | sort -rn
              14 /sbin/nologin
               1 /sbin/shutdown
               1 /sbin/halt
               1 /bin/sync
               1 /bin/bash
         
-c #取出指定的字符,按照行进行处理的
        [root@zyc01 ~]# cat test.txt
        root:x:0:0:root:/root:/bin/bash
        [root@zyc01 ~]# cut -c 6 test.txt
        x
   
#取出不同的字符
        [root@zyc01 ~]# cut -c 6,8 test.txt
        x0
         
#取出连续的字符  
        [root@zyc01 ~]# cut -c 1-4 test.txt
        root
                 
#取出系统eth0的IP地址步骤:
     #1.显示头eth0文件信息:
        [root@zyc01 ~]# ifconfig eth0
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
                ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
                RX packets 1634 bytes 464970 (454.0 KiB)
                RX errors 0 dropped 0 overruns 0 frame 0
                TX packets 1033 bytes 114568 (111.8 KiB)
                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
                 
      #2.使用head命令显示头两行,
        [root@zyc01 ~]# ifconfig eth0 | head -2
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                 
      #3.使用tail命令显示两行中的尾行。        
        [root@zyc01 ~]# ifconfig eth0 | head -2 | tail -1
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
      #4.使用cut命令,指定空格为分隔符,取出第十列。      
        [root@zyc01 ~]# ifconfig eth0 | head -2 | tail -1 | cut -d " " -f10
         10.0.0.100

46、tr

tr命令:#替换,删除。sed的小弟,只能单对单的替换:一个字符一个字符的替换。
选项:
    -d #删除指定的字符
   
语法:tr   old   new   <   file  
    <    #标准输入重定向

        [root@zyc01 ~]# cat test.txt
        root:x:0:0:root:/root:/bin/bash
#使用0替换9
        [root@zyc01 ~]# tr "0" "9" < test.txt
        root:x:9:9:root:/root:/bin/bash
       
#-d #删除指定的字符:将句中的o,全部删除。
        [root@zyc01 ~]# tr -d "o" < test.txt
        rt:x:0:0:rt:/rt:/bin/bash

#使用替换字符的方式取出ip地址步骤:
     #1.显示ip地址:
        [root@zyc01 ~]# ip a s eth0
        2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc state UP group default qlen 1000
            link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
              valid_lft forever preferred_lft forever
            inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
              valid_lft forever preferred_lft forever
     #2.取出ip地址所在行:
        [root@zyc01 ~]# ip a s eth0 | head -3 | tail -1
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
     #3.将行中/用空格替换:
        [root@zyc01 ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' '
            inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
     #4.使用cut命令,指定空格为分隔符,取出第6列。
        [root@zyc01 ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' ' | cut -d " " -f6
        10.0.0.100

47、wc

wc命令:#统计功能:可以统计行数、字节总数、列总数和最长行的长度(字符总数)。  
选项:
    -l #统计行数
    -w #统计列数,默认以空白字符为分隔符
    -c #统计字节数
    -L #统计文件中最长行的长度(字符总数)

#直接使用,显示行数、列总数和字节总数。
        [root@zyc01 ~]# cat /etc/hosts
         127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
        [root@zyc01 ~]# wc /etc/hosts
         2  10 158 /etc/hosts
         
-l #统计行数:
        [root@zyc01 ~]# wc -l /etc/hosts
         2 passwd
         
-w #统计列数,默认以空白字符为分隔符:
        [root@zyc01 ~]# wc -w /etc/hosts
         10 /etc/hosts

-c #统计字节数:
        [root@zyc01 ~]# wc -c /etc/hosts
         158 /etc/hosts
         
-L #统计文件中最长的行的长度(字符数):
        [root@zyc01 ~]# wc -L /etc/hosts
         78 /etc/hosts
         
     #wc -L功能在变量中使用多
        [root@zyc01 ~]# name=ewuighrtuighwiorteugh
        [root@zyc01 ~]# echo $name
        ewuighrtuighwiorteugh
        [root@zyc01 ~]# echo $name | wc -L
         21        

48. grep

grep命令:#过滤的作用:给过滤出来的内容加上颜色,按照行进行处理的。 
#选项:
    -n #显示出过滤出来的所在文件的行号
    -v #排除,取反
    -c #统计过滤出来的内容的总行数
    -i #过滤的时候忽略大小写  
    -o #只显示你要过滤的内容
    -w #精确匹配 只过滤你要过滤的单词,而不是包含这个单词的字符串  
    -r #递归过滤,针对目录进行操作  
    -A #显示出你要过滤的内容及向下多少行的内容
    -B #显示出你要过滤的内容及向上多少行的内容
    -C #显示出你要过滤的内容向上向下各多少行
    -l     #过滤出文件内容里包含指定字符串的文件
^ #以什么开头
$ #以什么为结尾
-E #支持扩展正则   ==== egrep
    | # 或者 ,扩展正则  
    . #任意一个字符,排除换行符。  
    * #前面的字符出现0次或者0次以上  
  .* #所有  

直接使用:
        [root@zyc01 ~]# grep 'root' passwd
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
         
-n #显示出过滤出来的内容所在文件的行号:
        [root@zyc01 ~]# grep -n 'root' passwd
         1:root:x:0:0:root:/root:/bin/bash
         10:operator:x:11:0:operator:/root:/sbin/nologin
         
-v #排除,取反:显示除了输入的内容以外的所有内容:
        [root@zyc01 ~]# grep -v 'root' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
           
-c #统计过滤出来的内容的总行数:
        [root@zyc01 ~]# grep -c 'root' passwd
         2
             
-i #过滤的时候忽略大小写
        [root@zyc01 ~]# grep -i "root" passwd
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
        ROOT
         
-o #只显示你要过滤的内容:
        [root@zyc01 ~]# grep -o 'root' passwd
        root
        root
        root
        root
         
-w #精确匹配,只过滤你要过滤的单词,而不是包含这个单词的字符串:
        [root@zyc01 ~]# grep -w 'root' passwd
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
         
        [root@zyc01 ~]# ifconfig eth0
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
                ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
                RX packets 3778 bytes 648285 (633.0 KiB)
                RX errors 0 dropped 0 overruns 0 frame 0
                TX packets 2329 bytes 260396 (254.2 KiB)
                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
         
        [root@zyc01 ~]# ifconfig eth0 | grep inet
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
        [root@zyc01 ~]# ifconfig eth0 | grep -w inet
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
        [root@zyc01 ~]#
         
-r #递归过滤,针对目录进行操作:r不分大小写。
        [root@zyc01 ~]# grep -r 'root' ./
        ./passwd:root:x:0:0:root:/root:/bin/bash
        ./passwd:operator:x:11:0:operator:/root:/sbin/nologin
        ./passwd:roottttt
        ./test.txt:root:x:0:0:root:/root:/bin/bash
        ./data/test.txt:root
        ./test/test.txt:root
        ./backup/test.txt:root

        [root@zyc01 ~]# grep -R 'root' ./
        ./passwd:root:x:0:0:root:/root:/bin/bash
        ./passwd:operator:x:11:0:operator:/root:/sbin/nologin
        ./passwd:roottttt
        ./test.txt:root:x:0:0:root:/root:/bin/bash
        ./data/test.txt:root
        ./test/test.txt:root
        ./backup/test.txt:root
         
-A #显示出你要过滤的内容及向下多少行的内容:
        [root@zyc01 ~]# grep -A 4 'sync' passwd
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
-B #显示出你要过滤的内容及向上多少行的内容:
        [root@zyc01 ~]# grep -B 4 'sync' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
         
-C #显示出你要过滤的内容及向上向下多少行的内容:
        [root@zyc01 ~]# grep -C 4 'sync' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
^ #以什么开头:
        [root@zyc01 ~]# grep 'root' passwd
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
        roottttt
        [root@zyc01 ~]# grep '^root' passwd
        root:x:0:0:root:/root:/bin/bash
        roottttt
         
$ #以什么为结尾:
        [root@zyc01 ~]# grep 't$' passwd
        halt:x:7:0:halt:/sbin:/sbin/halt
        roottttt
         
-E #支持扩展正则   ==== egrep
        [root@zyc01 ~]# grep -E 'adm|mail' passwd   # | 表示“或”。
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         ====
        [root@zyc01 ~]# egrep 'adm|mail' passwd
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         
#取出文件中的第5行到第15行 :
   #1.第一种方法
        [root@zyc01 ~]# head -15 passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
         
        [root@zyc01 ~]# head -15 passwd | tail -11
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
         
   #1.第二种方法
        #第一步:
        [root@zyc01 ~]# grep -n '.*' passwd
         1:root:x:0:0:root:/root:/bin/bash
         2:bin:x:1:1:bin:/bin:/sbin/nologin
         3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4:adm:x:3:4:adm:/var/adm:/sbin/nologin
         5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6:sync:x:5:0:sync:/sbin:/bin/sync
         7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8:halt:x:7:0:halt:/sbin:/sbin/halt
         9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         10:operator:x:11:0:operator:/root:/sbin/nologin
         11:games:x:12:100:games:/usr/games:/sbin/nologin
         12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
         13:nobody:x:99:99:Nobody:/:/sbin/nologin
         14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
         15:dbus:x:81:81:System message bus:/:/sbin/nologin
         16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
         17:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
         18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         19:ROOT
         20:roottttt
       #第二步:
        [root@zyc01 ~]# grep -n '.*' passwd | grep -w '^5'
         5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
       #第三步:  
        [root@zyc01 ~]# grep -n '.*' passwd | grep -wA 10 '^5'
         5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6:sync:x:5:0:sync:/sbin:/bin/sync
         7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8:halt:x:7:0:halt:/sbin:/sbin/halt
         9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         10:operator:x:11:0:operator:/root:/sbin/nologin
         11:games:x:12:100:games:/usr/games:/sbin/nologin
         12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
         13:nobody:x:99:99:Nobody:/:/sbin/nologin
         
| # 或者 ,扩展正则。
        [root@zyc01 ~]# grep -n '.*' passwd   | grep -Ew   '^8|^10'
         8:halt:x:7:0:halt:/sbin:/sbin/halt
         10:operator:x:11:0:operator:/root:/sbin/nologin
         
-l #过滤出文件内容里包含指定字符串的文件
[root@hao ~]# grep -rl "expect" /root/  
/root/.bash_history         #root目录里的文件哪些包含“expect”字符串
/root/hao.sh

Day08

49、 sed

sed命令: #擅长增、删、改、查、替换,后向引用
选项:
     -n #取消默认输出       #默认输出整体内容
     -r #支持扩展正则使用
     -i #真实改变文件内容  
     -e #允许多项编辑  
  内部指令:
        查: p      #print 打印
        删:   d      #删除 排除
        增:   a      #追加 将内容追加指定内容的后面
        插:   i      #插入 将内容插入到指定的内容的前面  
        改:   s      #替换
                g      #全局
                i      #忽略大小写
                \n     #换行
                \t     #tab

1)、查:过滤

1、#查:过滤 :内部指令为“ p ”.
-n 取消默认输出。
        [root@zyc01 ~]# sed -n   '/root/p' passwd     #取消整体输出,只输出含有“root”的行。
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
        roottttt

        [root@zyc01 ~]# sed -n   '/^root/p' passwd     #输出以“root”为开头的行。
        root:x:0:0:root:/root:/bin/bash
        roottttt

-r #支持扩展正则使用
        [root@zyc01 ~]# sed -nr '/root|sshd/p' passwd #支持扩展正则:| 或。
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        roottttt

  1.1#打印不连续的内容: 使用 “ ;”号隔开,打印A和B。
        [root@zyc01 ~]# sed -n '/sync/p;/mail/p' passwd
        sync:x:5:0:sync:/sbin:/bin/sync
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         
  1.2#打印某个字符串到某个字符串的所有内容 :使用 “ ,”号隔开。从A到B。前一个p不用写。
        [root@zyc01 ~]# sed -n '/sync/,/mail/p' passwd
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         
2、#以行来打印:
  2.1#打印单行。
        [root@zyc01 ~]# sed -n '1p' passwd
        root:x:0:0:root:/root:/bin/bash
         
  2.2#打印连续的行:使用 “ ,”号隔开。打印1到3行。前一个p不用写。
        [root@zyc01 ~]# sed -n '1,3p' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
         
  2.3#打印不连续的行:使用 “ ;”号隔开
        [root@zyc01 ~]# sed -n '1p;3p' passwd
        root:x:0:0:root:/root:/bin/bash
        daemon:x:2:2:daemon:/sbin:/sbin/nologin

2)、删:排除

删:排除 ,内部指令为“ d ”.
1.#以字符串来删除:
  1.1#删除包含root字符串的行  
        [root@zyc01 ~]# sed '/root/d' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt

  1.2#删除不连续的字符串:删除多个字符串:使用“ ;”隔开。两个字符串所在行一起删除,即删除A和B。  
        [root@zyc01 ~]# sed '/root/d;/lp/d' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
   
  1.3#删除连续的字符串:使用“ ,”隔开; 两个字符串之间的行一起删除:删除从A到B。前一个d 不用写。
        [root@zyc01 ~]# sed '/adm/,/games/d' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         
2.#以行来删除:
  2.1#删除单行:
        [root@zyc01 ~]# sed '1d' passwd   #删除第一行
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
         
  2.2#删除连续的行:中间用“ ,”隔开。前一个d不用写。即删除从1到10行。
        [root@zyc01 ~]# sed '1,10d' passwd
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         
  2.3#删除不连续的行:删除1和10行。  
        [root@zyc01 ~]# sed '1d;10d' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync

  2.4#删除第一行到最后一行   以 “$” 表示结尾
        [root@zyc01 ~]# sed '1,$d' passwd
        [root@zyc01 ~]#
         
3.#加选项“ -i ”是对文件内容的真是修改。慎用。例如:删除从1行到10行。
        [root@zyc01 ~]# sed -i '1,10d' passwd
         
4#排除空行:删除空行:“空行不是有空格的行”。
        ^ #以什么开头
         $ #以什么为结尾  
        ^$ #空行:排除有空格或者tab键的空行  
第一种方式:使用grep -v。      
        [root@zyc01 ~]# grep -v '^$' sshd_config
         # $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
         # This is the sshd server system-wide configuration file. See
         # sshd_config(5) for more information.
         # This sshd was compiled with PATH=/usr/local/bin:/usr/bin
         # The strategy used for options in the default sshd_config shipped
         # OpenSSH is to specify options with their default value where
         # possible, but leave them commented. Uncommented options override
         # default value.
         # If you want to change the port on a SELinux system,
         
第二种方式:将空行删除即可:
        [root@zyc01 ~]# sed '/^$/d'   sshd_config
         # $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
         # This is the sshd server system-wide configuration file. See
         # sshd_config(5) for more information.
         # This sshd was compiled with PATH=/usr/local/bin:/usr/bin
         # The strategy used for options in the default sshd_config shipped
         # OpenSSH is to specify options with their default value where
         # possible, but leave them commented. Uncommented options override        

3)、增:添加内容

1.#增:添加内容到文件中:#内部指令为“ a ” ,追加。
  1.1#将内容追加第五行的后面:
        [root@zyc01 ~]# sed '5aoldboy' passwd :“a”后不用加空格。
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        oldboy
        sync:x:5:0:sync:/sbin:/bin/sync
         
   1.2#将内容追加到文件的底部:使用“$”,表示在结尾。
        [root@zyc01 ~]# sed '$aoldboy' passwd
        systemd-network:x:192:192:systemd Network:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
         
   1.3#追加多行内容到文件第10行中:使用 \n 换行符,或者\t tab键,
        [root@zyc01 ~]# sed '10aoldboy\noldgirl' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        oldboy
        oldgirl
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
         
-i #真是追加到文件中加上-i选项:
        [root@zyc01 ~]# sed -i '$aoldboy' passwd
         
    1.4 #根据字符串进行追加内容  
        [root@zyc01 ~]# sed '/sshd/aoldboy' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        sshd:x:74:74:Privilege SSH:/var/empty/sshd:/sbin/nologin
        oldboy
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
         
2.#插入 :(使用内部指令 i)
  2.1#在第一行的前面插入内容  
        [root@zyc01 ~]# sed   '1ioldboy' passwd
        oldboy
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
         
  2.2#在最后一行的前面插入内容:使用“$”,表示结尾。
        [root@zyc01 ~]# sed '$iold' passwd
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        old
        oldboy
         
  2.3#在第一行前面插入多行内容:使用 \n。  
        [root@zyc01 ~]# sed '1ioldboy\noldgirl' passwd
        oldboy
        oldgirl
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
         
  2.4#在目标字符串前面一行插入
        [root@zyc01 ~]# sed '/root/inew' passwd
        new
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        new
        operator:x:11:0:operator:/root:/sbin/nologin
         
3.#多项编辑:可以使用管道符,也可是用-e选项。
  3.1#同时在两个字符串前插入新行,可以使用管道符:  
        [root@zyc01 ~]# sed '/root/aold' passwd | sed '/sshd/illl'
        root:x:0:0:root:/root:/bin/bash
        old
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        old
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        lll
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
         
   3.2#使用 -e 进行多项编辑:
        [root@zyc01 ~]# sed -e '/root/aold' -e '/sshd/illl' passwd
        root:x:0:0:root:/root:/bin/bash
        old
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        old
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        lll
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

4)、改 :替换

改:替换 :(s  替换 ,g  全局 ,i  忽略大小写 ) 
#语法为:sed 's# 原内容 # 新内容 #g' 目标文件。

1.1#全局替换
        [root@zyc01 ~]# sed 's#root#admin#g' passwd
        admin:x:0:0:admin:/admin:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/admin:/sbin/nologin  

1.2#针对某一行进行替换:行号写在“s”前。
        [root@zyc01 ~]# sed '1s#root#admin#g' passwd  
        admin:x:0:0:admin:/admin:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
1.3#替换多行内容,行号间用“ ,”隔开,表示 从A到B全部替换。
        [root@zyc01 ~]# sed '1,10s#root#admin#g'   passwd
        admin:x:0:0:admin:/admin:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/admin:/sbin/nologin
         
1.4#替换的时候,忽略大小写:在g后面加上内部指令 i。即忽略大小写。
        [root@zyc01 ~]# sed 's#root#admin#gi'   passwd 全局替换root,不分大小写。
        admin:x:0:0:admin:/admin:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/admin:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
        admin
         
1.5#替换第10行到最后一行的内容:以$表示最后一行。
        [root@zyc01 ~]# sed '10,$s#root#admin#gi'   passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        operator:x:11:0:operator:/admin:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        oldboy
        admin
         
         
2.1#满足包含root字符串的行,再进行替换操作:(设置限定条件),直接在s前加条件。
        [root@zyc01 ~]# sed '/root/s#bin#oldboy#g' passwd
        root:x:0:0:root:/root:/oldboy/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/soldboy/nologin
         
2.2#满足以root开头的行 再进行替换操作:以^表示开头
        [root@zyc01 ~]# sed '/^root/s#bin#oldboy#g' passwd
        root:x:0:0:root:/root:/oldboy/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
2.3#在每个root后面加上一个abc:
        [root@zyc01 ~]# sed 's#root#rootabc#g' passwd
        rootabc:x:0:0:rootabc:/rootabc:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/rootabc:/sbin/nologin

2.4#给文件的每一行前面加上注释#,\# 表示暂时取消特殊字符的含义。
        [root@zyc01 ~]# sed 's#^#\##g'   passwd
         #root:x:0:0:root:/root:/bin/bash
         #bin:x:1:1:bin:/bin:/sbin/nologin
         #daemon:x:2:2:daemon:/sbin:/sbin/nologin
         #adm:x:3:4:adm:/var/adm:/sbin/nologin
         #lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         #sync:x:5:0:sync:/sbin:/bin/sync
         #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         #halt:x:7:0:halt:/sbin:/sbin/halt
         #mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         #operator:x:11:0:operator:/root:/sbin/nologin
         #games:x:12:100:games:/usr/games:/sbin/nologin
         #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
         #nobody:x:99:99:Nobody:/:/sbin/nologin
         #systemd-network:x:192:192:systemd Management:/:/sbin/nologin
         #dbus:x:81:81:System message bus:/:/sbin/nologin
         #polkitd:x:999:998:User for polkitd:/:/sbin/nologin
         #sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
         #postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         #oldboy
         #ROOT
         
2.5#把所有的#删除掉:直接在##之间不写任何字符
        [root@zyc01 ~]# sed 's#\###g' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
        ROOT
         
2.6#将某个字符串全部删除,直接在##之间不写任何字符。
        [root@zyc01 ~]# sed 's#root##g' passwd
        :x:0:0::/:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/:/sbin/nologin
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        oldboy
        ROOT

5)、后向引用

#后向引用:“()”使用扩展正则 
即前期定义,后期调用之意。第一个括号里面的内容用 \1,第二个括号内容用 \2,依次类推。
1.#在第8行行尾增加oldboy: .* 代表所有。
        [root@zyc01 ~]# sed -r '8s#(.*)#\1 oldboy#g'   passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt oldboy
         
2.#取IP地址
  第一种方法:
        [root@zyc01 ~]# ifconfig   eth0  
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
                ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
                RX packets 12703 bytes 1441173 (1.3 MiB)
                RX errors 0 dropped 0 overruns 0 frame 0
                TX packets 8645 bytes 925660 (903.9 KiB)
                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
        #在 . 之前指定开头字符, * 之后加上结尾字符:
        [root@zyc01 ~]# ifconfig   eth0   | sed -n '2p'
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
        [root@zyc01 ~]# ifconfig   eth0   | sed -n '2p' | sed -r 's#(^.*et )(.*)( n.*$)#\2#g'
         10.0.0.100
        [root@zyc01 ~]# ifconfig   eth0   | sed -n '2p' | sed -r 's#(^.*et )(.*)( n.*$)#\1#g'
                inet
        [root@zyc01 ~]# ifconfig   eth0   | sed -n '2p' | sed -r 's#(^.*et )(.*)( n.*$)#\3#g'
          netmask 255.255.255.0 broadcast 10.0.0.255
         === 简写为
        [root@zyc01 ~]# ifconfig   eth0   | sed -nr '2s#(^.*et )(.*)( n.*$)#\2#gp'
         10.0.0.100

第二种方法:
          [root@zyc01 ~]# ip a s eth0
         2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast default qlen 1000
            link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
                valid_lft forever preferred_lft forever
            inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
                valid_lft forever preferred_lft forever
        [root@zyc01 ~]# ip a s eth0 | sed -n '3p'
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
        [root@zyc01 ~]# ip a s eth0 | sed -n '3p' | sed -r 's#(^.*t )(.*)(/.*$)#\2#g'
         10.0.0.100
        [root@zyc01 ~]# ip a s eth0 | sed -nr '3s#(^.*t )(.*)(/.*$)#\2#gp'
         10.0.0.100
         
3.#将passwd文件中的第一列与第七列的位置进行调换
        [root@zyc01 ~]# sed -nr 's#(.*)(:x.*:)(.*)#\3\2\1#gp' passwd
        /bin/bash:x:0:0:root:/root:root
        /sbin/nologin:x:1:1:bin:/bin:bin
        /sbin/nologin:x:2:2:daemon:/sbin:daemon
             
4.#打印行号 :会在每一行前在加一行,整体行数多了一倍。
        [root@zyc01 ~]# sed = passwd
         1
        root:x:0:0:root:/root:/bin/bash
         2
        bin:x:1:1:bin:/bin:/sbin/nologin
         3
        daemon:x:2:2:daemon:/sbin:/sbin/nologin

50、awk

awk命令:# 擅长取列、计算、数组、函数、是一种编程语言。 
内部命令  
   -F #通过FS修正过来的 ,指定输入分隔符:以什么作为分隔符。默认分隔符为空白符。
   -v      #指定输出分隔符,和OFS一起使用。
    !      # 取反
内部变量  
    NF #最后一列  
    $NF #显示最后一列的内容
    NR #行号  
    $0 #完整的一行内容
    $n # n 是数字,表示取出第几列 多列用逗号分割
    FS      #指定默认输入分隔符
    OFS     #指定输出分隔符
    ~       #满足前面的条件,再执行输出
   
11.使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?
[root@qls ~]# awk -F: -vOFS=":" '{a=$1;$1=$NF;$NF=a;print}' passwd  

1)、查 :过滤

查:过滤功能
1.#按照字符串的方式查找行
  1.1#查找单个字符串:
        [root@zyc01 ~]# awk '/root/'   passwd
        root:x:0:0:root:/root:/bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
         
  1.2#查找多个字符串:使用“ ;”隔开。
        [root@zyc01 ~]# awk '/root/;/adm/'   passwd
        root:x:0:0:root:/root:/bin/bash
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
  1.3#使用正则, | 或者。
        [root@zyc01 ~]# awk '/root|adm/'   passwd
        root:x:0:0:root:/root:/bin/bash
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
         
 1.4#查找从含A字符串的行到含B字符串的行。中间用“ ,”隔开:
        [root@zyc01 ~]# awk '/adm/,/mail/'   passwd
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

~ # 满足前面的条件,再执行输出:
 1.5# 先满足第三列结尾为0的条件,再输出满足条件的行。
        [root@zyc01 ~]# awk -F: '$3~/0$/{print $0}' passwd
        root:x:0:0:root:/root:/bin/bash

     
         
2.#直接取行,使用内部命令NR:
        [root@zyc01 ~]# awk 'NR==1' passwd
        root:x:0:0:root:/root:/bin/bash
        [root@zyc01 ~]# awk 'NR==1,NR==3' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        [root@zyc01 ~]# awk 'NR==1;NR==3' passwd
        root:x:0:0:root:/root:/bin/bash
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
         
  2.1#取出11行到结尾的内容:
        [root@zyc01 ~]# awk 'NR>10' passwd
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         
  2.1#取出1到9行的内容:
        [root@zyc01 ~]# awk 'NR<10' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/halt
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         
   2.2#取出1到2行:
        [root@zyc01 ~]# awk 'NR<=2' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
   
   2.3#取出15行到结尾的内容:
        [root@zyc01 ~]# awk 'NR>=15' passwd
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
         
3.&& #并且
        [root@zyc01 ~]# awk 'NR>10 && NR<16' passwd
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
         
4.|| #或者
        [root@zyc01 ~]# awk 'NR<3 || NR>15'   passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin

2)、打印

#打印整个文件内容:使用{} 和print:
1.#取出完整的一行内容:$0 表示完整一行
        [root@zyc01 ~]# awk '{print $0}'   passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
         
2.#给文件内容加上行号: {print NR,$0}
        [root@zyc01 ~]# awk '{print NR,$0}'   passwd
         1 root:x:0:0:root:/root:/bin/bash
         2 bin:x:1:1:bin:/bin:/sbin/nologin
         3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4 adm:x:3:4:adm:/var/adm:/sbin/nologin
         5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6 sync:x:5:0:sync:/sbin:/bin/sync
         7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8 halt:x:7:0:halt:/sbin:/sbin/halt
         9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
         10 operator:x:11:0:operator:/root:/sbin/nologin
         11 games:x:12:100:games:/usr/games:/sbin/nologin
         12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
         13 nobody:x:99:99:Nobody:/:/sbin/nologin
         14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
         15 dbus:x:81:81:System message bus:/:/sbin/nologin
         16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
         17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
         18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin

3)、取反 ,排除

#取反,排除 : “ !”  取反  排除  
1.#取出不包含sbin字符的行:
        [root@zyc01 ~]# awk '!/sbin/' passwd
        root:x:0:0:root:/root:/bin/bash

2.#取出行号不等于1的行:
        [root@zyc01 ~]# awk 'NR!=1' passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        sync:x:5:0:sync:/sbin:/bin/sync
        shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        halt:x:7:0:halt:/sbin:/sbin/haltn
         
3.#排除了第5行到第15行:使用内部命令 “||” 或者:
        [root@zyc01 ~]# awk 'NR<5 || NR >15' passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin

4)、取列

取列功能:-F 以什么作分隔符:默认分隔符为空白字符,可以指定多个分隔符。输出时,默认分隔符为空白字符 ,可以使用双引号将你想要的分隔符引起来,输出可显示。
   -F #FS ,分隔符的变量:以什么作为分隔符。
  NF #最后一列
  $NF #显示最后一列的内容

1.#指定以 :为分隔符,取第1列:
        [root@zyc01 ~]# awk -F: '{print $1}' passwd === awk -F '[:]' '{print $1}' passwd
        root                 简写                                 全写
        bin
        daemon
        adm
        lp
        sync

2.#指定以 :为分隔符,取第1列和第2列,使用 ,号隔开。输出时两列之间默认以空格分隔。
        [root@zyc01 ~]# awk -F: '{print $1,$2}' passwd
        root x
        bin x
        daemon x
        adm x
        lp x
        sync x

3.#指定以 :为分隔符,取最后一列:以$NF表示最后一列。
        [root@zyc01 ~]# awk -F: '{print $NF}' passwd
        /bin/bash
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /sbin/nologin
        /bin/sync

  3.1# 使用$(NF-1) 表示倒数第二列,$(NF-2)倒数第三列,依次类推:
        [root@zyc01 ~]# awk -F: '{print $(NF-1)}' passwd
        /root
        /bin
        /sbin
        /var/adm
        /var/spool/lpd
        /sbin
           
4.#默认分隔符为 空白字符
   4.1#取出IP 地址
        [root@zyc01 ~]# ifconfig   eth0
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
                inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
                ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
                RX packets 15508 bytes 1698801 (1.6 MiB)
                RX errors 0 dropped 0 overruns 0 frame 0
                TX packets 10471 bytes 1145384 (1.0 MiB)
                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
         
        [root@zyc01 ~]# ifconfig   eth0 | awk 'NR==2'  
                inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
        [root@zyc01 ~]# ifconfig   eth0 | awk 'NR==2'   | awk '{print $2}'
         10.0.0.100
        [root@zyc01 ~]# ifconfig   eth0 | awk 'NR==2{print $2}'
         10.0.0.100
         
5.#指定多个分隔符:指定空格和/为分隔符:-F '[ /]'
        [root@zyc01 ~]# ip a s eth0
         2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc UP group default qlen 1000
            link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
                valid_lft forever preferred_lft forever
            inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
                valid_lft forever preferred_lft forever
        [root@zyc01 ~]# ip a s eth0 | awk 'NR==3'
            inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
             
    #使用空格和/,第6列为IP
        [root@zyc01 ~]# ip a s eth0 | awk 'NR==3' | awk -F '[ /]' '{print $6}'
         10.0.0.100
         
    #使用[ /]*(前面出现过0次或任意次,都归为一列)。第3列为IP
        [root@zyc01 ~]# ip a s eth0 | awk 'NR==3' | awk -F '[ /]*' '{print $3}'
         10.0.0.100
         
        [root@zyc01 ~]# echo " // inet 10.0.0.100/24 brd 10.0.0.255 noprefixroute eth0" >ip.txt
        [root@zyc01 ~]# cat ip.txt
            //   inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    #使用空格和/,第11列为IP
        [root@zyc01 ~]# awk -F '[ /]' '{print $11}' ip.txt
         10.0.0.100
    #使用[ /]*(前面出现过0次或任意次,都归为一列)。第3列为IP
        [root@zyc01 ~]# awk -F '[ /]*' '{print $3}' ip.txt
         10.0.0.100
         
         
6.#指定分隔符,使用双引号引起来,输出时可显示。否则显示空格。  
        [root@zyc01 ~]# awk -F: '{print $1":"$2}' passwd
        root:x
        bin:x
        daemon:x
        adm:x
        lp:x
        sync:x
        shutdown:x
         
  6.1#或者任意指定输出的分隔符:
        [root@zyc01 ~]# awk -F: '{print $1"脱产10期"$2}' passwd
        root脱产10期x
        bin脱产10期x
        daemon脱产10期x
        adm脱产10期x
        lp脱产10期x
        sync脱产10期x
        shutdown脱产10期x
         
  6.2#将第一行和最后一行更换位置
        [root@zyc01 ~]# awk -F: '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' passwd
        /bin/bash:x:0:0:root:/root:root
        /sbin/nologin:x:1:1:bin:/bin:bi
        /sbin/nologin:x:2:2:daemon:/sbin:daemon
        /sbin/nologin:x:3:4:adm:/var/adm:adm
         

Day09

51、du

查看目录大小 
du 命令:查看目录的大小
  选项:
      -s #显示大小
      -h #以B MB GB的格式显示大小
          [root@zyc01 ~]# du -sh /etc
          31M /etc

52、stat

stat命令:#详细显示文件的属性信息
    选项: -c 指定格式输出   %a 以8进制显示文件的权限
     
          [root@zyc01 ~]# stat passwd
            File: ‘passwd’
            Size: 798       Blocks: 8         IO Block: 4096   regular file
          Device: 803h/2051d Inode: 134317678   Links: 1
          Access: (0644/-rw-r--r--) Uid: (    0/   root)   Gid: (    0/   root)
          Context: unconfined_u:object_r:admin_home_t:s0
          Access: 2020-07-14 19:13:16.904691535 +0800
          Modify: 2020-07-14 19:13:12.935691465 +0800
          Change: 2020-07-14 19:13:12.935691465 +0800
          Birth: -
         
-c #指定格式输出, 加 %a 以8进制显示文件的权限  
          [root@zyc01 ~]# stat -c %a passwd
          644

53、file

file命令:#详细显示文件的信息  
          [root@zyc01 ~]# file passwd
          passwd: ASCII text
         
          [root@zyc01 ~]# file /opt/
          /opt/: directory
         
          [root@zyc01 ~]# file /bin/ls
          /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses
          shared libs), for GNU/Linux 2.6.32BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b,
          stripped

54、ln

1)创建软链接

ln命令
1.创建软链接:
选项:
           -s #创建软链接
           
  && #前面的命令执行成功,才会执行后面的命令
  || #前面的命令执行失败,才会执行后面的命令
语法结构: ln  -s 源文件     链接文件
 
      [root@zyc01 ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /root/eth0
      [root@zyc01 ~]# ll
      total 0
      lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0

2)创建硬链接

2.创建硬链接:   
#语法结构:ln   源文件   硬链接文件
        [root@zyc01 ~]# ln hosts   hosts_hard
        [root@zyc01 ~]# ll
        total 8
        lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
         -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
         -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard
        lrwxrwxrwx. 1 root root  13 Jul 15 20:07 nginx -> nginx-1.17.0/
        drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.17.0
        drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.18.0

Day13

55、useradd

useradd   ==   adduser       #创建用户 
选项:
-u #指定uid
-g #指定组 gid 前提需存在
-G #指定附加组 多个用逗号分割
-d #指定家目录  
-c #注释信息
-s #指定命令解释器
-r #创建系统用户,默认不创建家目录 命令解释器是允许登录的
-M #不创建家目录  

          [root@zyc01 ~]# useradd   user01
          [root@zyc01 ~]# tail -1 /etc/passwd     #存放用户的基本信息
          user01:x:1000:1000::/home/user01:/bin/bash
          [root@zyc01 ~]# tail -1 /etc/shadow       #存放用户的密码信息及账号信息
          user01:!!:18464:0:99999:7:::
         
-u #指定uid,
-g #指定组gid,前提需存在
-G #指定附加组,多个用逗号分割
-d #指定家目录  
-c #注释信息
-s #指定命令解释器
          [root@zyc01 ~]# useradd -u666 -d /opt/user02 -c "test" user02
          [root@zyc01 ~]# tail -1 /etc/passwd
          user02:x:666:1001:test:/opt/user02:/bin/bash
          [root@zyc01 ~]# ll /opt/
          drwx------  2 user02 user02      62 Jul 21 16:47 user02

-r #创建系统用户,默认不创建家目录,命令解释器是允许登录的。
          [root@zyc01 ~]# useradd   -r   user03
          [root@zyc01 ~]# tail -1 /etc/passwd
          user03:x:665:665::/home/user03:/bin/bash
          [root@zyc01 ~]# ll /home/
          total 0
          drwx------ 2 user01 user01 62 Jul 21 16:40 user01
         
          [root@zyc01 ~]# useradd -r -s /sbin/nologin user04
          [root@zyc01 ~]# tail -1 /etc/passwd
          user04:x:664:664::/home/user04:/sbin/nologin
          [root@zyc01 ~]# ll /home/
          total 0
          drwx------ 2 user01 user01 62 Jul 21 16:40 user01

-M #不创建家目录
          [root@zyc01 ~]# useradd   -M -s /sbin/nologin user05
          [root@zyc01 ~]# tail -1 /etc/passwd
          user05:x:1001:1002::/home/user05:/sbin/nologin
          [root@zyc01 ~]# ll /home/
          total 0
          drwx------ 2 user01 user01 62 Jul 21 16:40 user01

56、usermod

usermod #修改用户信息的
选项:
    -u #修改用户的uid
    -g #修改用户的gid
    -a #追加 添加附加组 需跟-G配合使用
    -G #修改附加组,默认会覆盖原来的所有附加组,   -aG :追加
    -m #迁移家目录
    -d #修改家目录
    -c #修改注释信息
    -s #修改命令解释器
    -l #修改用户的名称
    -L #锁定用户
    -U #解锁用户

示例:
          [root@zyc01 ~]# usermod -u6666 -g 1001 -aG 665,664   -md /opt/user01 -c "123"   -l
          user123(新名字) user01(旧名字)
          [root@zyc01 ~]# grep 'user01' /etc/passwd
          user123:x:6666:1001:123:/opt/user01:/bin/bash
          [root@zyc01 ~]# id user123
          uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04)
         
-s #修改命令解释器
          [root@zyc01 ~]# usermod   -s /bin/bash user05
          [root@zyc01 ~]# grep 'user05' /etc/passwd
          user05:x:1001:1002::/home/user05:/bin/bash
         
-L #锁定用户
          [root@zyc01 ~]# usermod   -L   user02

-U #解锁用户
          [root@zyc01 ~]# usermod   -U   user02
         
         
#远程登录
          [C:\~]$ ssh user02@10.0.0.100

57、userdel

userdel  #删除用户,默认不删除家目录及邮件信息  
选项:
-r    #删除用户的时候,删除家目录及邮件相关信息  

#直接使用,默认不删除家目录及邮件信息
          [root@zyc01 ~]# useradd   user06
          [root@zyc01 ~]# ll /home/
          total 0
          drwx------ 2 user06 user06 62 Jul 21 17:45 user06
          [root@zyc01 ~]# ll /var/mail/
          total 0
          -rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
          -rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
          -rw-rw---- 1 user06 mail 0 Jul 21 17:45 user06
          -rw-rw---- 1   6666 mail 0 Jul 21 16:40 user123
         
-r #删除用户的时候,删除家目录及邮件相关信息
          [root@zyc01 ~]# userdel   -r user06
          [root@zyc01 ~]# ll /home/
          total 0
          [root@zyc01 ~]# ll /var/mail/
          total 0
          -rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
          -rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
          -rw-rw---- 1   6666 mail 0 Jul 21 16:40 user123
         
#用户正在使用的无法删除,需要先关闭使用的进程,才能执行删除。
          [root@zyc01 ~]# userdel user02
          userdel: user user02 is currently used by process 8333 #用户正在使用  
          [root@zyc01 ~]# ps aux |grep 8333
          user02     8333  0.0  0.1 161364  2348 ?       S    17:42   0:00 sshd: user02@pts/1
          root       8389  0.0  0.0 112708   976 pts/0   R+   17:46   0:00 grep --color=auto 8333
          [root@zyc01 ~]# userdel user02

58、id == who == w

id == who == whoami 查看用户信息的命令

#查看用户的id及组的相关信息
id #查看用户UID和GID信息
        [root@zyc01 ~]# id root
         uid=0(root) gid=0(root) groups=0(root)
         
        [root@zyc01 ~]# yum install -y finger
         
finger:#用来查找、显示指定用户的信息
        [root@zyc01 ~]# finger   root
        Login: root           Name: root
        Directory: /root                   Shell: /bin/bash
        On since Tue Jul 21 17:49 (CST) on pts/0 from 10.0.0.1
            7 seconds idle
        No mail.
        No Plan.

who:#查看当前登录用户的账户名:
        [root@zyc01 ~]# who
        root     pts/0        2020-07-21 17:49 (10.0.0.1)
       
      第一列:是登录用户名
      第二列:是登录终端:登录终端中的tty表示本地登录,pts表示远程终端,如果有多个远程终端,
              为了区别,会加/0,1,2之类的,如pts/0、pts/1、pts/2....
      第三列:登录时间,
      第四列:登录的主机的IP地址
         
whoami:#忘记自己是以什么身份登录到系统时使用。
        [root@zyc01 ~]# whoami
        root

w:#显示的信息比who命令显示的信息更加详细一点,会对系统的资源做一些简单的统计,
  如一共有多少个登录用户,从开始到现在一共运行了多长时间等
        [root@zyc01 ~]# w
          09:59:15 up 22:14,  1 user, load average: 0.00, 0.01, 0.05
        USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
        root     pts/0    10.0.0.1         17:49     ?     0.02s  0.00s w

uptime:#获取主机运行时长和查询Linux系统负载等信息
        [root@zyc01 ~]# uptime
          09:59:49 up 22:14,  1 user, load average: 0.00, 0.01, 0.05

59、$RANDOM

#设置随机密码

$RANDOM命令:获得随机数
md5sum    #采用MD5报文摘要算法(128位)计算和检查文件的校验和
          [root@zyc01 ~]# echo $RANDOM
          28241
          [root@zyc01 ~]# echo $RANDOM | md5sum   #采用MD5报文摘要算法(128位)计算和检查文件的校验和
          6c8a1df9e12e9c553d0f9a397b860f4e  -
          [root@zyc01 ~]# echo $RANDOM | md5sum | cut -c 1-10
          64091f6823
          [root@zyc01 ~]# echo $RANDOM | md5sum | cut -c 1-10
          df0676f775
         
    #密码设置成功,但是不知道密码
          [root@zyc01 ~]# echo $RANDOM | md5sum | cut -c 1-10 | passwd --stdin qls01
          Changing password for user qls01.
          passwd: all authentication tokens updated successfully.
         
          [root@zyc01 ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt
          b676039b3f
         
         
          [root@zyc01 ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt | passwd --stdin qls01
          Changing password for user qls01.   #重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面
          passwd: all authentication tokens updated successfully.
          [root@zyc01 ~]# cat pass.txt
          7d53328b61
         

60、tee

 tee #重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份  
          -a #追加  

61、mkpasswd

#设置随机密码
mkpasswd# 设置更复杂的密码 :随机密码
         
          [root@zyc01 ~]# yum install -y expect
          选项:
          -l #指定的密码位数
          -d #指定数字位数
          -c #小写字母位数
          -C #大小字母位数
          -s #特殊字符位数

          [root@zyc01 ~]# mkpasswd  
          gC}2atTf9
          [root@zyc01 ~]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6 #设置24位随机密码,
          sv_^WF85J@DF5Ng5|3{f3/ng
          [root@zyc01 ~]# mkpasswd -l 24
          9px3Sesrx[ybtbvElubxxltj
          [root@zyc01 ~]# mkpasswd -l 24
          uimYw\Z4amzffhti0eljucgg
          [root@zyc01 ~]# mkpasswd -l 24 -s 24
          impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2
          uppercase letters and 24 special characters.
          [root@zyc01 ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0
          $.$}+?;-~]|)>(#_),[)!#@$
         
          [root@zyc01 ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0   | tee pass.txt | passwd --stdin
          qls01
          Changing password for user qls01.
          passwd: all authentication tokens updated successfully.
          [root@zyc01 ~]# cat pass.txt
          :{]~"/'%[,+"^*%??%,'?}~$

62、groupadd

groupadd   创建用户组    
选项:
-g #指定组的ID GID
-r #创建系统组   系统组是Linux 系统自动建立的
 
        [root@zyc01 ~]# groupadd   user_group01
        [root@zyc01 ~]# tail -1 /etc/group
        user_group01:x:1007:
         
        [root@zyc01 ~]# groupadd -g 666 user_group02
        [root@zyc01 ~]# tail -1 /etc/group
        user_group02:x:666:
         
        [root@zyc01 ~]# groupadd   -r user_group03
        [root@zyc01 ~]# tail -1 /etc/group
        user_group03:x:664:

63、groupmod

groupmod:修改用户组     
选项:
     -g #修改用户组的ID GID
     -n #修改组的名称  

        [root@zyc01 ~]# groupmod   -g 6666 user_group01
        [root@zyc01 ~]# grep 'user_group01' /etc/group
        user_group01:x:6666:
         
        [root@zyc01 ~]# groupmod   -n new_group user_group01
        [root@zyc01 ~]# grep 'new_group' /etc/group
        new_group:x:6666:

64、groupdel

groupdel :删除用户组的命令     
         
#删除作为某个用户的附加组的用户组 ,删除时没有影响 。
         
        [root@zyc01 ~]# groupdel user01
       
        [root@zyc01 ~]# grep '1002' /etc/group
        user05:x:1002:qls01
        [root@zyc01 ~]# grep '1002' /etc/passwd
        user05:x:1001:1002::/home/user05:/bin/bash
        test:x:1002:1003::/home/test:/bin/bash
        [root@zyc01 ~]# id user05
         uid=1001(user05) gid=1002(user05) groups=1002(user05)
         
#删除一个组作为某个用户的基本组,是不能删除的。
        解决:
          1)给这里面的用户重新找个基本组
          2)把用户也一并删除掉。
         
        [root@zyc01 ~]# groupdel   user05
        groupdel: cannot remove the primary group of user 'user05'
        [root@zyc01 ~]# usermod -g 1003 user05
        [root@zyc01 ~]# id user05
         uid=1001(user05) gid=1003(test) groups=1003(test)
        [root@zyc01 ~]# groupdel   user05        

Day14

65、su

su 命令用户提权,用法:
     su username #非登录式shell
     su  - username #登录式shell
区别就是加载的配置文件不一样。
root用户切换到普通用户是不需要密码的,而普通用户切换到root用户是需要密码的。

1.su username : #非登录式shell
实例:    
    [root@zyc01 ~]# su test10
    /etc/bashrc
    /etc/profile.d/*.sh
    [test10@qls root]$
     
    [test10@qls root]$ pwd
    /root
#Tips : su username在切换用户的时候,只执行了以下两个文件:
        /etc/bashrc
        /etc/profile.d/*.sh
      切换之后所在的目录是在从哪个用户切换过来的就是谁的家目录。

2.su  - username : #登录式shell
实例:
      [root@zyc01 ~]# su - test10
      Last login: Wed Jul 22 09:09:58 CST 2020 on pts/0
      /etc/profile
      /etc/profile.d/*.sh
      /etc/bashrc
      [test10@qls ~]$ pwd
      /home/test10
#Tips: su - username 在切换用户的时候属于一种登录式shell, 跟su命令直接切换的区别就是是否加载
       #了/etc/profile文件,切换之后,工作环境也已经改变了,是在自己的家目录下面.

66、sudo

sudo用户提权 :让普通用户临时拥有root权限
#选项     visudo -c   检查语法
           sudo  -l   查看用户拥有的权限

1.#日志审计
      [root@zyc01 ~]# grep 'wheel' /etc/group
      wheel:x:10:
      [root@zyc01 ~]# usermod -aG wheel test10     #将test10添加到wheel组内
      [root@zyc01 ~]# id test10
      uid=1007(test10) gid=1007(test10) groups=1007(test10),10(wheel)
     
      [test10@qls ~]$ sudo  -l  
      [sudo] password for test10:
      Matching Defaults entries for test10 on qls:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
          env_keep="COLORS DISPLAY
          HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
          LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
          LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
          XAUTHORITY",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
     
      User test10 may run the following commands on qls:
          (ALL) ALL
      [test10@qls ~]$ sudo tail  -f /var/log/messages
      Jul 22 09:19:49 qls systemd-logind: Removed session 65.
      Jul 22 09:19:56 qls systemd: Created slice User Slice of test10.
      Jul 22 09:19:56 qls systemd: Started Session 66 of user test10.
      Jul 22 09:19:56 qls systemd-logind: New session 66 of user test10.
      Jul 22 09:20:11 qls su: (to root) test10 on pts/2
      Jul 22 09:47:08 qls systemd-logind: Removed session 66.
      Jul 22 09:47:08 qls systemd: Removed slice User Slice of test10.
      Jul 22 09:47:12 qls systemd: Created slice User Slice of test10.
      Jul 22 09:47:12 qls systemd: Started Session 67 of user test10.
      Jul 22 09:47:12 qls systemd-logind: New session 67 of user test10.
      ^C
     
      [test10@qls ~]$ rm -rf /opt/
      rm: cannot remove ‘/opt/hostname’: Permission denied
      rm: cannot remove ‘/opt/hostnamectl’: Permission denied
      rm: cannot remove ‘/opt/test_hostname’: Permission denied
      rm: cannot remove ‘/opt/test_hostname.txt’: Permission denied
      rm: cannot remove ‘/opt/.hostname.log’: Permission denied
      rm: cannot remove ‘/opt/HOSTNAMECTL’: Permission denied
      rm: cannot remove ‘/opt/user02’: Permission denied
      rm: cannot remove ‘/opt/user01’: Permission denied
      [test10@qls ~]$ sudo  rm -rf /opt/
      [test10@qls ~]$ ll /opt
      ls: cannot access /opt: No such file or directory
     
2.#权限太大   怎么限制权限  
      visudo #进行设置   默认只能root用户使用sudo命令 普通用户是使用不了的 需要root用户设置
     
 #只给开发人员只读权限
      [root@zyc01 ~]# visudo #简单   有语法检查功能
      ====
      [root@zyc01 ~]# vi /etc/sudoers
      #在100行左右添加此行
      test11  ALL=(ALL)       /usr/bin/cat,/usr/bin/tail
      用户     主机 角色       命令
      ALL 所有命令
      /usr/bin/cat #单个命令
      /usr/bin/cat,/usr/bin/tail #多个用逗号分割
      /usr/bin/* #目录下的所有命令
      NOPASSWD: #免密执行  
      test11  ALL=(ALL)       NOPASSWD: /usr/bin/tail /var/log/messages #限制只能对某个文件操作
     
3.#检查语法:visudo -c
      [root@zyc01 ~]# visudo -c
      /etc/sudoers: parsed OK
     
4.#普通用户测试 :sudo -l
      [sudo] password for test11:
      Matching Defaults entries for test11 on qls:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
          env_keep="COLORS DISPLAY
          HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
          LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
          LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
          XAUTHORITY",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
     
      User test11 may run the following commands on qls:
          (ALL) /usr/bin/cat, /usr/bin/tail
     
      [test11@qls ~]$ tail -f /var/log/messages
      tail: cannot open ‘/var/log/messages’ for reading: Permission denied
      tail: no files remaining
      [test11@qls ~]$ sudo tail -f /var/log/messages
      Jul 22 09:47:12 qls systemd: Started Session 67 of user test10.
      Jul 22 09:47:12 qls systemd-logind: New session 67 of user test10.
      Jul 22 09:52:16 qls systemd: Created slice User Slice of test11.
      Jul 22 09:52:16 qls systemd: Started Session 68 of user test11.
      Jul 22 09:52:16 qls systemd-logind: New session 68 of user test11.
      Jul 22 09:57:26 qls systemd-logind: Removed session 68.
      Jul 22 09:57:26 qls systemd: Removed slice User Slice of test11.
      Jul 22 09:57:35 qls systemd: Created slice User Slice of test11.
      Jul 22 09:57:35 qls systemd: Started Session 69 of user test11.
      Jul 22 09:57:35 qls systemd-logind: New session 69 of user test11.
      ^C
     
      [test11@qls ~]$ rm -rf /mnt/
      rm: cannot remove ‘/mnt/’: Permission denied
      [test11@qls ~]$ sudo rm -rf /mnt/
      Sorry, user test11 is not allowed to execute '/bin/rm -rf /mnt/' as root on qls.
     
5.#执行sodu命令的时候,不提示输入密码
     
      [root@zyc01 ~]# visudo
      test11  ALL=(ALL)       NOPASSWD:/usr/bin/cat,/usr/bin/tail
      [root@zyc01 ~]# visudo -c
      /etc/sudoers: parsed OK
     
      [test11@qls ~]$ sudo  -l
      Matching Defaults entries for test11 on qls:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
          env_keep="COLORS DISPLAY
          HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
          LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
          LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
          XAUTHORITY",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
     
      User test11 may run the following commands on qls:
          (ALL) NOPASSWD: /usr/bin/cat, /usr/bin/tail
      [test11@qls ~]$
#注意:设置命令权限的时候,多个可以使用逗号分割,也可以是/usr/bin/*   ALL

Day15

67、chmod

chmod       #设置权限的命令
选项    
      -R   #给目录的权限及目录以下的所有文件或者子目录都设置统一权限 :递归设置。
   
   1)根据字母进行修改:
          u       属主  
          g 属组
          o 匿名用户
          a 所有用户
        权限字母
          r 可读
          w 可写
          x 可执行
          - 没有权限
        赋予的方式
          +  #添加权限
          -  #收回某个权限
          =  #覆盖之前的权限
   #示例:
   +  #添加权限
        [root@zyc01 ~]# ll
        total 4
         -rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]# chmod u+x hosts       #给属主增加可执行权限
        [root@zyc01 ~]# ll
        total 4
         -rwxr--r-- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]# chmod g+wx hosts         #给属组增加可写可执行权限
        [root@zyc01 ~]# ll
        total 4
         -rwxrwxr-- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]# chmod o+w hosts       #给其它用户增加可写权限
        [root@zyc01 ~]# ll
        total 4
         -rwxrwxrw- 1 root root 158 Jul 23 09:06 hosts
 
        [root@zyc01 ~]# chmod a+x hosts         #给属主、属组、其它用户都加上可执行权限
        [root@zyc01 ~]# ll
        total 4
         -rwxrwxrwx 1 root root 158 Jul 23 09:06 hosts


    -  #收回权限
       #a可以省略 :不指定属主、属组、其它用户时,默认为对三者全部收回权限。
        [root@zyc01 ~]# chmod   -x hosts       #取消属主、属组、其它用户的可执行权限
        [root@zyc01 ~]# ll
        total 4
         -rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]# chmod u-w hosts         #取消属主的可写权限
        [root@zyc01 ~]# ll
        total 4
         -r--rw-rw- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]# chmod g-w,o-rw hosts   #取消属主、属组的可写可读权限。
        [root@zyc01 ~]# ll
        total 4
         -r--r----- 1 root root 158 Jul 23 09:06 hosts
        [root@zyc01 ~]#

    =  #覆盖之前的所有权限:原来的权限全部覆盖掉。
        [root@zyc01 ~]# chmod a=rw hosts       #让属主、属组、其它用户都可读可写。
        [root@zyc01 ~]# ll
        total 4
         -rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts
         
        [root@zyc01 ~]# chmod o=- hosts       #让其它用户没有权限。
        [root@zyc01 ~]# ll
        total 4
         -rw-rw---- 1 root root 158 Jul 23 09:06 hosts
         

 2)根据数字进行修改:会把原来的权限全部覆盖掉
 -R #给目录的权限及目录以下的所有文件或者子目录都设置统一权限 :递归设置。
       
        [root@zyc01 ~]# chmod 644 hosts   # rw- =4+2,r-- =4 ,
        [root@zyc01 ~]# ll
        total 4
         -rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
         
        [root@zyc01 ~]# ll -d data/
        drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
        [root@zyc01 ~]# chmod 700 data/     #设置data目录的权限
        [root@zyc01 ~]# ll -d data/          
        drwx------ 2 root root 19 Jul 23 09:35 data/   #目录内的文件权限没有改变。
         
        [root@zyc01 ~]# chmod -R 755 data/   #递归设置,同时设置data目录及目录内的文件权限
        [root@zyc01 ~]# ll -d data/
        drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
        [root@zyc01 ~]# ll data/
        total 4
         -rwxr-xr-x 1 root root 158 Jul 23 09:35 hosts

68、chown

chown  #设置属主属组, 只有root管理员才可以进行设置。    
  选项:
         -R #递归设置 设置目录及其目录以下的所有文件

        [root@zyc01 ~]# ll /opt/
        total 4
         -rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
        drwxrw--wx 5 root root 84 Jul 23 11:17 test
         
  1)# qls01: 默认设置的是属主
        [root@zyc01 ~]# chown qls01   /opt/file.txt #默认设置的是属主  
        [root@zyc01 ~]# ll /opt/
        total 4
         -rw-r--r-x 1 qls01 root 13 Jul 23 10:14 file.txt
        drwxrw--wx 5 root root 84 Jul 23 11:17 test
         
  2)#.qls01: 在用户名前加点号,表示设置属组。
        [root@zyc01 ~]# chown .qls01 /opt/file.txt #设置属组
        [root@zyc01 ~]# ll /opt/
        total 4
         -rw-r--r-x 1 qls01 qls01 13 Jul 23 10:14 file.txt
        drwxrw--wx 5 root root  84 Jul 23 11:17 test

  3)# root.root : 两个用户名间加点号,表示同时设置属主属组。
        [root@zyc01 ~]# chown root.root /opt/file.txt #同时设置属主属组
        [root@zyc01 ~]# ll /opt/
        total 4
         -rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
        drwxrw--wx 5 root root 84 Jul 23 11:17 test
         
  4)#只设置目录,目录内的文件不发生变化。
        [root@zyc01 ~]# chown qls01.qls01 /opt/test/ #只设置目录
        [root@zyc01 ~]# ll -d /opt/test/
        drwxrw--wx 5 qls01 qls01 84 Jul 23 11:17 /opt/test/
        [root@zyc01 ~]# ll /opt/test/
        total 0
         -rw-rw-r-- 1 qls01 qls01 0 Jul 23 11:17 123.txt
         -rw-r--r-- 1 root root  0 Jul 23 10:51 data.sh
        drwxr-xr-x 2 root root  6 Jul 23 10:51 oldboy01
        drwxr-xr-x 2 root root  6 Jul 23 10:51 oldboy02
        drwxr-xr-x 2 root root  6 Jul 23 10:51 oldboy03
         
  5) # -R : 递归设置
        [root@zyc01 ~]# chown -R qls01.qls01 /opt/test/ #递归设置
        [root@zyc01 ~]# ll /opt/test/
        total 0
         -rw-rw-r-- 1 qls01 qls01 0 Jul 23 11:17 123.txt
         -rw-r--r-- 1 qls01 qls01 0 Jul 23 10:51 data.sh
        drwxr-xr-x 2 qls01 qls01 6 Jul 23 10:51 oldboy01
        drwxr-xr-x 2 qls01 qls01 6 Jul 23 10:51 oldboy02
        drwxr-xr-x 2 qls01 qls01 6 Jul 23 10:51 oldboy03

69、charp

chgrp   #只能设置属组   
        [root@zyc01 ~]# chgrp   root /opt/test/
        [root@zyc01 ~]# ll -d /opt/test/
        drwxrw--wx 5 qls01 root 84 Jul 23 11:17 /opt/test/

70、umask

umask    #控制权限的命令   
        系统中为什么新创建的目录的权限为755,文件的权限为644。
        因为都是由系统的控制权限所控制的
        [root@zyc01 ~]# umask   #在全局环境变量文件/etc/profile 中进行配置,
        0022
       
   1)系统中是如何计算权限
      系统新创建的目录的权限由最大权限777减去umask控制权限022得到的就是755,所以说新创建的目录的权限为755,
      新创建文件的权限由文件最大权限666减去umask控制权限022,得到644权限,所以说新创建的文件的权限为644,
      当文件权限遇到奇数时,在奇数位加1 。  
       
        [root@zyc01 ~]# umask
        0022
        [root@zyc01 ~]# umask 033   # 零时指定umask 控制权限为033,退出登录后立即失效。
        [root@zyc01 ~]# umask           永久更改需要在全局环境变量文件/etc/profile 中进行配置。
        0033
        [root@zyc01 ~]# mkdir oldboy
        [root@zyc01 ~]# ll
        total 4
        drwxr--r-- 2 root root   6 Jul 23 12:02 oldboy      #777-033=744
       
        [root@zyc01 ~]# touch oldboy.txt
        [root@zyc01 ~]# ll
        total 4
        -rw-r--r-- 1 root root   0 Jul 23 12:02 oldboy.txt   #666-033=633(当文件权限遇到奇数时,
                                                             #在奇数位加1)=644

Day16

71、setuid

setuid  : 权限位作用于属主的位置   可执行的权限位    执行这条命令的时候,相当于这条命令的所有者  root
          使用 s 表示 。 setuid的权限是4开头的四位数。
         
      #大S 和 小s的区别  
          拥有执行权限,设置setuid之后是小s
          没有执行权限,设置setuid之后是大S

          [root@zyc01 ~]# ll /usr/bin/passwd
          -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
         
         
          [root@zyc01 ~]# ll /usr/bin/rm
          -rwxr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
          [root@zyc01 ~]# chmod u+s /usr/bin/rm
          [root@zyc01 ~]# ll /usr/bin/rm
          -rwsr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
          [root@zyc01 ~]# mkdir /opt
          [root@zyc01 ~]# su - qls01
          Last login: Fri Jul 24 08:39:42 CST 2020 on pts/0
          [qls01@qls ~]$ rm -rf /opt/
          [qls01@qls ~]$ logout
          [root@zyc01 ~]# mkdir /opt
         
          [root@zyc01 ~]# chmod u-s /usr/bin/rm
         
         
          [root@zyc01 ~]# ll /usr/bin/yum
          -rwxr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
          [root@zyc01 ~]# su - qls01
          Last login: Fri Jul 24 08:42:10 CST 2020 on pts/0
          [qls01@qls ~]$ yum install -y sl
          Loaded plugins: fastestmirror
          You need to be root to perform this command.
          [qls01@qls ~]$ yum install -y mysql-server
          Loaded plugins: fastestmirror
          You need to be root to perform this command.
          [qls01@qls ~]$ logout
          [root@zyc01 ~]# ll /usr/bin/yum
          -rwxr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
          [root@zyc01 ~]# chmod u+s /usr/bin/yum
          [root@zyc01 ~]# ll /usr/bin/yum
          -rwsr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
          [root@zyc01 ~]# su - qls01
          Last login: Fri Jul 24 08:45:28 CST 2020 on pts/0
          [qls01@qls ~]$ yum install -y mysql-server
          Loaded plugins: fastestmirror
          You need to be root to perform this command.
         
          #普通用户不能使用yum,命令,即使添加了setuid的权限也不行
         
          #此权限不能乱给   知道就行
         
          [root@zyc01 ~]# ll /usr/bin/cat
          -rwxr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
          [root@zyc01 ~]# stat /usr/bin/cat
            File: ‘/usr/bin/cat’
            Size: 54160     Blocks: 112       IO Block: 4096   regular file
          Device: 803h/2051d Inode: 201349408   Links: 1
          Access: (0755/-rwxr-xr-x) Uid: (    0/   root)   Gid: (    0/   root)
          Access: 2020-07-24 08:52:48.370831557 +0800
          Modify: 2018-10-31 03:16:01.000000000 +0800
          Change: 2020-07-24 08:52:58.961832157 +0800
          Birth: -
          [root@zyc01 ~]# stat /usr/bin/passwd
            File: ‘/usr/bin/passwd’
            Size: 27832     Blocks: 56         IO Block: 4096   regular file
          Device: 803h/2051d Inode: 201636086   Links: 1
          Access: (4755/-rwsr-xr-x) Uid: (    0/   root)   Gid: (    0/   root)
          Access: 2020-07-23 09:58:46.365163401 +0800
          Modify: 2014-06-10 14:27:56.000000000 +0800
          Change: 2020-07-06 02:14:21.159994247 +0800
          Birth: -


          [root@zyc01 ~]# ll /usr/bin/passwd
          -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
          [root@zyc01 ~]# chmod -x /usr/bin/cat
          [root@zyc01 ~]# ll /usr/bin/cat
          -rw-r--r--. 1 root root 54160 Oct 31  2018 /usr/bin/cat
          [root@zyc01 ~]# chmod u+s /usr/bin/cat
          [root@zyc01 ~]# ll /usr/bin/cat
          -rwSr--r--. 1 root root 54160 Oct 31  2018 /usr/bin/cat
          [root@zyc01 ~]# chmod +x /usr/bin/cat
          [root@zyc01 ~]# ll /usr/bin/cat
          -rwsr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
          [root@zyc01 ~]# chmod u-s /usr/bin/cat
          [root@zyc01 ~]#


大S 和 小s的区别  

拥有执行权限,设置setuid之后是小s

没有执行权限,设置setuid之后是大S

72、setgid

setgid  :  权限为作用在属组的x为    使用 s表示   有大S 和小s  
          用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组
          当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了
          默认的组就是这个目录的所属组,让多个用户能够共享一个目录  
          setgid 的权限是2开头的四位数

        [root@zyc01 ~]# mkdir /data
        [root@zyc01 ~]# ll -d /data
        drwxr-xr-x 2 root root 6 Jul 24 09:06 /data
        [root@zyc01 ~]# chmod 770 /data
        [root@zyc01 ~]# ll -d /data
        drwxrwx--- 2 root root 6 Jul 24 09:06 /data
       
       
        [root@zyc01 ~]# groupadd   ops_group
        [root@zyc01 ~]# chgrp   ops_group /data/
        [root@zyc01 ~]# ll -d /data/
        drwxrwx--- 2 root ops_group 6 Jul 24 09:06 /data/
        [root@zyc01 ~]# useradd ops01
        [root@zyc01 ~]# useradd ops02
        [root@zyc01 ~]# useradd ops03
        [root@zyc01 ~]# id ops03
        uid=1046(ops03) gid=1048(ops03) groups=1048(ops03)
       
        [root@zyc01 ~]# usermod   -aG ops_group   ops01
        [root@zyc01 ~]# usermod   -aG ops_group   ops02
        [root@zyc01 ~]# usermod   -aG ops_group   ops03
       
        [root@zyc01 ~]# su - ops01
        [ops01@qls ~]$ touch /data/ops01.txt
        [ops01@qls ~]$ ll /data/ops01.txt
        -rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 /data/ops01.txt
        [ops01@qls ~]$ logout
        [root@zyc01 ~]# su - ops02
        [ops02@qls ~]$ touch /data/ops02.txt
        [ops02@qls ~]$ ll /data/ops02.txt
        -rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 /data/ops02.txt
        [ops02@qls ~]$ logout
        [root@zyc01 ~]# su - ops03
        [ops03@qls ~]$ touch /data/ops03.txt
        [ops03@qls ~]$ ll /data/ops03.txt
        -rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 /data/ops03.txt
        [ops03@qls ~]$ logout
        [root@zyc01 ~]# ll /data/
        total 0
        -rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
        -rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
       
       
        [root@zyc01 ~]# chmod g+s /data/
        [root@zyc01 ~]# ll -d /data/
        drwxrws--- 2 root ops_group 57 Jul 24 09:11 /data/
        [root@zyc01 ~]# stat /data/
          File: ‘/data/’
          Size: 57       Blocks: 0         IO Block: 4096   directory
        Device: 803h/2051d Inode: 818813     Links: 2
        Access: (2770/drwxrws---) Uid: (    0/   root)   Gid: ( 1045/ops_group)
        Access: 2020-07-24 09:11:26.981894897 +0800
        Modify: 2020-07-24 09:11:17.173894341 +0800
        Change: 2020-07-24 09:13:03.894900384 +0800
        Birth: -
        [root@zyc01 ~]# ll /data/
        total 0
        -rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
        -rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
       
       
        [root@zyc01 ~]# echo "root" > /data/root.log
        [root@zyc01 ~]# ll /data/
        total 4
        -rw-rw-r-- 1 ops01 ops01     0 Jul 24 09:10 ops01.txt
        -rw-rw-r-- 1 ops02 ops02     0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03     0 Jul 24 09:11 ops03.txt
        -rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
        [root@zyc01 ~]# su - ops01
        Last login: Fri Jul 24 09:10:22 CST 2020 on pts/0
        [ops01@qls ~]$ echo "ops01" > /data/ops01.log
        [ops01@qls ~]$ logout
        [root@zyc01 ~]# su - ops02
        Last login: Fri Jul 24 09:10:52 CST 2020 on pts/0
        [ops02@qls ~]$ echo "ops02" > /data/ops02.log
        [ops02@qls ~]$ ll /data/
        total 12
        -rw-rw-r-- 1 ops01 ops_group 6 Jul 24 09:15 ops01.log
        -rw-rw-r-- 1 ops01 ops01     0 Jul 24 09:10 ops01.txt
        -rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 ops02.log
        -rw-rw-r-- 1 ops02 ops02     0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03     0 Jul 24 09:11 ops03.txt
        -rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
        [ops02@qls ~]$ vim /data/ops01.log
        [ops02@qls ~]$ cat /data/ops01.log
        ops01
        ops02
        [ops02@qls ~]$ umask
        0002
       
       
        [ops02@qls ~]$ ll /data/
        total 12
        -rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
        -rw-rw-r-- 1 ops01 ops01      0 Jul 24 09:10 ops01.txt
        -rw-rw-r-- 1 ops02 ops_group  6 Jul 24 09:15 ops02.log
        -rw-rw-r-- 1 ops02 ops02      0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03      0 Jul 24 09:11 ops03.txt
        -rw-r--r-- 1 root ops_group  5 Jul 24 09:14 root.log
        [ops02@qls ~]$ rm -f /data/ops01.txt
       
        [ops02@qls ~]$ ll -d /data/
        drwxrws--- 2 root ops_group 90 Jul 24 09:20 /data/
        [ops02@qls ~]$ mkdir /data/test
        [ops02@qls ~]$ ll /data/test
        total 0
        [ops02@qls ~]$ ll /data/
        total 12
        -rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
        -rw-rw-r-- 1 ops02 ops_group  6 Jul 24 09:15 ops02.log
        -rw-rw-r-- 1 ops02 ops02      0 Jul 24 09:11 ops02.txt
        -rw-rw-r-- 1 ops03 ops03      0 Jul 24 09:11 ops03.txt
        -rw-r--r-- 1 root ops_group  5 Jul 24 09:14 root.log
        drwxrwsr-x 2 ops02 ops_group  6 Jul 24 09:21 test

73、sticky 粘滞位

sticky  粘滞位     
      权限作用于 others 的x为   使用 t 表示   小t   大T
      给目录设置, 一个目录所有用户都拥有管理的权限   777   针对此目录设置一个粘滞位,  
      所有用户都可以在这个目录进行创建、删除文件 但是只能管理自己的文件,但超级管理员 root 拥有管理所
      有文件的权限。
      sticky:粘滞位 的权限是1开头的四位数.

      [root@zyc01 ~]# ll -d /tmp/
      drwxrwxrwt. 15 root root 4096 Jul 24 09:02 /tmp/
      [root@zyc01 ~]# stat /tmp/
        File: ‘/tmp/’
        Size: 4096     Blocks: 8         IO Block: 4096   directory
      Device: 803h/2051d Inode: 67108936   Links: 15
      Access: (1777/drwxrwxrwt) Uid: (    0/   root)   Gid: (    0/   root)
      Access: 2020-07-24 09:49:40.026024737 +0800
      Modify: 2020-07-24 09:02:34.229864730 +0800
      Change: 2020-07-24 09:02:34.229864730 +0800
        Birth: -
       
      [root@zyc01 ~]# mkdir   /test
      [root@zyc01 ~]# chmod 777 /test
      [root@zyc01 ~]# ll -d /test
      drwxrwxrwx 2 root root 6 Jul 24 09:50 /test
       
      [root@zyc01 ~]# echo "root" /test/root.txt
      root /test/root.txt
      [root@zyc01 ~]# echo "root" > /test/root.txt
      [root@zyc01 ~]# su - ops01
      Last login: Fri Jul 24 09:14:53 CST 2020 on pts/0
      [ops01@qls ~]$ echo "ops01" > /test/ops01.txt
      [ops01@qls ~]$ logout
      [root@zyc01 ~]# su - dev01
      Last login: Wed Jul 22 10:49:56 CST 2020 from 10.0.0.1 on pts/1
      [dev01@qls ~]$ echo "dev01" > /test/dev01.txt
      [dev01@qls ~]$ logout
      [root@zyc01 ~]# ll /test/
      total 12
       -rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
       -rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
       
      [root@zyc01 ~]# su - dev01
      Last login: Fri Jul 24 09:51:51 CST 2020 on pts/0
      [dev01@qls ~]$ ll /test/
      total 12
       -rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
       -rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
      [dev01@qls ~]$ rm -f /test/ops01.txt
      [dev01@qls ~]$ ll /test/
      total 8
       -rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
       
      [root@zyc01 ~]# chmod o+t /test/
      [root@zyc01 ~]# stat /test/
        File: ‘/test/’
        Size: 39       Blocks: 0         IO Block: 4096   directory
      Device: 803h/2051d Inode: 67588796   Links: 2
      Access: (1777/drwxrwxrwt) Uid: (    0/   root)   Gid: (    0/   root)
      Access: 2020-07-24 09:53:31.177037826 +0800
      Modify: 2020-07-24 09:53:25.993037532 +0800
      Change: 2020-07-24 09:55:02.412042992 +0800
        Birth: -
       
      [root@zyc01 ~]# su - ops01
      Last login: Fri Jul 24 09:51:32 CST 2020 on pts/0
      [ops01@qls ~]$ echo  "ops01" > /test/ops.txt
      [ops01@qls ~]$ ll /test/
      total 12
       -rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
       -rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
       
      [root@zyc01 ~]# su - dev01
      Last login: Fri Jul 24 09:52:59 CST 2020 on pts/0
      [dev01@qls ~]$ ll /test/
      total 12
       -rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
       -rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
      [dev01@qls ~]$ rm -f /test/ops.txt
       rm: cannot remove ‘/test/ops.txt’: Operation not permitted
      [dev01@qls ~]$ rm -f /test/dev01.txt
      [dev01@qls ~]$ ll /test/
      total 8
       -rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
       -rw-r--r-- 1 root root  5 Jul 24 09:51 root.txt
      [dev01@qls ~]$ logout
      [root@zyc01 ~]# rm -f /test/ops.txt
      [root@zyc01 ~]#
       

74、lsattr

lsattr  #显示文件的特殊属性

75、chattr

特殊属性不受普通权限的限制  
chattr #设置文件的特殊属性
        +a #这个文件只能追加内容和查看   别的什么都做不了 删除 移动 复制可以
        -a          #取消设置
        +i #什么都操作不了
        -i          #取消设置

        [root@zyc01 ~]# touch test.txt
        [root@zyc01 ~]# touch test.log
        [root@zyc01 ~]# ll
        total 0
         -rw-r--r-- 1 root root 0 Jul 24 10:08 test.log
         -rw-r--r-- 1 root root 0 Jul 24 10:08 test.txt
         
        [root@zyc01 ~]# lsattr test.log
         ---------------- test.log
        [root@zyc01 ~]# lsattr test.txt
         ---------------- test.txt
         
        [root@zyc01 ~]# echo "test" > test.log
        [root@zyc01 ~]# echo "test" > test.txt
        [root@zyc01 ~]# ll
        total 8
         -rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
         -rw-r--r-- 1 root root 5 Jul 24 10:09 test.txt
         
chattr  +a :#只能追加内容和查看   别的什么都做不了 删除 移动 , 但可以复制。
        [root@zyc01 ~]# chattr   +a test.log
        [root@zyc01 ~]# ll test.log
         -rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
        [root@zyc01 ~]# lsattr test.log
         -----a---------- test.log
        [root@zyc01 ~]# cat test.log
        test
        [root@zyc01 ~]# vim test.log
        [root@zyc01 ~]# vim test.log
        [root@zyc01 ~]# echo "hello" > test.log
         -bash: test.log: Operation not permitted
        [root@zyc01 ~]# echo "hello" >> test.log
        [root@zyc01 ~]# cat test.log
        test
        hello
        [root@zyc01 ~]# rm -f test.log
         rm: cannot remove ‘test.log’: Operation not permitted
        [root@zyc01 ~]# mv test.log /tmp/
         mv: cannot move ‘test.log’ to ‘/tmp/test.log’: Operation not permitted
        [root@zyc01 ~]# cp test.log /tmp/
         
chattr +i: #什么都操作不了
        [root@zyc01 ~]# chattr +i test.txt
        [root@zyc01 ~]# lsattr test.txt
         ----i----------- test.txt
        [root@zyc01 ~]# cat test.txt
        test
        [root@zyc01 ~]# rm -f test.txt
         rm: cannot remove ‘test.txt’: Operation not permitted
        [root@zyc01 ~]# mv test.txt /tmp/
         mv: cannot move ‘test.txt’ to ‘/tmp/test.txt’: Operation not permitted
        [root@zyc01 ~]# cp test.txt /tmp/
        [root@zyc01 ~]# echo "hello" > test.txt
         -bash: test.txt: Permission denied
        [root@zyc01 ~]# echo "hello" >> test.txt
         -bash: test.txt: Permission denied

Day22.分区设置

76、mount

1. mount         #挂载磁盘的命令
  选项:
         -t #指定文件系统     网络协议   nfs
     -o #指定挂载的参数
     -a #重新挂载/etc/fstab文件中的挂载列表

-t #指定文件系统     网络协议   nfs
                                      设备       挂载点
      [root@qls ~]# mount -t xfs /dev/sdb1   /fdisk01/   #指定文件系统挂载
      [root@qls ~]# df -h
      Filesystem     Size Used Avail Use% Mounted on
      /dev/sda3       98G  5.5G   92G   6% /
      devtmpfs       980M     0 980M   0% /dev
      tmpfs           991M     0 991M   0% /dev/shm
      tmpfs           991M  9.5M 981M   1% /run
      tmpfs           991M     0 991M   0% /sys/fs/cgroup
      /dev/sda1       497M 120M 378M  25% /boot
      tmpfs           199M     0 199M   0% /run/user/0
      /dev/sdb1       10G  1.1G  9.0G  11% /fdisk01
       
      [root@qls ~]# lsblk
      NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
      sda      8:0    0 100G  0 disk
      ├─sda1   8:1    0 500M  0 part /boot
      ├─sda2   8:2    0   2G  0 part [SWAP]
      └─sda3   8:3    0 97.5G  0 part /
      sdb      8:16   0 100G  0 disk
      ├─sdb1   8:17   0   10G  0 part /fdisk01
      ├─sdb2   8:18   0   1K  0 part
      └─sdb5   8:21   0   20G  0 part
      sdc      8:32   0   3T  0 disk
      └─sdc1   8:33   0   3T  0 part
      sr0     11:0    1  4.3G  0 rom  
       
-o #指定挂载的参数
      [root@qls ~]# mount -o ro /dev/sdb1 /fdisk01/     #指定参数 ro只读
      [root@qls ~]# cp /etc/hosts /fdisk01/
       cp: cannot create regular file ‘/fdisk01/hosts’: Read-only file system
       
-a #重新挂载/etc/fstab文件中的挂载列表
      [root@qls ~]# tail -1 /etc/fstab
      /dev/sdc1         /gdisk01               xfs     defaults        0 0
       
      [root@qls ~]# mount -a   #重新加载即可

77、umount

#卸载挂载点  
      选项:
             -l #强制卸载  
不加选项直接卸载:  
      [root@qls ~]# umount   /dev/sdb1
      [root@qls ~]# df -h | grep '/dev/sdb1'
       
不加选项在挂载的目录中进行卸载时,无法卸载。要退出卸载目录
      [root@qls ~]# cd /fdisk01/
      [root@qls fdisk01]# umount /fdisk01 #不能在挂载的目录中进行卸载 。提示无法卸载
      umount: /fdisk01: target is busy.
              (In some cases useful info about processes that use
                the device is found by lsof(8) or fuser(1))
               
-l #强制卸载
      [root@qls fdisk01]# umount -l /dev/sdb1 #可以强制卸载

78、blkid

 #显示磁盘分区的UUID号

79、lsblk

#显示所有磁盘的所有分区情况

80、fdisk

对磁盘使用fdisk方式进行分区

#直接使用,对sdb磁盘进行分区。并进入命令模式
      [root@qls ~]# fdisk   /dev/sdb   #对sdb磁盘进行分区。并进入命令模式:
      Welcome to fdisk (util-linux 2.23.2).
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      Device does not contain a recognized partition table
      Building a new DOS disklabel with disk identifier 0x5b8d3e75.
      Command (m for help): m  
       
-l   :#显示某块磁盘的分区信息
      [root@qls ~]# fdisk   -l /dev/sdb

81、mkfs

格式化命令。后接格式种类。
                 
      [root@qls ~]# mkfs.xfs   /dev/sdb1     #将sdb1分区格式化成xfs格式。
       meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
                =                       sectsz=512   attr=2, projid32bit=1
                =                       crc=1        finobt=0, sparse=0
      data     =                       bsize=4096   blocks=2621440, imaxpct=25

82、gdisk

创建gdisk形式的分区

#直接使用,对sdb磁盘进行分区。并进入命令模式
      [root@qls ~]# gdisk   /dev/sdc
      Command (? for help): ?    

-l     显示某块磁盘的分区信息
   
      [root@qls ~]# gdisk -l /dev/sdc     #显示某块磁盘的分区信息

83、blkid

#显示磁盘分区的UUID号 ,使用UUID号对磁盘进行挂载
[root@qls ~]# mount UUID="0668e9f1-7d37-42eb-9e79-980f6352c342"   /fdisk01/
      [root@qls ~]# df -h | grep 'fdisk'
      /dev/sdb1       10G  1.1G  9.0G  11% /fdisk01

84、free

free -m   #显示内存使用情况

85、swapon

swapon  -a  #启用swap虚拟内存
swapon  -s  #显示swap分区信息
[root@qls ~]# swapon   /dev/sdb3   #将/dev/sdb3 添加到swap分区里

86、swapoff

swapoff -a  #禁用swap虚拟内存
[root@qls ~]# swapoff   /dev/sdb3   #移除虚拟内存里的/dev/sdb3分区。

86、mkswap

设置为swap分区
[root@qls ~]# mkswap   /dev/sdb3   将这个分区设置为swap分区

87、netstat

[root@backup ~]# netstat -lntp  #查看端口信息
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      18673/rsync
tcp6       0      0 :::873                 :::*                   LISTEN      18673/rsync  

88、source

1. source .bash_profile   #重新生效个人环境配置文件

89、export

1. export RSYNC_PASSWORD=123456  #临时设置,退出后即消失。想长久存在的话需要写入环境变量文件中
2. export  -n RSYNC_PASSWORD=123456 #取消临时生效
3. 查看系统所有的环境变量
export

90、rsync

1)常用选项

-a           #归档模式传输, 等于-tropgDl    -t -r -o -p -g -D -l
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-P           #显示同步的过程及传输时的进度等信息

-D           #保持设备文件信息
-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--partial           #断点续传
--password-file=xxx #使用密码文件

2)限速演示

--bwlimit=100       #限速传输

[root@web01 /tmp]# rsync -avP --bwlimit 100 /tmp/ rsync_backup@172.16.1.41::backup
sending incremental file list
./
data.txt
     5,537,792   1%  100.04kB/s

3)数据一致

--delete            #让目标目录和源目录数据保持一致

#推:数据与推送数据的源数据一致
[root@web01 /tmp]# rsync -avP --delete /tmp/ rsync_backup@172.16.1.41::backup
sending incremental file list
deleting file2
deleting file1

sent 223 bytes received 43 bytes  532.00 bytes/sec
total size is 0 speedup is 0.00

#推:数据与拉取数据的源数据一致
[root@web01 /tmp]# rsync -a -v -P rsync_backup@172.16.1.41::backup /tmp --delete
receiving incremental file list
deleting file4
deleting file3
./

sent 32 bytes received 203 bytes  470.00 bytes/sec
total size is 0 speedup is 0.00

91、tar

tar命令 : 不负责压缩,只负责归档打包,he其他压缩命令一起使用。
    选项:
          z        #使用gzip格式进行压缩
          j        #使用bzip2格式进行压缩   *了解
          J        #使用xz格式进行压缩       *了解
          c        #创建压缩包
          v        #显示过程
          f        #指定压缩包的名称
          czf        #打包压缩 tar.gz格式的压缩包
          cjf        #打包压缩 tar.bz2格式的压缩包 *了解
          cJf        #打包压缩 tar.xz格式的压缩包 *了解
          t        #查看压缩中的内容
          tf        #指定要查看的压缩包名称
          x        #解压
          xf        #解压指定的压缩包
          -C(大c)  #解压到指定的目录
          h        #打包软连接的真实路径
          P        #使用绝对路径打包
          X (大X)  #指定排除文件的列表文件
          --exclude= #指定排除的文件
          --exclude-from= #指定排除文件的列表

czf  #使用gzip格式进行压缩, 并指定名称为tar.gz格式的压缩包
        [root@qls ~]# tar czf services.tar.gz   services
        [root@qls ~]# ll
        total 792
         -rw-r--r-- 1 root root 670293 Jul 29 09:47 services
         -rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz

cjf #使用bzip2格式进行压缩,并指定名称为 tar.bz2格式的压缩包
        [root@qls ~]# tar cjf services.tar.bz2 services
        [root@qls ~]# ll
        total 916
         -rw-r--r-- 1 root root 670293 Jul 29 09:47 services
         -rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
         -rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz
         
cJf #使用xz格式进行压缩,并指定名称为tar.xz格式的压缩包
        [root@qls ~]# tar cJf services.tar.xz services
        [root@qls ~]# ll
        total 1016
         -rw-r--r-- 1 root root 670293 Jul 29 09:47 services
         -rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
         -rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz
         -rw-r--r-- 1 root root 100640 Jul 29 09:49 services.tar.xz
                 
tf  #指定要查看的压缩包名称
        [root@qls ~]# tar tf services.tar.gz
        services
         
xf #解压指定的压缩包
        [root@qls ~]# tar xf services.tar.gz
        [root@qls ~]# ll
        total 10952
         -rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
         -rw-r--r-- 1 root root   670293 Jul 29 09:47 services
         -rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
         -rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
         -rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
         
        [root@qls ~]# tar xf etc.tar.gz
        [root@qls ~]# ll
        total 10964
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
         -rw-r--r--  1 root root   670293 Jul 29 09:47 services
         -rw-r--r--  1 root root   124166 Jul 29 09:48 services.tar.bz2
         -rw-r--r--  1 root root   136200 Jul 29 09:48 services.tar.gz
         -rw-r--r--  1 root root   100640 Jul 29 09:49 services.tar.xz


#解压的时候,自动识别压缩包的格式
        [root@qls ~]# tar xf etc.tar.bz2 #解压的时候,自动识别压缩包的格式
        [root@qls ~]# ll
        total 26820
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root  8994047 Jul 29 10:01 etc.tar.bz2
         -rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
         -rw-r--r--  1 root root  7238084 Jul 29 10:01 etc.tar.xz
         
-C(大c) #解压到指定的目录
        [root@qls ~]# tar xf etc.tar.gz   -C /opt/
        [root@qls ~]# ll /opt/
        total 668
        drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 670293 Jul 29 09:47 services
         
v #显示压缩或者解压的过程
        [root@qls ~]# tar czvf etc.tar.gz   /etc
         
        [root@qls ~]# tar xvf etc.tar.gz
         
#压缩软链接文件:
    #直接压缩软链接文件,解压后软链接失效,
        [root@qls ~]# ll /bin -d
        lrwxrwxrwx. 1 root root 7 Jul  6 02:13 /bin -> usr/bin
        [root@qls ~]# tar czf bin.tar.gz /bin
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 9952
         -rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
        [root@qls ~]# tar xf bin.tar.gz
        [root@qls ~]# ll
        total 9952
        lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
         -rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
         
  h  #打包软连接的真实路径
        [root@qls ~]# tar czhf bin1.tar.gz /bin
        tar: Removing leading `/' from member names
        tar: Removing leading `/' from hard link targets
        [root@qls ~]# ll
        total 36880
        lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
         -rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
         -rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
                             
#压缩时,默认会自动删根,
        [root@qls ~]# tar czf etc.tar.gz   /etc
        tar: Removing leading `/' from member names #删根的操作是正常的
         
        [root@qls ~]# tar cjf etc.tar.bz2   /etc
        tar: Removing leading `/' from member names
         
        [root@qls ~]# tar cJf etc.tar.xz   /etc
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 26808
         -rw-r--r-- 1 root root  8994047 Jul 29 10:01 etc.tar.bz2
         -rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
         -rw-r--r-- 1 root root  7238084 Jul 29 10:01 etc.tar.xz
         -rw-r--r-- 1 root root   670293 Jul 29 09:47 services
         -rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
         -rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
         -rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
         
#打包的时候有个删根的操作,怎么避免这个删根的操作。

   #第一种   使用相对路径打包
        [root@qls ~]# cd /  
        [root@qls /]# tar czf /root/etc1.tar.gz   etc
        [root@qls /]# ll /root
        total 46852
        dr-xr-xr-x  2 root root    20480 Jul 29 08:58 bin
         -rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
         -rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
        drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root 10171684 Jul 29 10:19 etc1.tar.gz
         -rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
         
      #真实打包场景
        [root@qls ~]# cd / && tar czf /root/etc3.tar.gz   etc && cd -
        /root
        [root@qls ~]# ll
        total 581012
         -rw-r--r--  1 root root  10171684 Jul 29 10:22 etc3.tar.gz
         
         
#第二种方法   使用绝对路径打包,告诉系统不要删根
P  #使用绝对路径打包
         #使用绝对路径打包
        [root@qls ~]# tar czPf etc4.tar.gz   /etc
         
         #使用绝对路经解压
        [root@qls ~]# tar xPf etc4.tar.gz
         
        [root@qls ~]# cat /etc/services >> /opt/services
        [root@qls ~]# ll /opt/
        total 1744
        drwxr-xr-x 77 root root    8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root     158 Jul 29 10:28 hosts
         -rw-r--r--  1 root root 1340586 Jul 29 10:29 services
         
        [root@qls ~]# tar xPf opt.tar.gz
        [root@qls ~]# ll /opt/
        total 672
        drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root    158 Jul 29 10:28 hosts
         -rw-r--r--  1 root root 670293 Jul 29 09:47 services
         
         
#排除不需要打包的文件
 #使用--exclude= 排除
        [root@qls ~]# tar czf etc2.tar.gz   --exclude=/etc/services   /etc
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 19740
         -rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
         -rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
        [root@qls ~]# tar tf etc2.tar.gz | grep services
        etc/firewalld/services/
         
  #排除多个文件:--exclude=   --exclude=
        [root@qls ~]# tar czf etc3.tar.gz --exclude=/etc/services --exclude=/etc/passwd /etc
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 29544
         -rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
         -rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
        [root@qls ~]# tar tf etc3.tar.gz | grep -E 'services|passwd'
        etc/security/opasswd
        etc/passwd-
        etc/pam.d/passwd
        etc/firewalld/services/
         
#如果要排除的文件在同一目录下,可以使用{ ,}。
        [root@qls ~]# tar czf etc4.tar.gz --exclude=/etc/{services,passwd}   /etc
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 39348
         -rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
         -rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
         
#排除文件数量大时,可以使用文件列表形式:两种方法
        [root@qls ~]# cat paichu.list   #创建要排除的文件列表。
        /etc/fstab
        /etc/group
        /etc/hosts
        /etc/passwd
        /etc/services
         
  1.X (大X)#指定排除文件的列表文件
        [root@qls ~]# tar czfX   etc5.tar.gz   paichu.list   /etc   # f 和X指定的文件位置要对应。
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 49152
         -rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
         -rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
         -rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
         -rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list
         
  2. --exclude-from=paichu.list
        [root@qls ~]# tar czf etc6.tar.gz   --exclude-from=paichu.list   /etc
        tar: Removing leading `/' from member names
        [root@qls ~]# ll
        total 58952
         -rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
         -rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
         -rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
         -rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
         -rw-r--r-- 1 root root 10033927 Jul 29 11:01 etc6.tar.gz
         -rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list

92、tar命令与find结合

tar命令与find结合

  示例:将find命令找出的文件打包:几种方法对比:
   
       1. [root@qls ~]# tar czf log1.tar.gz   `find /var/log/ -type f -name "*.log"`
          tar: Removing leading `/' from member names
         
       2. [root@qls ~]# tar czf log2.tar.gz   $(find /var/log/ -type f -name "*.log")
          tar: Removing leading `/' from member names
         
       3. [root@qls ~]# find /var/log/ -type f -name "*.log" -exec tar czf log3.tar.gz {} \;
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names
          tar: Removing leading `/' from member names

       4. [root@qls ~]# find /var/log/ -type f -name "*.log" | xargs tar czf   log4.tar.gz  
          tar: Removing leading `/' from member names
         
         
#查看压缩情况:1.2.4种方法压缩后文件大小一致,3方法压缩后文件很小
          [root@qls ~]# ll
          total 916
          -rw-r--r-- 1 root root 309155 Jul 29 11:09 log1.tar.gz
          -rw-r--r-- 1 root root 309155 Jul 29 11:09 log2.tar.gz
          -rw-r--r-- 1 root root    356 Jul 29 11:10 log3.tar.gz
          -rw-r--r-- 1 root root 309155 Jul 29 11:10 log4.tar.gz
         
        1.[root@qls ~]# tar tf log1.tar.gz  
          var/log/tuned/tuned.log
          var/log/audit/audit.log
          var/log/anaconda/anaconda.log
          var/log/anaconda/X.log
          var/log/anaconda/program.log
          var/log/anaconda/packaging.log
          var/log/anaconda/storage.log
          var/log/anaconda/ifcfg.log
          var/log/anaconda/ks-script-3PCKae.log
          var/log/anaconda/journal.log

       3. [root@qls ~]# tar tf log3.tar.gz  
          var/log/vmware-network.log
         
#总结:   1.当使用-exec时,find查找的文件是一个一个赋值给{}的(即找出一个文件传递一个文件)。
            #tar压缩时,也会是一个一个压缩,因为名称相同,压缩下一个时会将前一个压缩过的包给替换掉。
         
#         2.当使用xargs时,find命令先查找出所有的文件来,查找结束后再统一将所有符合条件的文件赋值给了后面。
           

93、 date

date命令 #显示系统时间 

          [root@qls ~]# date
          Wed Jul 29 11:19:19 CST 2020
           
          [root@qls ~]# date +%Y #世纪
           2020
          [root@qls ~]# date +%y #年代
           20
          [root@qls ~]# date +%m #月份
           07
          [root@qls ~]# date +%d #日期
           29
           
          [root@qls ~]# date +%Y-%m-%d
           2020-07-29
           
date +%F  === date  +%Y-%m-%d  #显示日期

          [root@qls ~]# date +%F #显示日期
           2020-07-29
           
          [root@qls ~]# date +%H #时
           11
          [root@qls ~]# date +%M #分
           23
          [root@qls ~]# date +%S #秒
           24
          [root@qls ~]# date
          Wed Jul 29 11:23:28 CST 2020
           
date +%T === date +%H:%M:%S #显示时间

          [root@qls ~]# date +%H:%M:%S
           11:23:43
          [root@qls ~]# date +%T #显示时间
           11:24:08
          [root@qls ~]# date +%F-%T
           2020-07-29-11:24:34
          [root@qls ~]# date +%w #周几
           3
          [root@qls ~]# date +%W #今年第几周
           30
          [root@qls ~]# date +%s #距离1970年1月1日0分0秒过来多少秒
           1595993167
           
选项:      
-d #自定义日期
-s #修改日期   时间
         
          [root@qls ~]# date +%F
           2020-07-29
          [root@qls ~]# date -d "-1 day" +%F
           2020-07-28
          [root@qls ~]# date -d "+1 day" +%F
           2020-07-30
          [root@qls ~]# date -d "+1 month" +%F
           2020-08-29
          [root@qls ~]# date -d "-1 month" +%F
           2020-06-29
          [root@qls ~]# date -d "-1 year" +%F
           2019-07-29
          [root@qls ~]# date -d "+1 year" +%F
           2021-07-29
          [root@qls ~]# date
          Wed Jul 29 11:31:42 CST 2020
          [root@qls ~]# date -s 20200730
          Thu Jul 30 00:00:00 CST 2020
          [root@qls ~]# date
          Thu Jul 30 00:00:08 CST 2020
          [root@qls ~]# date -s 2020/07/29
          Wed Jul 29 00:00:00 CST 2020
          [root@qls ~]# date
          Wed Jul 29 00:00:02 CST 2020
          [root@qls ~]# date -s 11:32:30
          Wed Jul 29 11:32:30 CST 2020
          [root@qls ~]# date
          Wed Jul 29 11:32:31 CST 2020
          [root@qls ~]# date -s "20200730 11:00:00"
          Thu Jul 30 11:00:00 CST 2020  
           
#时间同步 ntpdate
           
          [root@qls ~]# yum install ntpdate -y  
          向时间服务器进行同步时间
          ntp.aliyun.com  
          ntp1.aliyun.com   ....   ntp7.aliyun.com  
          [root@qls ~]# ntpdate   ntp.aliyun.com
           29 Jul 11:36:33 ntpdate[31370]: step time server 203.107.6.88 offset -84415.000442 sec
          [root@qls ~]# date
          Wed Jul 29 11:36:35 CST 2020
          [root@qls ~]# date -s 20200730
          Thu Jul 30 00:00:00 CST 2020
          [root@qls ~]# ntpdate   ntp.aliyun.com
           29 Jul 11:36:56 ntpdate[31392]: step time server 203.107.6.88 offset -44591.413933 sec
          [root@qls ~]# date
          Wed Jul 29 11:37:02 CST 2020

94、ps

ps   #显示静态进程的命令,静态显示  
选项:
  a #显示所有进程
  u #显示有效的用户或者uid
  x #显示没有终端
  aux      #一般会组合起来使用。
      或者使用以下:  
  -e #显示所有进程
  -f #显示用户PPID  
  -ef #显示所有的进程及进程的PPID
      -C(大)       #指定显示某个服务的进程
两种选项结果对比:
   #命令1:ps aux
          [root@zyc01 ~]# ps aux
          USER       PID %CPU %MEM   VSZ   RSS TTY     STAT START   TIME   COMMAND
          root          1  0.0  0.1 125420  2112 ?       Ss   Aug03   0:03 /usr/lib/systemd/systemd
                                                                          --switched-root --system --des
          root          2  0.0  0.0      0     0 ?       S   Aug03   0:00 [kthreadd]
  分列解释:
          USER #进程运行的身份 用户        
          PID #进程的ID号
          PPID #父进程的ID号
          %CPU #进程占用CPU的百分比
          %MEM   #进程占用内存的百分比  
          VSZ #虚拟内存集:进程占用虚拟内存的大小  
          RSS #物理内存集:进程占用物理内存的大小
          TTY #终端
          ?     #没有终端   内核运行的程序
          tty1     #机器的终端 服务器的本地
          pts/0     #虚拟远程终端  
          STAT #进程的状态
          S     #休眠的状态
          R     #正在运行的状态
          D     #无法中断的休眠状态
          T     #暂停或被追踪的状态
          Z     #僵尸状态
          s     #父进程
          <     #优先级高
          N     #优先级低
          l     #多线程
          +     #在前台运行    
          START    #进程的启动时间
          TIME #进程占用CPU的时间
          COMMAND #执行的指令或者命令
          [] #内核运行的
          无[] #用户运行的  
           
   #命令2:ps -ef
          [root@zyc01 ~]# ps -ef
          UID         PID   PPID C STIME TTY         TIME CMD
          root          1      0  0 Aug03 ?        00:00:03 /usr/lib/systemd/systemd --switched-root
                                                                              --system --deserialize 22
          root          2      0  0 Aug03 ?        00:00:00 [kthreadd]

-C(大) #指定显示某个服务的进程
    [root@lb01 ~]# ps -C nginx
      PID TTY         TIME CMD
     7996 ?        00:00:00 nginx
     7997 ?        00:00:00 nginx

    #显示nginx的进程,并去除标题信息
    [root@lb01 ~]# ps -C nginx --no-header
     7996 ?        00:00:00 nginx
     7997 ?        00:00:00 nginx
   
-A(大)指定显示某个服务的进程,不带头部标题信息
    [root@lb01 ~]# ps -A nginx
    7996 ?        00:00:00 nginx
    7997 ?        00:00:00 nginx

95、 zip

zip命令 :可以对文件和目录进行打包,需要指定压缩包的名称 ,不会删除源文件

        [root@qls ~]# yum install -y zip unzip : 先下载安装压缩和解压命令包
         
        zip #压缩的命令
        选项:
        -r #压缩目录
        -q #静默输出,不显示压缩的过程
        unzip #解压zip格式的压缩包,解压后,压缩文件不会被删除。
        选项:
        -l #查看压缩包中的列表信息
        -q #静默输出,不显示解压的过程
        -d #指定解压的目录  
示例:
zip
    #针对文件进行压缩打包
        [root@qls ~]# zip services.zip   services
          adding: services (deflated 80%)
        [root@qls ~]# ll
        total 792
         -rw-r--r-- 1 root root 670293 Jul 29 08:45 services
         -rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip
         
    #压缩目录时不加选项,只会压缩目录本身
        [root@qls ~]# zip etc.zip /etc
          adding: etc/ (stored 0%)
        [root@qls ~]# ll
        total 796
         -rw-r--r-- 1 root root    158 Jul 29 09:07 etc.zip
         -rw-r--r-- 1 root root 670293 Jul 29 08:45 services
         -rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip
        [root@qls ~]# unzip -l etc.zip   #查看压缩包中的列表信息
        Archive: etc.zip
          Length     Date   Time   Name
         ---------  ---------- -----   ----
                 0  07-29-2020 08:56   etc/
         ---------                     -------
                 0                     1 file                
    -r #压缩目录
        [root@qls ~]# zip -r etc.zip /etc
        [root@qls ~]# ll -h
        total 13M
         -rw-r--r-- 1 root root 12M Jul 29 09:10 etc.zip
         -rw-r--r-- 1 root root 655K Jul 29 08:45 services
         -rw-r--r-- 1 root root 134K Jul 29 09:06 services.zip
        [root@qls ~]# du -sh /etc
        31M /etc    
    -q #静默输出,不显示压缩的过程
        [root@qls ~]# zip -rq   etc1.zip /etc
        [root@qls ~]# ll
        total 24976
         -rw-r--r-- 1 root root 12380952 Jul 29 09:13 etc1.zip
         -rw-r--r-- 1 root root 12380952 Jul 29 09:10 etc.zip
         -rw-r--r-- 1 root root   670293 Jul 29 08:45 services
         -rw-r--r-- 1 root root   136227 Jul 29 09:06 services.zip      
unzip
  -l #查看压缩包里面的文件  
        [root@qls ~]# unzip -l etc.zip      
  #解压
        [root@qls ~]# unzip   etc.zip        
  -q #静默解压文件,将文件解压到指定的目录下面
        [root@qls ~]# unzip -q etc.zip   -d /opt/
        [root@qls ~]# ll /opt/
        total 12
        drwxr-xr-x 85 root root 8192 Jul 29 08:56 etc
         -rw-r--r--  1 root root    0 Jul 28 12:09 file9

96、gzip

gzip  #只能压缩文件,压缩文件的同时,会删除源文件;解压的时候,会删除压缩文件。文件后缀为: .gz
    选项:
        -d #解压
        -r #递归操作,针对目录。
直接使用:
          [root@qls ~]# gzip   he
          [root@qls ~]# ll
          total 136
          -rw-r--r-- 1 root root 136088 Jul 29 08:45 he.gz          
zcat #命令查看gzip压缩的文件  
        [root@zyc01 ~]# zcat he.gz
        haoahhahfvnsajfjhejvd        
-r #递归操作,针对目录。将目录下的所有都进行压缩处理
          [root@qls ~]# gzip -r   /etc
-d #解压  
          [root@qls ~]# gzip -d he.gz
          [root@qls ~]# ll
          total 656
          -rw-r--r-- 1 root root 670293 Jul 29 08:45 he    
  #解压目录下的所有压缩包
          [root@qls ~]# gzip -rd /etc

96、nginx

nginx -t :测试验证配置文件和语法检测
nginx -s reload :重新加载配置文件
nginx -v : 查看nginx版本号
nginx -大V:显示nginx版本、编译器版本和配置参数信息
nginx -c :指定配置文件


97、df

df(英文全拼:disk free) :命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
-a 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-m 以 MB 为单位显示容量;
-k 以 KB 为单位显示容量,默认以 KB 为单位;
-h 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
-T 显示该分区的文件系统名称;
-i 不用硬盘容量显示,而是以含有 inode 的数量来显示。

[root@localhost ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm
由 df 命令显示出的各列信息的含义分别是:
Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
Used:表示用掉的硬盘空间大小;
Available:表示剩余的硬盘空间大小;
Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-02-27 19:57  行哥  阅读(261)  评论(0)    收藏  举报