美文网首页
Linux文件查看相关命令

Linux文件查看相关命令

作者: david161 | 来源:发表于2023-07-05 15:48 被阅读0次

    文件查看命令使用示例

    cat file1      #从第一个字节开始正向查看文件的内容
    tac file1      #从最后一行开始反向查看一个文件的内容
    more file1     #查看一个长文件的内容
    less file1     #类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
    head -2 file1    #查看一个文件的前两行
    tail -2 file1    #查看一个文件的最后两行
    tail -f /var/log/messages     #实时查看被添加到一个文件中的内容
    

    grep命令

    grep命令是非常重要的命令,可以对文本进行查找和搜索 ,grep是Global Regular Expression Print(全局正则表达式搜索)的缩写。

    ps -ef | grep svn 查找指定进程
    ps -ef | grep svn -c 查找指定进程个数

    常用参数如下:

    -a  #不要忽略二进制数据
    -A  #除了显示符合范本样式的那一行之外,并显示该行之后的内容
    -b  #在显示符合范本样式的那一行之外,并显示该行之前的内容
    -B  #除了显示符合样式的那一行之外,并显示该行之前的内容
    -c  #计算符合范本样式的列数
    -C  #除了显示符合范本样式的那一列之外,并显示该列之前后的内容
    -d  #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
    -e  #指定字符串作为查找文件内容的范本样式
    -E  #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
    -f  #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
    -F  #将范本样式视为固定字符串的列表
    -G  #将范本样式视为普通的表示法来使用
    -h  #在显示符合范本样式的那一列之前,不标示该列所属的文件名称
    -H  #在显示符合范本样式的那一列之前,标示该列的文件名称
    -i  #忽略字符大小写的差别
    -l  #列出文件内容符合指定的范本样式的文件名称
    -L  #列出文件内容不符合指定的范本样式的文件名称
    -n  #在显示符合范本样式的那一列之前,标示出该列的编号
    -q  #不显示任何信息
    -R/-r #此参数的效果和指定“-d recurse”参数相同
    -s  #不显示错误信息
    -v  #反转查找
    -V  #显示版本信息   
    -w  #只显示全字符合的列
    -x  #只显示全列符合的列
    -y  #此参数效果跟“-i”相同
    -o  #只输出文件中匹配到的部分
    正则表达式
    ^  #匹配以XX开头的行
    $  #匹配以XX结尾的行
    

    常用示例:

    # 在多个文件中查找:
    grep "file" file_1 file_2 file_3 
    
    # 输出除之外的所有行 -v 选项:
    grep -v "file" file_name
    
    # 标记匹配颜色 --color=auto 选项:
    grep "file" file_name --color=auto
    
    # 使用正则表达式 -E 选项:
    grep -E "[1-9]+"
    egrep "[1-9]+"
    
    # 只输出文件中匹配到的部分 -o 选项:
    echo this is a test line. | grep -o -E "[a-z]+\."
    line.
    
    echo this is a test line. | egrep -o "[a-z]+\."
    line.
    
    # 统计文件或者文本中包含匹配字符串的行数-c 选项:
    grep -c "text" file_name
    2
    
    # 输出包含匹配字符串的行数 -n 选项:
    grep "text" -n file_name
    或
    cat file_name | grep "text" -n
    
    # 多个文件
    grep "text" -n file_1 file_2
    
    # 搜索多个文件并查找匹配文本在哪些文件中:
    grep -l "text" file1 file2 file3...
    
    # grep递归搜索文件,在多级目录中对文本进行递归搜索:
    grep "text" . -r -n
    
    # 忽略匹配样式中的字符大小写:
    echo "hello world" | grep -i "HELLO"
    hello
    
    # 选项 -e 指定多个匹配样式:
    echo this is a text line | grep -e "is" -e "line" -o
    is
    line
    
    # 也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。
    cat patfile
    aaa
    bbb
    echo aaa bbb ccc ddd eee | grep -f patfile -o  
    
    # 在grep搜索结果中包括或者排除指定文件:只在目录中所有的.php和.html文件中递归搜索字符"main()"
    grep "main()" . -r --include *.{php,html}   
    
    # 在搜索结果中排除所有README文件
    grep "main()" . -r --exclude "README"  
    
    # 在搜索结果中排除filelist文件列表里的文件
    grep "main()" . -r --exclude-from filelist  
    

    which命令

    which,whereis,locate命令
    这三个命令都用于搜索文件路径,使用示例

    locate *.ps        寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 
    whereis halt      显示一个二进制文件、源码或man的位置 
    which halt         显示一个二进制文件或可执行文件的完整路径 
    

    which命令用于用户查找命令所有路径,这里显示的时绝对路径。同时which命令也可以看到某个系统命令是否存在。
    语法格式

    which [options] [--] programname [...]
    

    选项说明

    -a  #打印每个匹配文件名的所有匹配路径名
    -V  #打印版本信息
    

    退出状态说明

    0 #找到了所有文件名,所有文件都是可执行的
    1 #找不到一个或多个文件名,或者文件名不可执行
    2 #指定的选项无效
    

    应用举例

    # 搜索ls
    [root@localhost sysconfig]# which ls
    alias ls='ls --color=auto'
        /usr/bin/ls
    
    [root@centos7 ~]# which which
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
     /usr/bin/alias
     /usr/bin/which
    [root@centos7 ~]# which ls
    alias ls='ls --color=auto'
     /usr/bin/ls
    [root@centos7 ~]# which pwd
    /usr/bin/pwd
    [root@centos7 ~]# which rz
    /usr/bin/rz
    [root@centos7 ~]# which ifconfig
    /usr/sbin/ifconfig
    

    whereis命令

    whereis命令相对于which命令,whereis命令搜索的范围更大,它可以查找二进制程序、代码相关文件路径。
    和find命令命令比,whereis查找非常快,因为Linux将系统里所有文件记录在一个数据库文件中,whereis是直接从数据库文件中查找。而find命令是遍历硬盘来查找,所以whereis会比find快。
    语法格式

    whereis [ OPTIONS ] file name...
    

    选项说明

    -b  #只查找二进制文件
    -B<目录>  #只在指定的目录下查找二进制文件
    -f  #不显示文件名前的路径名称
    -m  #只查找说明文件
    -M<目录>  #只在指定的目录下查找说明文件
    -s  #只查找原始代码文件
    -S<目录>  #只在指定的目录下查找原始代码文件
    -u  #查找不包含指定类型的文件
    

    应用举例

    #将相关的所有文件都查找出来
    [root@centos7 ~]# whereis ifconfig
    ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
    [root@centos7 ~]# whereis top
    top: /usr/bin/top /usr/share/man/man1/top.1.gz
    
    #只将二进制文件查找出来
    [root@centos7 ~]# whereis -b ifconfig
    ifconfig: /usr/sbin/ifconfig
    [root@centos7 ~]# whereis -b top
    top: /usr/bin/top
    

    locate命令

    locate命令的搜索不特定于命令或者软件包,而是能够找到任何类型的文件。如果没有该命令的话,需要通过apt-get install locate或者yum install locate命令安装。

    file命令

    file命令用于获取文件属性,查看指定文件的类型。
    这里再回顾一下linux的文件类型:

    普通文件   #属性信息表示为 - 
    目录文件   #属性信息表示为 d
    链接文件   #属性信息表示为 l
    套接字文件   #属性信息表示为 s
    字符设备文件   #属性信息表示为 b
    块设备文件    #属性信息表示为 c
    管道文件   #属性信息表示为 p
    

    命令格式

    file [选项] [文件名或目录名]
    

    选项说明

    -b:#列出结果,但不显示文件名称
    -c:#详细显示指令执行过程
    -L:#显示链接文件的源文件类型
    -m<魔法数字文件>:#指定魔法数字文件
    -v:#打印出版本信息
    -z:#查看压缩文件的内容
    

    应用示例

    [root@localhost sysconfig]# file sshd
    sshd: ASCII text
    
    #查看文件类型
    [root@centos7 testdir]# file cp
    cp: symbolic link to `/usr/bin/cp`
    [root@centos7 testdir]# file dir
    dir: directory
    [root@centos7 testdir]# file test2.txt
    test2.txt: empty
    [root@centos7 testdir]# file test2.txt~
    test2.txt~: empty
    
    #直接显示结果,不显示文件名
    [root@centos7 testdir]# file -b dir
    directory
    
    #解读压缩文件的内容
    [root@centos7 ~]# file -z httpd-2.4.46.tar.gz
    httpd-2.4.46.tar.gz: POSIX tar archive (GNU) (gzip compressed data, was "httpd-2.4.46.tar", from Unix, last modified: Sat Aug  1 10:12:01 2020, max compression)
    

    nl命令

    nl命令用于显示行号
    nl [-bnw] 文件
    选项与参数:
    -b: 指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);
    -n :列出行号表示的方法,主要有三种:
    -n ln :行号在荧幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
    -w :行号栏位的占用的位数。

    more命令

    more命令用于分页显示文件内容
    more file1 查看一个长文件的内容,支持一页一页翻动
    快捷健
    morm命令运行的时候,支持以下几个按键操作:

    空白键 (space):代表向下翻一页;
    Enter:代表向下翻『一行』;
    /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
    :f:立刻显示出档名以及目前显示的行数;
    q:代表立刻离开 more ,不再显示该文件内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
    H 键  #显示帮助信息
    |  #输入一个模式,可以在当前文本内容查找一个相匹配的模式
    

    命令格式

    more [选项] [文件名]
    more [option] [file ...]
    

    选项说明

    -<数字>  #指定每页显示的行数
    -c  #不进行滚屏操作
    -s  #将多个空行压缩成一行显示
    -u  #去除下划线
    +<数字>  #从指定的行开始显示
    

    应用举例

    #查看文件mingongge的内容,在显示之前先清屏并且显示当前页数的百分比
    more -dc mingongge
    
    #显示文件mingongge的内容,每100行显示一次,显示之前清屏
    more -c -100 mingongge
    
    #从第十行开始显示mingongge.txt文件内容
    more +10 mingongge.txt
    
    #从包含字符串 "mingonggee" 行开始显示mingongge.txt文件内容
    more +/"mingonggee" mingonggee.txt
    
    #用ls打印当前目录列表,配合more分页显示
    ls | more
    

    less命令

    less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
    less运行时可以输入的命令有:

    空白键:#向下翻动一页;
    [pagedown]:#向下翻动一页;
    [pageup]:#向上翻动一页;
    /字串:#向下搜寻『字串』的功能;
    ?字串:#向上搜寻『字串』的功能;
    n:#重复前一个搜寻 (与 / 或 ? 有关!)
    N:#反向的重复前一个搜寻 (与 / 或 ? 有关!)
    q:#离开 less 这个程序;
    
    

    命令格式

    less [选项] [文件名]
    less [option] [file ...]
    

    选项说明

    e  #文件内容显示完成后,自动退出
    f  #强制显示文件
    g  #不加亮显示
    l  #忽略大小写
    N  #行首显示行号
    s  #合并多个空行只显示一行
    S  #不换行显示内容
    x<数字>   #将TAB字符显示为指定个数的空格字符
    

    应用举例

    #分页显示mingongge.log文件内容
    less /var/log/mingongge.log
    
    #显示文件mingongge的内容,并在每行行首加上行号
    less -N mingongge.txt
    
    #下/上一页:
    <Space> (down), b (up)
    
    #less 命令转到文件的末尾/开始:
    G (end), g (start)
    
    #向前查找字符串(按 n N 跳转到下一个/上一个)
    /mingongge
    #向后查找字符串(按 n N 跳转到下一个/上一个)
    ?mingongge
    
    #退出 less 命令
    q
    

    head命令

    head命令用于查看文件的前面几行,默认只显示文件的头10行内容。
    命令格式

    head [选项] [文件名]
    head [OPTION] [FILE]
    

    比如:
    head [-n number]
    head -2 file1 查看一个文件的前两行
    选项说明

    -n<数字>  #按指定行数显示(从文件开头位置计算)
    -c<字符数>  #按指定的字符数显示(从文件的第一个字符开始计算)
    -v  #显示文件名信息
    -q  #不显示文件名信息
    --help     #打印帮助信息后退出
    --version  #打印版本信息后退出
    

    应用举例

    #显示文件mingongge.txt前150行内容(如果没有其它参数,可以不需要-n)
    head -150 mingongge.txt 
    
    #显示文件mingongge1.txt 和mingongge2.txt的前100行内容
    head -100 mingongge1.txt mingongge2.txt
     
    [root@centos7 testdir]# head -100 mingongge1.txt mingongge2.txt
    ==> mingongge1.txt <==
    11111111111111111111
    22222222222222222222222
    33333333333333333333333333
    444444444444444444444444
    ....
    
    ==> mingongge2.txt <==
    head1
    head2
    head3
    head4
    ....
    #注意:默认情况,一次显示多个文件的话,默认是显示文件名信息的,可以不加-v参数。
    [root@centos7 testdir]# head -q -n 3 mingongge1.txt mingongge2.txt
    11111111111111111111
    22222222222222222222222
    33333333333333333333333333
    head1
    head2
    head3
    

    tail命令

    tail命令和上面的head命令对应,用于查看文件的后面几行,默认是显示指定文件的末尾10行。
    tail 命令还可以查看文件实时写入的数据,例如,我们常用它来查看应用运行的日志文件,可以动态实时显示应用运行所产生的日志,便于排错或查看应用运行是否正常。

    命令格式

    tail [选项] [链接文件名]
    tail [OPTION] [LINKNAME]
    

    比如:

    tail [-n number]
    tail -2 file1 查看一个文件的最后两行 
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容
    

    选项说明

    -f #显示文件最新追加的内容,实时动态展示一个文件的写入数据
    -n<N> #输出文件的尾部N(N位数字)行内容。
    --pid=<进程号>  #与“-f”选项配合,如果指定进程号的进程终止后,自动退出
    -v  #显示文件名信息
    -q  #不显示文件名信息
    --help     #打印帮助信息
    --version  #打印版本信息
    

    应用举例

    #显示文件mingongge从第200行至文件末尾的内容
    tail -n +200 mingongge
     
    #显示文件mingongge的最后100个字符
    [root@centos7 ~]# tail -c 100 mingongge
     
    #显示mingongge.log最后的250行
    [root@centos7 ~]# tail -250 mingongge.log 
     
    #实时展示mingongge.log文件的写入数据
    [root@centos7 ~]# tail -f mingongge.log 
    
    #带文件名与不带文件名举例
    [root@centos7 ~]# tail -v -n 10 /etc/passwd /etc/shadow
    ==> /etc/passwd <==
    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
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    
    ==> /etc/shadow <==
    operator:*:17834:0:99999:7:::
    games:*:17834:0:99999:7:::
    ftp:*:17834:0:99999:7:::
    nobody:*:17834:0:99999:7:::
    systemd-network:!!:18494::::::
    dbus:!!:18494::::::
    polkitd:!!:18494::::::
    sshd:!!:18494::::::
    postfix:!!:18494::::::
    chrony:!!:18494::::::
    [root@centos7 ~]# tail -q -n 10 /etc/passwd /etc/shadow
    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
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    operator:*:17834:0:99999:7:::
    games:*:17834:0:99999:7:::
    ftp:*:17834:0:99999:7:::
    nobody:*:17834:0:99999:7:::
    systemd-network:!!:18494::::::
    dbus:!!:18494::::::
    polkitd:!!:18494::::::
    sshd:!!:18494::::::
    postfix:!!:18494::::::
    chrony:!!:18494::::::
    

    cut命令

    cut将文件中行中内容按指定分隔符分割并输出。cut命令还可以用于删除文件中指定行或段,然后打印输出更改后的内容。还可能用以拼接文件内容到一个新的文件中,功能和cat类似。
    命令格式

    cut [选项] [链接文件名]
    cut [OPTION] [LINKNAME]
    

    选项说明

    -b #只显示行中指定(字节数)的内容
    -c #只显示行中指定(字符数)的内容
    -d #指定字段的分隔符,默认为“TAB”
    -f #打印指定字段(列)的内容
    -n #与“-b”选项连用,不分割多字节字符
    -s #不打印不包含定界符的行的内容
    --help     #打印帮助信息
    --version  #打印版本信息
    

    应用举例

    #打印指定字节数的内容
    [root@centos7 testdir]# cat mingongge1.txt 
    1111 11 111111 1 111 1 1 11
    22222222222 222 2222 22 2 2 2
    33333333333 333333 3333 333 33
    444444444444 444 444444444
    [root@centos7 testdir]# cut -b 3 mingongge1.txt
    1
    2
    3
    4
    
    #截取指定字段内容
    [root@centos7 testdir]# cat cuttest.txt 
    1 2 3 4 5 6 8
    9 8 7 6 5 4 3
    2 1 9 8 7 6 5
    #以空格为分隔,打印每一行的第一列
    [root@centos7 testdir]# cut -f1 -d" " cuttest.txt 
    1
    9
    2
    #以空格为分隔,打印每一行的第一列和第三列
    [root@centos7 testdir]# cut -f1,3 -d" " cuttest.txt 
    1 3
    9 7
    2 9
    #以空格为分隔,打印每一行的第三列到结尾
    [root@centos7 testdir]# cut -f3- -d" " cuttest.txt 
    3 4 5 6 8
    7 6 5 4 3
    9 8 7 6 5
    
    #截取每一行第2-5个字符
    [root@centos7 testdir]# cut -c 2-5 cuttest.txt 
     2 3
     8 7
     1 9
    #截取每一行第一个到第五个字符
    [root@centos7 testdir]# cut -c -5 cuttest.txt 
    1 2 3
    9 8 7
    2 1 9
    #截取每一行第五个到最后一个字符
    [root@centos7 testdir]# cut -c 5- cuttest.txt 
    3 4 5 6 8
    7 6 5 4 3
    9 8 7 6 5
    

    md5sum命令

    md5sum 用于计算和校验文件的MD5值。md5sum 常常被用来验证网络文件传输的完整性,防止文件被人篡改。在日常工作当中,我们可以用来监控系统中的重要文件是否被篡改。
    还可以使用使用 md5sum 生成文件或用户的密码。

    语法格式
    md5sum [选项] [文件]
    
    选项说明
    -b #使用二进制模式对文件进行读取
    -t #把输入的文件看作是文本文件
    -c #从指定文件中读取MD5校验值,并进行校验
    --status  #校验成功时不输出任何信息
    -w  #当校验不正确时输出警告信息
    
    应用举例

    生成密码或随机数值

    [root@centos7 ~]# date | md5sum
    1b1f0ba711e7d4931c23fbbd2b328e40  -
    

    检查一个文件的 md5 值

    [root@centos7 testdir]# md5sum mingongge1.txt
    c5cab5a45a72380ce456a4370bf40348  mingongge1.txt
    

    检查一个文件是否被更改

    #提取文件原md5值
    [root@centos7 testdir]# md5sum mingongge1.txt >./mingongge.txt.md5
    [root@centos7 testdir]# cat mingongge.txt.md5
    c5cab5a45a72380ce456a4370bf40348  mingongge1.txt
    
    #写入内容
    [root@centos7 testdir]# cat >> mingongge1.txt << EOF
    > 1
    > 2
    > 3
    > 4
    > EOF
    [root@centos7 testdir]# md5sum mingongge1.txt -c mingongge.txt.md5
    mingongge1.txt: FAILED
    md5sum: WARNING: 1 computed checksum did NOT match
    

    sort命令

    sort命令用于对文件的文本内容排序。系统默认情况下,排序规则如下:
    1)以数字开头的行,将排在以字母开头的行前面
    2)以小写字母开头的行,将排在以大写字母开头的行前面
    3)按字母表的顺序排列以字母开头的行

    语法格式
    sort [选项] [文件]
    sort [OPTION] [FILE]
    
    选项说明
    -b    #排除开头的空白
    -d    #只考虑空白、字母、数字
    -f    #将小写字母视为大写字母考虑
    -g    #根据数字排序
    -i    #排除不可打印字符
    -M    #按非月份的顺序排序
    -h    #根据存储容量排序
    -n    #根据数字排序。
    -R    #随机排序
    -r    #倒序
    --sort=WORD    #根据指定的WORD排序
    -V   #按文本中(版本)数字的自然排序
    -o   #将排序结果写入一个文件
    --help     #显示帮助信息并退出
    --version  #显示版本信息并退出
    
    应用举例
    [root@centos7 testdir]# cat cuttest.txt 
    1 2 3 4 5 6 8
    9 8 7 6 5 4 3
    2 1 9 8 7 6 5
    [root@centos7 testdir]# sort cuttest.txt
    1 2 3 4 5 6 8
    2 1 9 8 7 6 5
    9 8 7 6 5 4 3
    
    #将结果输出到文件
    [root@centos7 testdir]# sort -o sort.cut.txt cuttest.txt
    [root@centos7 testdir]# cat sort.cut.txt
    1 2 3 4 5 6 8
    2 1 9 8 7 6 5
    9 8 7 6 5 4 3
    
    #倒序排列
    [root@centos7 testdir]# sort -r cuttest.txt
    9 8 7 6 5 4 3
    2 1 9 8 7 6 5
    1 2 3 4 5 6 8
    

    uniq命令

    uniq命令用于去除文件中重复行,一般与sort命令结合使用。

    语法格式
    uniq [选项] [标准输入 [输出]]
    uniq [OPTION] [INPUT [OUTPUT]]
    输入文件 #指定要去除的重复行文件。如果不指定该项,则从标准读入
    输出文件 #指定要去除重复行后的内容要写入的输出文件。如果不指定此项,则将内容显示到标准输出设备(显示终端)。
    
    选项说明
    -c  #在每列旁边显示该行重复出现的次数
    -d  #只显示重复出现的行与列
    -f  #忽略比较指定的字段
    -s  #忽略比较指定的字符
    -i  #不区分大小写的比较
    -u  #只显示出现过一次的行与列
    -w  #指定要比较的字符
    -z  #用0字节(NULL)代替换行符
    --help    #显示帮助信息并退出
    --version #显示版本信息并退出
    
    应用举例
    #删除重复行
    [root@centos7 ~]# cat test.txt 
    This is a test line
    This is a test line
    This is a test line
    This is also a test line
    This is also a test line
    This is also also a test line
    [root@centos7 ~]# uniq test.txt 
    This is a test line
    This is also a test line
    This is also also a test line
    [root@centos7 ~]# sort test.txt | uniq
    This is also also a test line
    This is also a test line
    This is a test line
    
    #只显示单一行
    [root@centos7 ~]# uniq -u test.txt
    This is also also a test line
    [root@centos7 ~]# sort test.txt |uniq -u
    This is also also a test line
    
    #统计各行在文件中出现的次数
    [root@centos7 ~]# sort test.txt |uniq -c
          1 This is also also a test line
          2 This is also a test line
          3 This is a test line
    
    #在文件中找出重复的行
    [root@centos7 ~]# sort test.txt |uniq -d
    This is also a test line
    This is a test line
    

    wc命令

    wc命令可以认为是word count的缩写,用来统计文件中的行数、单词数或字节数,然后将结果输出在终端上。我们可以使用 wc 命令来计算文件的Byte数、字数或是列数。

    语法格式
    wc [选项] [文件]
    wc [OPTION] [FILE]
    
    选项说明
    -c #统计字节数
    -l #统计行数
    -m #统计字符数
    -w #统计字数
    -L #显示最长行的长度
    -help     #显示帮助信息
    --version #显示版本信息
    
    应用举例

    1)查看文件的字节数、字数、行数

    [root@centos7 ~]# wc test.txt 
      6  34 140 test.txt
    [root@centos7 ~]# wc mingongge.file 
    0 0 0 mingongge.file
    [root@centos7 ~]# wc -L test.txt 
    29 test.txt
    [root@centos7 ~]# wc -m test.txt 
    140 test.txt
    [root@centos7 ~]# wc -l test.txt 
    6 test.txt
    [root@centos7 ~]# wc -c test.txt 
    140 test.txt
    

    统计当前目录下的所有文件行数及总计行数

    [root@centos7 ~]# wc -l *
          48 anaconda-ks.cfg
    wc: goinception: Is a directory
           0 goinception
       45222 goInception-linux-amd64-v1.2.3.tar.gz
    wc: httpd-2.4.46: Is a directory
           0 httpd-2.4.46
       36246 httpd-2.4.46.tar.gz
           0 mingongge.file
    wc: testdir: Is a directory
           0 testdir
           6 test.txt
       81522 total
    

    配合命令输出结果来统计

    [root@centos7 ~]# ls -l |wc -l
    9
    [root@centos7 ~]# ls -l
    total 21888
    -rw-------.  1 root root     1320 Aug 20 10:39 anaconda-ks.cfg
    drwxr-xr-x   3 root root       39 Aug 30 03:48 goinception
    -rw-r--r--   1 root root 13034487 Aug 30 03:42 goInception-linux-amd64-v1.2.3.tar.gz
    drwxr-sr-x  11 root   40     4096 Dec 24 22:35 httpd-2.4.46
    -rw-r--r--   1 root root  9363314 Aug  5 07:32 httpd-2.4.46.tar.gz
    -rw-r--r--   1 root root        0 Jan  2 08:43 mingongge.file
    drwxr-xr-x   3 root root      210 Jan 16 10:19 testdir
    -rw-r--r--   1 root root      140 Jan 16 10:30 test.txt
    

    diff命令

    diff 命令用于查找、分析两个文件中不同的行,并打印输出在屏幕上。
    如果是对指定的目录进行比较,就是比较该指定目录下的同名文件,不会对该目录的子目录下的文件进行比较操作。

    语法格式
    diff [选项] [文件]
    diff [OPTION] [FILE]
    
    选项说明
    -<行数>  #指定要显示的行数,必须与-c或-u参数一并使用
    -a  #逐行比较文件
    -b  #不对空格进行比较
    -B  #不对空行进行比较
    -c  #显示全部内容,并标出不同之处
    -C<行数>  #与执行“-c-<行数>”指令相同
    -d  #以小的单位来做比较
    -H  #加速比较大文件
    -n  #将比较结果以RCS的格式显示
    -q  #只需显示有无差异,不需要显示其它信息
    -r  #对子目录的文件进行比较
    -s  #如果两个文件没有差异,也给出相关的信息
    -S  #比较两个目录时,从指定的文件开始执行比较动作
    -u  #以合并的方式来显示文件内容的不同
    -v  #显示版本信息
    -w  #忽略所有空格字符
    -y  #以并列的方式显示两个文件的差异之处
    --help  #显示帮助
    
    应用举例

    1)比较两个文件的不同之处

    [root@centos7 testdir]# diff mingongge1.txt mingongge2.txt
    1,8c1,4
    < 1111 11 111111 1 111 1 1 11
    < 22222222222 222 2222 22 2 2 2
    < 33333333333 333333 3333 333 33
    < 444444444444 444 444444444
    < 1
    < 2
    < 3
    < 4
    ---
    > head1
    > head2
    > head3
    > head4
    
    #a表示添加,c表示更改,d表示删除 
    #以<开头的行是第一个文件中的行
    #以>开头的行是第二个文件中的行
    
    [root@centos7 testdir]# diff -c mingongge1.txt mingongge2.txt
    *** mingongge1.txt 2021-01-16 09:55:49.489792550 -0500
    --- mingongge2.txt 2021-01-16 03:36:24.645284332 -0500
    ***************
    *** 1,8 ****
    ! 1111 11 111111 1 111 1 1 11
    ! 22222222222 222 2222 22 2 2 2
    ! 33333333333 333333 3333 333 33
    ! 444444444444 444 444444444
    ! 1
    ! 2
    ! 3
    ! 4
    --- 1,4 ----
    ! head1
    ! head2
    ! head3
    ! head4
    

    2)diff 比对字符含义

    ! #表示此行是一个或多个需要更改的行的一部分
    + #表示第二个文件中需要添加到第一个文件中的一行
    - #表示第一个文件中需要删除的一行
    
    [root@centos7 testdir]# diff -c cuttest.txt cest.txt
    *** cuttest.txt 2021-01-16 12:12:15.844549487 -0500
    --- cest.txt 2021-01-16 12:15:08.775042428 -0500
    ***************
    *** 1,6 ****
    --- 1,7 ----
      aaaaabbbbbbbb
      cccccccccccccccccccc
      ddddddddddd
    + 1111111111111111111111111111111111111111 
      fffffffffffffffffff
      ggggggggggggggggg
      wwwwwwwwwwwwwwww
    #合并的方式来进行比较
    [root@centos7 testdir]# diff -u cuttest.txt cest.txt
    --- cuttest.txt 2021-01-16 12:12:15.844549487 -0500
    +++ cest.txt 2021-01-16 12:15:08.775042428 -0500
    @@ -1,6 +1,7 @@
     aaaaabbbbbbbb
     cccccccccccccccccccc
     ddddddddddd
    +1111111111111111111111111111111111111111 
     fffffffffffffffffff
     ggggggggggggggggg
     wwwwwwwwwwwwwwww
    

    paste命令

    paste 命令用于并排显示多个文件的相应行,将多个文件按列合并。

    语法格式
    paste [选项] [文件]
    paste [OPTION] [FILE]
    
    选项说明
    -d  #指定分隔符来取代默认分隔符(TAB分隔符)
    -s  #串列进行而非平行处理
    --help  #显示帮助信息
    --version  #显示版本信息
    
    应用举例

    1)并排显示两个文件的内容

    [root@centos7 testdir]# paste mingongge1.txt mingongge2.txt
    1111 11 111111 1 111 1 1 11 head1
    22222222222 222 2222 22 2 2 2 head2
    33333333333 333333 3333 333 33 head3
    444444444444 444 444444444 head4
    1 
    2 
    3 
    4 
    

    2)paste 合并两个文件,或者添加行

    [root@centos7 testdir]# cat mingongge1.txt
    1111 11 111111 1 111 1 1 11
    22222222222 222 2222 22 2 2 2
    33333333333 333333 3333 333 33
    444444444444 444 444444444
    1
    2
    3
    4
    [root@centos7 testdir]# cat mingongge2.txt 
    head1
    head2
    head3
    head4
    [root@centos7 testdir]# paste -d '\n' mingongge1.txt mingongge2.txt
    1111 11 111111 1 111 1 1 11
    head1
    22222222222 222 2222 22 2 2 2
    head2
    33333333333 333333 3333 333 33
    head3
    444444444444 444 444444444
    head4
    1
    
    2
    
    3
    
    4
    
    [root@centos7 testdir]# paste -d '\r' mingongge1.txt mingongge2.txt
    head111 111111 1 111 1 1 11
    head2222222 222 2222 22 2 2 2
    head3333333 333333 3333 333 33
    head44444444 444 444444444
    1
    2
    3
    4
    

    3)paste 命令其他用法

    [root@centos7 testdir]# paste mingongge1.txt 
    1111 11 111111 1 111 1 1 11
    22222222222 222 2222 22 2 2 2
    33333333333 333333 3333 333 33
    444444444444 444 444444444
    1
    2
    3
    4
     
    #连接文件中的所有行
    [root@centos7 testdir]# paste -s mingongge1.txt 
    1111 11 111111 1 111 1 1 11 22222222222 222 2222 22 2 2 2 33333333333 333333 3333 333 33 444444444444 444 444444444 1 2 3 4
     
    #使用指定分隔符连接所有行
    [root@centos7 testdir]# paste -d, -s mingongge1.txt
    1111 11 111111 1 111 1 1 11,22222222222 222 2222 22 2 2 2,33333333333 333333 3333 333 33,444444444444 444 444444444,1,2,3,4
    [root@centos7 testdir]# paste -d[] -s mingongge1.txt
    1111 11 111111 1 111 1 1 11[22222222222 222 2222 22 2 2 2]33333333333 333333 3333 333 33[444444444444 444 444444444]1[2]3[4
    [root@centos7 testdir]# paste -d/ -s mingongge1.txt
    1111 11 111111 1 111 1 1 11/22222222222 222 2222 22 2 2 2/33333333333 333333 3333 333 33/444444444444 444 444444444/1/2/3/4
     
    #查看 paste 命令版本
    [root@centos7 testdir]# paste --version
    paste (GNU coreutils) 8.22
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by David M. Ihnat and David MacKenzie.
    

    lsof命令

    lsof 命令用于显示 Linux 系统当前已打开的所有文件列表。查看进程或系统打开的文件会给调试带来极大的帮助。下面简单地介绍 lsof 常使用的功能。

    lsof (list open files)命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP),还可以用于找回/恢复被删除的文件。lsof 命令需要访问核心内存和各种文件,所以需要具备 root 超级管理员权限的用户才能执行此命令。

    语法格式
    lsof [Options] 
    
    选项说明
    -a         #显示打开文件的进程
    -c<进程名>  #显示指定进程所打开的文件
    -g         #显示GID号进程详情
    -d<文件号>  #显示占用该文件号的进程
    +d<目录>   #显示目录下被打开的文件
    +D<目录>   #递归列出目录下被打开的文件
    -n<目录>   #显示使用NFS的文件
    -l        #在输出显示用户ID而不是用户名
    -i<条件>   #输出符合条件的进程
    -p<进程号> #输出指定进程号所打开的文件
    -u   #显示指定UID号进程详情
    -h   #显示帮助信息
    -t   #仅获取进程ID
    -U   #获取UNIX套接口地址
    -F   #格式化输出结果
    -v   #显示版本信息
    
    应用举例

    1)显示所有连接

    [root@CentOS7-1 ~]# lsof -i
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    chronyd   629  chrony    5u  IPv4  16952      0t0  UDP localhost:323 
    chronyd   629  chrony    6u  IPv6  16953      0t0  UDP localhost:323 
    sshd      866    root    3u  IPv4  19638      0t0  TCP *:ssh (LISTEN)
    sshd      866    root    4u  IPv6  19647      0t0  TCP *:ssh (LISTEN)
    master    976    root   13u  IPv4  20415      0t0  TCP localhost:smtp (LISTEN)
    master    976    root   14u  IPv6  20416      0t0  TCP localhost:smtp (LISTEN)
    netdata 18325 netdata    4u  IPv4 114083      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata    5u  IPv6 114084      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata   36u  IPv6 114297      0t0  UDP localhost:8125 
    netdata 18325 netdata   37u  IPv4 114298      0t0  UDP localhost:8125 
    netdata 18325 netdata   38u  IPv6 114302      0t0  TCP localhost:8125 (LISTEN)
    netdata 18325 netdata   39u  IPv4 114303      0t0  TCP localhost:8125 (LISTEN)
    sshd    18968    root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    2)只显示IPV6的连接信息

    [root@CentOS7-1 ~]# lsof -i 6
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    chronyd   629  chrony    6u  IPv6  16953      0t0  UDP localhost:323 
    sshd      866    root    4u  IPv6  19647      0t0  TCP *:ssh (LISTEN)
    master    976    root   14u  IPv6  20416      0t0  TCP localhost:smtp (LISTEN)
    netdata 18325 netdata    5u  IPv6 114084      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata   36u  IPv6 114297      0t0  UDP localhost:8125 
    netdata 18325 netdata   38u  IPv6 114302      0t0  TCP localhost:8125 (LISTEN)
    

    3)只显示IPV4的连接信息

    [root@CentOS7-1 ~]# lsof -i 4
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    chronyd   629  chrony    5u  IPv4  16952      0t0  UDP localhost:323 
    sshd      866    root    3u  IPv4  19638      0t0  TCP *:ssh (LISTEN)
    master    976    root   13u  IPv4  20415      0t0  TCP localhost:smtp (LISTEN)
    netdata 18325 netdata    4u  IPv4 114083      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata   37u  IPv4 114298      0t0  UDP localhost:8125 
    netdata 18325 netdata   39u  IPv4 114303      0t0  TCP localhost:8125 (LISTEN)
    sshd    18968    root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    4)仅显示TCP连接

    [root@CentOS7-1 ~]# lsof -i tcp
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd      866    root    3u  IPv4  19638      0t0  TCP *:ssh (LISTEN)
    sshd      866    root    4u  IPv6  19647      0t0  TCP *:ssh (LISTEN)
    master    976    root   13u  IPv4  20415      0t0  TCP localhost:smtp (LISTEN)
    master    976    root   14u  IPv6  20416      0t0  TCP localhost:smtp (LISTEN)
    netdata 18325 netdata    4u  IPv4 114083      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata    5u  IPv6 114084      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata   38u  IPv6 114302      0t0  TCP localhost:8125 (LISTEN)
    netdata 18325 netdata   39u  IPv4 114303      0t0  TCP localhost:8125 (LISTEN)
    sshd    18968    root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    5)仅显示UDP连接

    [root@CentOS7-1 ~]# lsof -i udp
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    chronyd   629  chrony    5u  IPv4  16952      0t0  UDP localhost:323 
    chronyd   629  chrony    6u  IPv6  16953      0t0  UDP localhost:323 
    netdata 18325 netdata   36u  IPv6 114297      0t0  UDP localhost:8125 
    netdata 18325 netdata   37u  IPv4 114298      0t0  UDP localhost:8125
    

    6)显示指定端口的连接信息

    [root@CentOS7-1 ~]# lsof -i :22
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd      866 root    3u  IPv4  19638      0t0  TCP *:ssh (LISTEN)
    sshd      866 root    4u  IPv6  19647      0t0  TCP *:ssh (LISTEN)
    sshd    18968 root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    [root@CentOS7-1 ~]# lsof -i :80
    [root@CentOS7-1 ~]# lsof -i :62148
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    18968 root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    7)列由某个用户打开的进程或文件

    [root@CentOS7-1 ~]# lsof -u root | head -5
    COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd       1 root  cwd       DIR              253,0       262         64 /
    systemd       1 root  rtd       DIR              253,0       262         64 /
    systemd       1 root  txt       REG              253,0   1628608   16959493 /usr/lib/systemd/systemd
    systemd       1 root  mem       REG              253,0     20064    1679454 /usr/lib64/libuuid.so.1.3.0
    
    #列出除了root以外用户打开的文件
    [root@CentOS7-1 ~]# lsof -u ^root | head
    COMMAND     PID   TID    USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    polkitd     618       polkitd  cwd       DIR              253,0      262         64 /
    polkitd     618       polkitd  rtd       DIR              253,0      262         64 /
    polkitd     618       polkitd  txt       REG              253,0   120432   17108633 /usr/lib/polkit-1/polkitd
    polkitd     618       polkitd  mem       REG              253,0    61560      18290 /usr/lib64/libnss_files-2.17.so
    polkitd     618       polkitd  mem       REG              253,0    68192      40949 /usr/lib64/libbz2.so.1.0.6
    polkitd     618       polkitd  mem       REG              253,0    99952     324334 /usr/lib64/libelf-0.176.so
    polkitd     618       polkitd  mem       REG              253,0    19896      46144 /usr/lib64/libattr.so.1.1.0
    polkitd     618       polkitd  mem       REG              253,0    20064    1679454 /usr/lib64/libuuid.so.1.3.0
    polkitd     618       polkitd  mem       REG              253,0   265576      20649 /usr/lib64/libblkid.so.1.1.0
    

    8)显示指定的连接信息

    #显示指定到指定主机的连接
    [root@CentOS7-1 ~]# lsof -i@192.168.1.100
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    18968 root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    
    #显示指定到指定主机端口的连接
    [root@CentOS7-1 ~]# lsof -i@192.168.1.100:22
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    18968 root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    9)显示某些状态的端口信息

    #找出处于监听状态的端口
    [root@CentOS7-1 ~]# lsof -i -sTCP:LISTEN
    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd      866    root    3u  IPv4  19638      0t0  TCP *:ssh (LISTEN)
    sshd      866    root    4u  IPv6  19647      0t0  TCP *:ssh (LISTEN)
    master    976    root   13u  IPv4  20415      0t0  TCP localhost:smtp (LISTEN)
    master    976    root   14u  IPv6  20416      0t0  TCP localhost:smtp (LISTEN)
    netdata 18325 netdata    4u  IPv4 114083      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata    5u  IPv6 114084      0t0  TCP *:dnp-sec (LISTEN)
    netdata 18325 netdata   38u  IPv6 114302      0t0  TCP localhost:8125 (LISTEN)
    netdata 18325 netdata   39u  IPv4 114303      0t0  TCP localhost:8125 (LISTEN)
    
    ##找出处于已连接状态的端口
    [root@CentOS7-1 ~]# lsof -i -sTCP:ESTABLISHED
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    18968 root    3u  IPv4 118704      0t0  TCP CentOS7-1:ssh->192.168.1.93:62148 (ESTABLISHED)
    

    10)终止用户行为

    [root@CentOS7-1 ~]# lsof -u mingongge
    COMMAND   PID      USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
    bash    20369 mingongge  cwd    DIR  253,0        82   462615 /home/mingongge
    bash    20369 mingongge  rtd    DIR  253,0       262       64 /
    bash    20369 mingongge  txt    REG  253,0    964536 50333070 /usr/bin/bash
    bash    20369 mingongge  mem    REG  253,0 106172832 50333042 /usr/lib/locale/locale-archive
    bash    20369 mingongge  mem    REG  253,0     61560    18290 /usr/lib64/libnss_files-2.17.so
    bash    20369 mingongge  mem    REG  253,0   2156240    18266 /usr/lib64/libc-2.17.so
    bash    20369 mingongge  mem    REG  253,0     19248    18273 /usr/lib64/libdl-2.17.so
    bash    20369 mingongge  mem    REG  253,0    174576    20696 /usr/lib64/libtinfo.so.5.9
    bash    20369 mingongge  mem    REG  253,0    163312  1679434 /usr/lib64/ld-2.17.so
    bash    20369 mingongge  mem    REG  253,0     26970 16806930 /usr/lib64/gconv/gconv-modules.cache
    bash    20369 mingongge    0u   CHR  136,1       0t0        4 /dev/pts/1
    bash    20369 mingongge    1u   CHR  136,1       0t0        4 /dev/pts/1
    bash    20369 mingongge    2u   CHR  136,1       0t0        4 /dev/pts/1
    bash    20369 mingongge  255u   CHR  136,1       0t0        4 /dev/pts/1
    vim     20391 mingongge  cwd    DIR  253,0        82   462615 /home/mingongge
    vim     20391 mingongge  rtd    DIR  253,0       262       64 /
    vim     20391 mingongge  txt    REG  253,0   2337192 51061591 /usr/bin/vim
    vim     20391 mingongge  mem    REG  253,0     61560    18290 /usr/lib64/libnss_files-2.17.so
    vim     20391 mingongge  mem    REG  253,0 106172832 50333042 /usr/lib/locale/locale-archive
    vim     20391 mingongge  mem    REG  253,0     11392     8814 /usr/lib64/libfreebl3.so
    vim     20391 mingongge  mem    REG  253,0     14424  1679441 /usr/lib64/libutil-2.17.so
    vim     20391 mingongge  mem    REG  253,0     40600    18271 /usr/lib64/libcrypt-2.17.so
    vim     20391 mingongge  mem    REG  253,0    115816    18278 /usr/lib64/libnsl-2.17.so
    vim     20391 mingongge  mem    REG  253,0    109976    18302 /usr/lib64/libresolv-2.17.so
    vim     20391 mingongge  mem    REG  253,0     19896    46144 /usr/lib64/libattr.so.1.1.0
    vim     20391 mingongge  mem    REG  253,0    402384    20698 /usr/lib64/libpcre.so.1.2.0
    vim     20391 mingongge  mem    REG  253,0   2156240    18266 /usr/lib64/libc-2.17.so
    vim     20391 mingongge  mem    REG  253,0    142144    18300 /usr/lib64/libpthread-2.17.so
    vim     20391 mingongge  mem    REG  253,0   1647328   282389 /usr/lib64/perl5/CORE/libperl.so
    vim     20391 mingongge  mem    REG  253,0     19248    18273 /usr/lib64/libdl-2.17.so
    vim     20391 mingongge  mem    REG  253,0     27752      669 /usr/lib64/libgpm.so.2.1.0
    vim     20391 mingongge  mem    REG  253,0     37064    18281 /usr/lib64/libacl.so.1.1.0
    vim     20391 mingongge  mem    REG  253,0    174576    20696 /usr/lib64/libtinfo.so.5.9
    vim     20391 mingongge  mem    REG  253,0    155744  1679449 /usr/lib64/libselinux.so.1
    vim     20391 mingongge  mem    REG  253,0   1136944    18275 /usr/lib64/libm-2.17.so
    vim     20391 mingongge  mem    REG  253,0    163312  1679434 /usr/lib64/ld-2.17.so
    vim     20391 mingongge    0u   CHR  136,1       0t0        4 /dev/pts/1
    vim     20391 mingongge    1u   CHR  136,1       0t0        4 /dev/pts/1
    vim     20391 mingongge    2u   CHR  136,1       0t0        4 /dev/pts/1
    vim     20391 mingongge    3u   REG  253,0     12288   462619 /home/mingongge/.test.sh.swp
    
    然后我们使用下面的命令来终止这个用户的这些操作行为
    [root@CentOS7-1 ~]# kill -9 `lsof -t -u mingongge`
    [root@CentOS7-1 ~]# lsof -u mingongge
    #你会发现这个用户的所有操作都被终止了
    

    tee命令

    tee 命令用于从标准输入读取,然后写入文件或标准输出和文件。一般用于需要同时查看数据内容并输出到文件时使用。

    语法格式
    tee [OPTION]... [FILE]...
    
    选项说明
    -a   #追加到文件中而不是覆盖
    -i   #忽略中断信号(Ctrl+c中断操作无效)
    -p   #诊断写入非管道的错误
    --output-error[=MODE]    #设置写错误时的行为
    --help                   #显示帮助信息并退出
    --version                #显示版本信息并退出
    

    MODE参数

    'warn'           #当写入到任何输出报错时诊断
    'warn-nopipe'    #当写入到任何输出(而不是管道)报错时诊断
    'exit'           #当写入到任何输出报错时退出
    'exit-nopipe'    #当写入到任何输出(而不是管道)报错时退出
    
    应用举例

    列出当前目录中所有文件扩展名为.tar.gz的文件,每行一个文件, 然后将内容传输给 wc 对行进行计数并输出数字。通过管道传输到 tee 后再将输出写入终端,并将相同的信息写入文件 tee.txt。
    1)如果 tee.txt 已经存在,它将被覆盖,如果不存在,将被创建。

    [root@centos7 ~]# ls -l *.tar.gz
    -rw-r--r-- 1 root root 13034487 Aug 30  2020 goInception-linux-amd64-v1.2.3.tar.gz
    -rw-r--r-- 1 root root  9363314 Aug  5  2020 httpd-2.4.46.tar.gz
    -rw-r--r-- 1 root root 31674465 Mar 10 09:42 mysql_backup.tar.gz
    -rw-r--r-- 1 root root   398872 Mar 28 00:11 netcat-0.7.1.tar.gz
    [root@centos7 ~]# ls -l *.tar.gz | wc -l
    4
    [root@centos7 ~]# ls -l *.tar.gz | wc -l | tee tee.txt
    4
    [root@centos7 ~]# cat tee.txt
    4
    

    2)tee.txt 已经存在,它将被覆盖

    [root@centos7 ~]# cat tee.txt 
    4
    [root@centos7 ~]# ls -1 *.txt | wc -l 
    3
    [root@centos7 ~]# ls -l *.txt | wc -l |tee tee.txt
    3
    [root@centos7 ~]# cat tee.txt 
    3
    

    3)追加内容

    [root@centos7 ~]# cat tee.txt 
    3
    [root@centos7 ~]# ls -1 *.tar.gz | wc -l
    4
    [root@centos7 ~]# ls -1 *.tar.gz | wc -l | tee -a tee.txt
    4
    [root@centos7 ~]# cat tee.txt 
    3
    4
    

    相关文章

      网友评论

          本文标题:Linux文件查看相关命令

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