美文网首页
Linux-文件管理-文件操作命令02

Linux-文件管理-文件操作命令02

作者: 徐弱西 | 来源:发表于2019-07-29 23:02 被阅读0次

    1.mv 移动和重命名文件

    选项:
    -i 提示文件应经存在,是否覆盖(系统自带别名)
    -f 强制覆盖,不提示
    -t 把源文件和目标文件位置进行替换移动

    [root@oldboyedu ~]# mv  1.txt /opt/
    [root@oldboyedu ~]# ll /opt/
    -rw-r--r--. 1 root root       12 Jun 21 11:45 1.txt
    
    [root@oldboyedu ~]# mv  oldboy/  /opt/
    [root@oldboyedu ~]# ll /opt/
    -rw-r--r--. 1 root root       12 Jun 21 11:45 1.txt
    drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy
    
    [root@oldboyedu ~]# mv 1.txt   /opt/
    mv: overwrite ‘/opt/1.txt’? n   
    [root@oldboyedu ~]# \mv 1.txt   /opt/
    [root@oldboyedu ~]# mv  -f  1.txt   /opt/
    [root@oldboyedu ~]# /usr/bin/mv  1.txt  /opt/
    
    [root@oldboyedu ~]# mv 1.txt   /opt/oldboy.txt
    [root@oldboyedu ~]# ll /opt/
    -rw-r--r--. 1 root root        0 Jun 22 09:53 1.txt
    drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    
    [root@oldboyedu ~]# mv  -t  ./   /opt/oldboy.txt 
    [root@oldboyedu ~]# ll
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    

    2.rm 删除文件

    -i 提示是否要删除文件(系统自带别名)
    -f 强制删除
    -r 递归删除,删除目录

    [root@oldboyedu ~]# rm  123
    rm: remove regular file ‘123’? n
    [root@oldboyedu ~]# rm -f 123
    [root@oldboyedu ~]# ll
    total 57472
    -rw-r--r--. 1 root root    13712 Jun 21 16:19 456
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# mv /opt/oldboy/  ./
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# ll
    total 57472
    -rw-r--r--. 1 root root    13712 Jun 21 16:19 456
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
    drwxr-xr-x. 2 root root        6 Jun 22 09:47 oldboy
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# rm -f  oldboy
    rm: cannot remove ‘oldboy’: Is a directory
    [root@oldboyedu ~]# rm -rf  oldboy
    [root@oldboyedu ~]# ll
    total 57472
    -rw-r--r--. 1 root root    13712 Jun 21 16:19 456
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# rm -rf /*^C
    [root@oldboyedu ~]# rm -rf ./*^C
    [root@oldboyedu ~]# cd /
    [root@oldboyedu /]# rm -rf ./*^C 
    [root@oldboyedu /]# cd
    [root@oldboyedu ~]# rm -rf ./ *^C
    
    -------给rm命令设置一个别名-------
    [root@oldboyedu ~]# alias   rm='echo  rm bny'
    [root@oldboyedu ~]# alias 
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='echo  rm bny'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@oldboyedu ~]# rm -f  456 
    rm bny -f 456
    [root@oldboyedu ~]# \rm -f  456 
    [root@oldboyedu ~]# ll
    total 57456
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       20 Jun 21 16:43 file.txt
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    

    查看文件内容命令

    3.cat 查看文件的内容,会将文件的所有内容显示到屏幕上面。

    -n  给显示出来的内容加上行号
    -A  给显示出来的内容,每行的结尾加上一个标识符,主要用来区别空格和tab键
    >   标准输出重定向,将目标文件的内容清空,再将输出结果追加到目标文件
    >>  标准输出追加重定向,将输出结果追加到目标文件的结尾,不会清空源文件内容
    
    [root@oldboyedu ~]# cat file.txt 
    abc
    123
    abc
    123
    def
    [root@oldboyedu ~]# cat -n  file.txt
         1  abc
         2  123
         3  abc
         4  123
         5  def
    [root@oldboyedu ~]# cat -A  file.txt
    abc$
    123$
    abc$
    123$
    def$
    [root@oldboyedu ~]# vi file.txt
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# cat -A  file.txt
    abc $
    123^I$
    abc$
    123$
    def$
    [root@oldboyedu ~]# cat file.txt
    abc 
    123 
    abc
    123
    def
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# cat file.txt >file1.txt
    [root@oldboyedu ~]# cat file1.txt
    abc 
    123 
    abc
    123
    def
    [root@oldboyedu ~]# cat file.txt >file1.txt
    [root@oldboyedu ~]# cat file1.txt
    abc 
    123 
    abc
    123
    def
    [root@oldboyedu ~]# cat file.txt >>file1.txt
    [root@oldboyedu ~]# cat file1.txt
    abc 
    123 
    abc
    123
    def
    abc 
    123 
    abc
    123
    def
    [root@oldboyedu ~]# ll
    total 57460
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
    -rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
    -rw-r--r--. 1 root root       14 Jun 21 12:12 oldboy.txt
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# cat file.txt   oldboy.txt 
    abc 
    123 
    abc
    123
    def
    kasjdhaksjdhs
    [root@oldboyedu ~]# cat file.txt   oldboy.txt >file2.txt
    [root@oldboyedu ~]# cat file2.txt
    abc 
    123 
    abc
    123
    def
    kasjdhaksjdhs
    [root@oldboyedu ~]# cat oldboy.txt 
    kasjdhaksjdhs
    [root@oldboyedu ~]# 
    
    [root@oldboyedu ~]# cat >>file3.txt<<EOF
    > oldboy
    > oldgirl
    > shanghai
    > EOF
    [root@oldboyedu ~]# cat file3.txt 
    oldboy
    oldgirl
    shanghai
    [root@oldboyedu ~]# cat >>file4.txt<<EOF
    > oldboy
    > oldgirl
    > shanghai
    > EOF
    [root@oldboyedu ~]# cat file4.txt 
    oldboy
    oldgirl
    shanghai
    [root@oldboyedu ~]# cat >>file4.txt<<EOF
    > oldboy
    > oldgirl
    > shanghai
    > EOF
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# cat file4.txt 
    oldboy
    oldgirl
    shanghai
    oldboy
    oldgirl
    shanghai
    [root@oldboyedu ~]# cat >file4.txt<<EOF
    > oldboy
    > oldgirl
    > shanghai
    > EOF
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# cat file4.txt 
    oldboy
    oldgirl
    shanghai
    

    4.tac倒着显示文件内容,按行为单位。

    cat反着写...


    5.more 分页显示文件内容

    空格或f: 向下翻页
    b : 向上翻页
    / : 搜索关键字,并不会高亮显示
    =: 显示当前光标所在行
    q: 退出
    -N(数字): 每页显示几行
    +N(数字): 从第几行开始显示
    显示完文件内容,会自动退出。手动按q退出后,不会缩回文件内容。

    6.less 分页显示文件内容

    空格或f  向下翻页
    b        向上翻页
    /        搜索关键字,会高亮显示
    q        退出
    -N       给显示出来的内容加上行号
    

    显示完文件内容,不会自动退出。 按q退出后,会缩回文件内容。


    7.head 显示文件内容的头部信息,默认显示前十行内容。

    -nN(数字) 取消默认输出,可以简写,-5
    -cN(数字) 显示文件的前几个字符

    [root@oldboyedu ~]# head  services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    #
    # Note that it is presently the policy of IANA to assign a single well-known
    # port number for both TCP and UDP; hence, most entries here have two entries
    # even if the protocol doesn't support UDP operations.
    # Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
    [root@oldboyedu ~]# head  -n5  services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    [root@oldboyedu ~]# head  -5  services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    [root@oldboyedu ~]# head  -20  services
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    #
    # Note that it is presently the policy of IANA to assign a single well-known
    # port number for both TCP and UDP; hence, most entries here have two entries
    # even if the protocol doesn't support UDP operations.
    # Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
    # are included, only the more common ones.
    #
    # The latest IANA port assignments can be gotten from
    #       http://www.iana.org/assignments/port-numbers
    # The Well Known Ports are those from 0 through 1023.
    # The Registered Ports are those from 1024 through 49151
    # The Dynamic and/or Private Ports are those from 49152 through 65535
    #
    # Each line describes one service, and is of the form:
    #
    
    [root@oldboyedu ~]# head  -c 5  services 
    # /et[root@oldboyedu ~]# 
    

    8.tail显示文件内容的尾部,默认显示最后十行内容

    -nN(数字) 取消默认输出,可以简写,-5
    -cN(数字) 显示文件的最后几个字符,默认最后有个换行符
    -f 实时查看文件内容的更新,当文件不存在时,会报错退出,等同于tailf命令
    -F 实时查看文件内容的更新,当文件不存在时,会一直的尝试。

    [root@oldboyedu ~]# tail  services 
    3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
    isnetserv       48128/tcp               # Image Systems Network Services
    isnetserv       48128/udp               # Image Systems Network Services
    blp5            48129/tcp               # Bloomberg locator
    blp5            48129/udp               # Bloomberg locator
    com-bardac-dw   48556/tcp               # com-bardac-dw
    com-bardac-dw   48556/udp               # com-bardac-dw
    iqobject        48619/tcp               # iqobject
    iqobject        48619/udp               # iqobject
    matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# tail -n5 services
    com-bardac-dw   48556/tcp               # com-bardac-dw
    com-bardac-dw   48556/udp               # com-bardac-dw
    iqobject        48619/tcp               # iqobject
    iqobject        48619/udp               # iqobject
    matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# tail -5 services
    com-bardac-dw   48556/tcp               # com-bardac-dw
    com-bardac-dw   48556/udp               # com-bardac-dw
    iqobject        48619/tcp               # iqobject
    iqobject        48619/udp               # iqobject
    matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# tail -c 5 services
    oker            #最后一个是换行符
    
    [root@oldboyedu ~]# tail  -f  oldboy.txt 
    kasjdhaksjdhs
    123
    
    [root@oldboyedu ~]# tailf  oldboy.txt 
    kasjdhaksjdhs
    123
    123
    [root@oldboyedu ~]# tail -f  oldboy.log
    tail: cannot open ‘oldboy.log’ for reading: No such file or directory
    tail: no files remaining
    [root@oldboyedu ~]# tail -F  oldboy.log
    tail: cannot open ‘oldboy.log’ for reading: No such file or directory
    tail: ‘oldboy.log’ has appeared;  following end of new file
    123
    

    9.grep 文本处理工具,过滤,默认是以行为单位进行显示。

    -o 只显示过滤出来的内容
    -n 给过滤出来的内容加上行号
    -i 忽略大小写
    -v 排除,取反。
    -w 只匹配要过滤出来的内容,而不是包含该内容
    -c 给过滤出来的内容统计次数,统计的是行的次数。
    ^n 匹配以什么开头,n表示字符
    n$ 匹配以什么为结尾,n表示字符
    \ 取消特殊字符的含义,恢复原来意思

    [root@oldboyedu ~]# grep  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# alias 
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='echo  rm bny'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# grep  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# grep  -o "root"   passwd
    root
    root
    root
    root
    [root@oldboyedu ~]# 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
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    [root@oldboyedu ~]# grep  -i  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# echo  "ROOT"  >> passwd
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# grep  -i  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    ROOT
    [root@oldboyedu ~]# grep   "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# grep  -n  "root"  passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# grep  -c  "root"  passwd
    2
    [root@oldboyedu ~]# grep  "^r"  passwd
    root:x:0:0:root:/root:/bin/bash
    [root@oldboyedu ~]# grep -i "^r"  passwd
    root:x:0:0:root:/root:/bin/bash
    ROOT
    [root@oldboyedu ~]# grep  "c$"  passwd
    sync:x:5:0:sync:/sbin:/bin/sync
    [root@oldboyedu ~]# 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:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    18:abrt:x:173:173::/etc/abrt:/sbin/nologin
    19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    20:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    21:ROOT
    [root@oldboyedu ~]# echo  "oldboy." >> passwd
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 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:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    18:abrt:x:173:173::/etc/abrt:/sbin/nologin
    19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    20:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    21:ROOT
    22:oldboy.
    [root@oldboyedu ~]# grep   "\."  passwd
    oldboy.
    [root@oldboyedu ~]# grep  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# echo  "rootoldboy"  >>passwd
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# grep  "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    rootoldboy
    [root@oldboyedu ~]# grep -w "root"   passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@oldboyedu ~]# ps -ef|grep  ssh
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    root      83777  27074  0 11:29 pts/0    00:00:00 grep --color=auto ssh
    [root@oldboyedu ~]# ps -ef|grep  sshd
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    root      83785  27074  0 11:29 pts/0    00:00:00 grep --color=auto sshd
    [root@oldboyedu ~]# ps -ef|grep -w  sshd
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    root      83811  27074  0 11:29 pts/0    00:00:00 grep --color=auto -w sshd
    [root@oldboyedu ~]# ps -ef|grep -w  [s]shd
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    [root@oldboyedu ~]# ps -ef|grep  hgkrhg
    root      83849  27074  0 11:30 pts/0    00:00:00 grep --color=auto hgkrhg
    [root@oldboyedu ~]# ps -ef|grep -c  hgkrhg
    1
    [root@oldboyedu ~]# ps -ef|grep -c  [d]fg
    0
    [root@oldboyedu ~]# ps -ef|grep  sshd
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    root      83920  27074  0 11:31 pts/0    00:00:00 grep --color=auto sshd
    [root@oldboyedu ~]# ps -ef|grep  sshd|grep  -v grep
    root       7438      1  0 Jun21 ?        00:00:00 /usr/sbin/sshd -D
    root      27070   7438  0 Jun21 ?        00:00:03 sshd: root@pts/0
    [root@oldboyedu ~]# 
    
    

    文件上传和下载

    需要下载软件包

    [root@oldboyedu ~]# yum install -y lrzsz

    9.rz 上传文件到服务器中,不支持上传目录,且不支持上传大于4G的文件。

    [root@oldboyedu ~]# rz
    
    [root@oldboyedu ~]# rz  -E    
    

    10.sz 从服务器中下载文件到本地

    [root@oldboyedu ~]# sz  services
    

    11.wget 从互联网上下载软件包

    默认没有该命令,需下载
    [root@oldboyedu ~]# yum install -y wget

    选项:
    -O 指定文件名

    [root@oldboyedu ~]# wget  http://nginx.org/download/nginx-1.14.2.tar.gz
    --2019-06-22 12:08:55--  http://nginx.org/download/nginx-1.14.2.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: 1015384 (992K) [application/octet-stream]
    Saving to: ‘nginx-1.14.2.tar.gz’
    
    100%[===============================================================================>] 1,015,384    269KB/s   in 3.7s   
    
    2019-06-22 12:09:00 (269 KB/s) - ‘nginx-1.14.2.tar.gz’ saved [1015384/1015384]
    
    [root@oldboyedu ~]# ll
    total 59136
    -rw-r--r--. 1 root root        6 Jun 22 10:43 1
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
    -rw-r--r--. 1 root root       36 Jun 22 10:21 file2.txt
    -rw-r--r--. 1 root root       24 Jun 22 10:26 file3.txt
    -rw-r--r--. 1 root root       24 Jun 22 10:28 file4.txt
    -rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
    -rw-r--r--. 1 root root      744 Jun 20 09:44 ip.txt
    -rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx-1.14.2.tar.gz
    -rw-r--r--. 1 root root        4 Jun 22 11:11 oldboy.log
    -rw-r--r--. 1 root root       26 Jun 22 11:09 oldboy.txt
    -rw-r--r--. 1 root root      962 Jun 22 11:27 passwd
    -rw-r--r--. 1 root root   670293 Jun 22 10:45 services
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# wget  -O  nginx.tar.gz  http://nginx.org/download/nginx-1.14.2.tar.gz
    --2019-06-22 12:10:06--  http://nginx.org/download/nginx-1.14.2.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: 1015384 (992K) [application/octet-stream]
    Saving to: ‘nginx.tar.gz’
    
    100%[===============================================================================>] 1,015,384   28.2KB/s   in 27s    
    
    2019-06-22 12:10:35 (36.7 KB/s) - ‘nginx.tar.gz’ saved [1015384/1015384]
    
    [root@oldboyedu ~]# ll
    total 60128
    -rw-r--r--. 1 root root        6 Jun 22 10:43 1
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    -rw-r--r--. 1 root root     2443 Jun 21 16:26 baidu.html
    -rw-r--r--. 1 root root       44 Jun 22 10:19 file1.txt
    -rw-r--r--. 1 root root       36 Jun 22 10:21 file2.txt
    -rw-r--r--. 1 root root       24 Jun 22 10:26 file3.txt
    -rw-r--r--. 1 root root       24 Jun 22 10:28 file4.txt
    -rw-r--r--. 1 root root       22 Jun 22 10:15 file.txt
    -rw-r--r--. 1 root root      744 Jun 20 09:44 ip.txt
    -rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx-1.14.2.tar.gz
    -rw-r--r--. 1 root root  1015384 Dec  4  2018 nginx.tar.gz
    -rw-r--r--. 1 root root        4 Jun 22 11:11 oldboy.log
    -rw-r--r--. 1 root root       26 Jun 22 11:09 oldboy.txt
    -rw-r--r--. 1 root root      962 Jun 22 11:27 passwd
    -rw-r--r--. 1 root root   670293 Jun 22 10:45 services
    -rw-r--r--. 1 root root      199 Jun 21 16:46 sort.log
    [root@oldboyedu ~]# 
    
    [root@oldboyedu ~]# wget  https://www.baidu.com
    --2019-06-22 12:16:50--  https://www.baidu.com/
    Resolving www.baidu.com (www.baidu.com)... 61.135.169.121, 61.135.169.125
    Connecting to www.baidu.com (www.baidu.com)|61.135.169.121|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 2443 (2.4K) [text/html]
    Saving to: ‘index.html.1’
    
    100%[===============================================================================>] 2,443       --.-K/s   in 0s      
    
    2019-06-22 12:16:50 (558 MB/s) - ‘index.html.1’ saved [2443/2443]
    

    12.curl 访问一个网站,也可以下载

    选项:
    -o 指定文件名

    [root@oldboyedu ~]# curl  https://www.baidu.com/
    
    [root@oldboyedu ~]# curl  -o  index.html  https://www.baidu.com
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  2443  100  2443    0     0  11609      0 --:--:-- --:--:-- --:--:-- 11633
    

    文件查找命令

    13.which

    [root@oldboyedu ~]# which   wget
    /usr/bin/wget
    [root@oldboyedu ~]# which   passwd
    /usr/bin/passwd
    

    14.type

    [root@oldboyedu ~]# type  -a  wget
    wget is /usr/bin/wget
    [root@oldboyedu ~]# type  -a  cd
    cd is a shell builtin
    cd is /usr/bin/cd
    

    15.whereis

    [root@oldboyedu ~]# whereis wget
    wget: /usr/bin/wget /usr/share/man/man1/wget.1.gz
    

    16.find 文件查找

    [root@oldboyedu ~]# find  /   -type d  -name "oldboy"
    /root/oldboy
    [root@oldboyedu ~]# find  /root   -name "*.txt"  
    /root/oldboy.txt
    /root/file4.txt
    /root/ip.txt
    /root/file.txt
    /root/file1.txt
    /root/file2.txt
    /root/file3.txt
    [root@oldboyedu ~]# find  /root  -type  f  -name "*.txt"  
    /root/oldboy.txt
    /root/file4.txt
    /root/ip.txt
    /root/file.txt
    /root/file1.txt
    /root/file2.txt
    /root/file3.txt
    [root@oldboyedu ~]# find  /root  -type  f  -name "*.txt"  -ls
    67157890    4 -rw-r--r--   1 root     root           26 Jun 22 11:09 /root/oldboy.txt
    67160133    4 -rw-r--r--   1 root     root           24 Jun 22 10:28 /root/file4.txt
    67160151    4 -rw-r--r--   1 root     root          744 Jun 20 09:44 /root/ip.txt
    67160129    4 -rw-r--r--   1 root     root           22 Jun 22 10:15 /root/file.txt
    67160128    4 -rw-r--r--   1 root     root           44 Jun 22 10:19 /root/file1.txt
    67160130    4 -rw-r--r--   1 root     root           36 Jun 22 10:21 /root/file2.txt
    67160131    4 -rw-r--r--   1 root     root           24 Jun 22 10:26 /root/file3.txt
    

    | 管道:将前面命令执行的结果交给后面的命令执行。

    练习题
    1.显示“I'm a student”到屏幕上面
    2.将“I'm a student”追加到hello.txt文件中
    3.查看oldboy.txt文件中的内容,并显示行号(请使用cat命令)。
    4.使用cat命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中
    5.查看系统中/etc/services文件中的内容(使用more和less命令,进行上下页查看,并搜索关键字‘ssh’,之后退出。)
    6.显示/etc/passwd文件的前5行内容。
    7.显示/etc/passwd文件的最后5行内容。
    8.显示/etc/services文件的第11行到第20行的内容
    [root@oldboyedu ~]# head -20 services | tail
    9.已知文件123.txt内容如下,请过滤出包含oldboy字符串的命令
    test
    OLDBOY
    online
    oldboy
    oldboyoldboy
    10.过滤出文件123.txt中不包含test的行,并给其过滤出来的内容加上行号
    11.要求过滤出文件123.txt中包含oldboy的字符串,忽略大小写。
    12.要求过滤出文件123.txt中包含online字符串的行,并统计共有多少行。
    13.要求过滤出文件123.txt中包含oldboy的单词。
    14.调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?
    15.打印配置文件/etc/passwd内容的行号及内容,你有几种方法可以实现?

    字符处理命令

    17.sort 排序

    选项:
    -t 指定分隔符
    -r 倒叙排序
    -n 以数字形式进行排序
    -k 指定列进行排序
    环境
    cat >> sort.txt <<EOF
    b:3
    c:2
    a:4
    e:5
    d:1
    f:11
    EOF

    [root@oldboyedu ~]# cat  sort.txt 
    b:3
    c:2
    a:4
    e:5
    d:1
    f:11
    [root@oldboyedu ~]# sort -t ':' -n  sort.txt
    a:4
    b:3
    c:2
    d:1
    e:5
    f:11
    [root@oldboyedu ~]# sort -t ':' -nk2  sort.txt
    d:1
    c:2
    b:3
    a:4
    e:5
    f:11
    [root@oldboyedu ~]# sort -t ':' -rnk2  sort.txt
    f:11
    e:5
    a:4
    b:3
    c:2
    d:1
    

    18.uniq 去重,去除相邻重复的行

    选项:
    -c 统计重复行的次数
    -d 只显示重复的行
    -u 只显示不重复的行

    [root@oldboyedu ~]# cat >> uniq.txt <<EOF
    abc
    123
    abc
    123
    EOF
    [root@oldboyedu ~]# cat uniq.txt 
    abc
    123
    abc
    123
    [root@oldboyedu ~]# sort  uniq.txt 
    123
    123
    abc
    abc
    [root@oldboyedu ~]# sort  uniq.txt  | uniq  
    123
    abc
    [root@oldboyedu ~]# sort  uniq.txt  | uniq  -c
          2 123
          2 abc
    [root@oldboyedu ~]# echo  "def"  >> uniq.txt 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# sort  uniq.txt  | uniq  -c
          2 123
          2 abc
          1 def
    [root@oldboyedu ~]# sort  uniq.txt  | uniq  -d
    123
    abc
    [root@oldboyedu ~]# sort  uniq.txt  | uniq  -u
    def
    

    19.wc 统计次数

    选项:
    -l 统计行数
    -c 统计字节数
    -w 统计列数,默认以空格为分隔符

    [root@oldboyedu ~]# cat uniq.txt 
    abc
    123
    abc
    123
    def
    [root@oldboyedu ~]# wc  -l uniq.txt
    5 uniq.txt
    [root@oldboyedu ~]# wc 
    1                    .bashrc              file.txt             nginx.tar.gz         services
    access.log           .cshrc               index.html           oldboy/              sort.log
    baidu.html           file1.txt            index.html.1         oldboy.log           sort.txt
    .bash_history        file2.txt            ip.txt               oldboy.txt           .tcshrc
    .bash_logout         file3.txt            .lesshst             passwd               uniq.txt
    .bash_profile        file4.txt            nginx-1.14.2.tar.gz  .pki/                .viminfo
    [root@oldboyedu ~]# wc uniq.txt
     5  5 20 uniq.txt
    [root@oldboyedu ~]# wc -w  uniq.txt
    5 uniq.txt
    [root@oldboyedu ~]# wc -c  uniq.txt
    20 uniq.txt
    [root@oldboyedu ~]# ll uniq.txt
    -rw-r--r--. 1 root root 20 Jun 22 14:58 uniq.txt
    [root@oldboyedu ~]# 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
    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
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    ROOT
    oldboy.
    rootoldboy
    [root@oldboyedu ~]# wc -l  passwd
    23 passwd
    [root@oldboyedu ~]# wc -w  passwd
    41 passwd
    [root@oldboyedu ~]# 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
    [root@oldboyedu ~]# head  passwd  | wc -w
    10
    [root@oldboyedu ~]# cat uniq.txt 
    abc
    123
    abc
    123
    def
    [root@oldboyedu ~]# vi  uniq.txt
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# wc -w uniq.txt
    6 uniq.txt
    [root@oldboyedu ~]# cat uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    123
    abc
    123
    def
    [root@oldboyedu ~]# 
    

    19.tr 替换,单对单的替换

    选项:
    -d 删除字符

    [root@oldboyedu ~]# cat uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    123
    abc
    123
    def
    [root@oldboyedu ~]# tr  '1'  'o'  uniq.txt
    tr: extra operand ‘uniq.txt’
    Try 'tr --help' for more information.
    [root@oldboyedu ~]# tr  '1'  'o'  <uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    o23
    abc
    o23
    def
    [root@oldboyedu ~]# tr  '1'  'o'  < uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    o23
    abc
    o23
    def
    [root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    old
    abc
    old
    def
    [root@oldboyedu ~]# echo  "1"  >>uniq.txt
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    old
    abc
    old
    def
    o
    [root@oldboyedu ~]# echo  "2"  >>uniq.txt
    [root@oldboyedu ~]# tr  '123'  'old'  < uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    old
    abc
    old
    def
    o
    l
    [root@oldboyedu ~]# cat uniq.txt
    abc  hfkh:ksfhnrkghkeljg
    123
    abc
    123
    def
    1
    2
    [root@oldboyedu ~]# tr  -d '1' < uniq.txt 
    abc  hfkh:ksfhnrkghkeljg
    23
    abc
    23
    def
    
    2
    [root@oldboyedu ~]# tr  -d '1a' < uniq.txt 
    bc  hfkh:ksfhnrkghkeljg
    23
    bc
    23
    def
    
    2
    [root@oldboyedu ~]#
    

    20.cut 截取一段字符,取列。

    选项:
    -d 指定分隔符
    -f 取出指定的列

    [root@oldboyedu ~]# echo "I'm zls,18 years old QQ 133411023"  >  file5.txt
    [root@oldboyedu ~]# cat file5.txt
    I'm zls,18 years old QQ 133411023
    [root@oldboyedu ~]# cut  -d ' ' -f4,6  file5.txt
    old 133411023
    [root@oldboyedu ~]# cat file5.txt 
    I'm zls,18 years old QQ 133411023
    [root@oldboyedu ~]# tr  ',' ' '  < file5.txt
    I'm zls 18 years old QQ 133411023
    [root@oldboyedu ~]# tr  ',' ' '  < file5.txt  | cut -d ' ' -f2,7
    zls 133411023
    

    21.sed 文本处理工具,三剑客老二,行操作

    sed 后面参数:
    -n 取消默认输出 ,只打印模式匹配的行
    -e 直接在命令行模式上进行sed动作编辑,此为默认选项
    -i 确定真的修改文件内容
    -r 支持扩展正则表达式使用

    sed '' 引号里面的参数:
    p 打印当前内容
    d 删除当前行
    d 过滤,排除 d(delete)删除
    s 替换
    g 表示全局

    ;     多条命令分隔符,取不连续的多行
         ,    多条命令分隔符,取连续的多行
    
    取出行
    [root@oldboyedu ~]# cat sed.txt 
    101,$oldboy,CEO
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$lidao,UFO
    [root@oldboyedu ~]# sed  -n  '2p'  sed.txt
    102,$zhangyao,CTO
    [root@oldboyedu ~]# sed  -n  '2,4p'  sed.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    [root@oldboyedu ~]# sed -n  '2p;4p'  sed.txt
    102,$zhangyao,CTO
    104,$yy,CFO
    
    删除行
    [root@oldboyedu ~]# sed   '2d'  sed.txt
    101,$oldboy,CEO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$lidao,UFO
    [root@oldboyedu ~]# sed '2,4d'  sed.txt
    101,$oldboy,CEO
    105,$feixue,CIO
    106,$lidao,UFO
    [root@oldboyedu ~]# sed '2d;4d'  sed.txt
    101,$oldboy,CEO
    103,$Alex,COO
    105,$feixue,CIO
    106,$lidao,UFO
    
    过滤字符串

    要加参数-r,表示支持正则匹配

    [root@oldboyedu ~]# sed  -n  '/oldboy/p'  sed.txt
    101,$oldboy,CEO
    [root@oldboyedu ~]# sed  -n  '/oldboy|feixue/p'  sed.txt
    [root@oldboyedu ~]# sed  -nr  '/oldboy|feixue/p'  sed.txt
    101,$oldboy,CEO
    105,$feixue,CIO
    
    排除
    [root@oldboyedu ~]# sed '/oldboy/d'  sed.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$lidao,UFO
    
    替换

    s:替换 g:表示全局
    格式: 's#参数1#参数2#g' 参数1表示要替换谁,参数2表示要替换成什么

    [root@oldboyedu ~]# sed  's#lidao#qiudao#g'  sed.txt
    101,$oldboy,CEO
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$qiudao,UFO
    [root@oldboyedu ~]# cat sed.txt
    101,$oldboy,CEO
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$lidao,UFO
    [root@oldboyedu ~]# sed -i 's#lidao#qiudao#g'  sed.txt
    [root@oldboyedu ~]# cat sed.txt
    101,$oldboy,CEO
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$qiudao,UFO
    [root@oldboyedu ~]# 
    [root@oldboyedu ~]# cat  file5.txt 
    I'm zls,18 years old QQ 133411023
    [root@oldboyedu ~]# sed 's#,# #g'  file5.txt
    I'm zls 18 years old QQ 133411023
    [root@oldboyedu ~]# sed 's#,# #g'  file5.txt  | cut -d ' '  -f2,7
    zls 133411023
    [root@oldboyedu ~]#
    

    22.awk 取列,统计,计算。

    格式:awk '{print 0 NR}' 文件名 AWK '条件{动作} ' 文件名 ```print:显示,0:一整行的内容,NR:行号```

    选项说明:
    -F #指定分割符,多个分隔符
    NR #行号

    $n  #取某一列
    $NF #最后一列
    $0  #整行内容
    print #显示内容
    !   #取反
    
    取行
    [root@oldboyedu ~]# awk  '{print $0,NR}'  awk.txt
    101,$oldboy,CEO 1
    102,$zhangyao,CTO 2
    103,$Alex,COO 3
    104,$yy,CFO 4
    105,$feixue,CIO 5
    106,$qiudao,UFO 6
    [root@oldboyedu ~]# awk  'NR==2,NR==4'  awk.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    [root@oldboyedu ~]# awk 'NR>1&& NR<5' awk.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    [root@oldboyedu ~]# awk 'NR>=2 && NR <=4'  awk.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    
    取列

    要分割必须加参数-F, []中括号内放分隔符,可以放多个

    [root@oldboyedu ~]# cat file5.txt 
    I'm zls,18 years old QQ 133411023
    [root@oldboyedu ~]# awk  -F '[ ,]'  '{print  $2,$7}' file5.txt
    zls 133411023
    [root@oldboyedu ~]# cat  awk.txt 
    101,$oldboy,CEO
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$qiudao,UFO
    [root@oldboyedu ~]# awk  -F, '{print  $3}'  awk.txt
    CEO
    CTO
    COO
    CFO
    CIO
    UFO
    [root@oldboyedu ~]# awk  -F, '{print  $NF}'  awk.txt
    CEO
    CTO
    COO
    CFO
    CIO
    UFO
    [root@oldboyedu ~]# awk  -F,  '{print $2}'  awk.txt
    $oldboy
    $zhangyao
    $Alex
    $yy
    $feixue
    $qiudao
    [root@oldboyedu ~]# awk  -F,  '{print $(NF-1)}'  awk.txt
    $oldboy
    $zhangyao
    $Alex
    $yy
    $feixue
    $qiudao
    [root@oldboyedu ~]# 
    
    过滤字符串
    [root@oldboyedu ~]# awk  '/oldboy/'  awk.txt
    101,$oldboy,CEO
    [root@oldboyedu ~]# awk  '/oldboy|qiudao/'  awk.txt
    101,$oldboy,CEO
    106,$qiudao,UFO
    [root@oldboyedu ~]# awk  '/oldboy/'  awk.txt
    101,$oldboy,CEO
    [root@oldboyedu ~]# awk  '!/oldboy/'  awk.txt
    102,$zhangyao,CTO
    103,$Alex,COO
    104,$yy,CFO
    105,$feixue,CIO
    106,$qiudao,UFO
    

    练习题

    1.已知sort.log文件内容如下,请根据文件内容的第二列进行倒序排序。
    cat >>sort.log<<'EOF'
    218.65.30.25 68652
    218.65.30.53 34326
    218.87.109.154 21201
    112.85.42.103 18065
    112.85.42.99 17164
    218.87.109.151 17163
    218.87.109.150 17163
    218.65.30.61 17163
    218.65.30.126 17163
    218.65.30.124 17163
    EOF

    [root@oldboyedu ~]# sort -rnk2  sort.log
    [root@oldboyedu ~]# sort -rnk2  sort.log  |column -t
    

    2.统计系统文件/etc/services有多少行。

    [root@oldboyedu ~]# wc -l /etc/services 
    11176 /etc/services
    [root@oldboyedu ~]# cat -n /etc/services | tail -1
     11176  matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# grep  -n "."  /etc/services  |tail -1
    11176:matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# sed  =  /etc/services  |tail -2
    11176
    matahari        49000/tcp               # Matahari Broker
    [root@oldboyedu ~]# awk  '{print $0,NR}'  /etc/services  |tail -1
    matahari        49000/tcp               # Matahari Broker 11176
    

    3.已知文件内容如下,请对该文件的字符串出现的次数进行统计,并从小到大的进行排序出来。

    cat>uniq.txt<<'EOF'
    oldboy
    oldgirl
    oldboy
    egon
    student
    oldgirl
    oldboy
    EOF

    [root@oldboyedu ~]# sort  uniq.txt |uniq -c  |sort -n
          1 egon
          1 student
          2 oldgirl
          3 oldboy
    

    4.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。

    [root@oldboyedu ~]# awk  -F:  '{print  $NF}'  /etc/passwd
    [root@oldboyedu ~]# awk  -F:  '{print  $7}'  /etc/passwd
    [root@oldboyedu ~]# cut  -d ':' -f7  /etc/passwd
    

    5.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
    test
    qiudao
    oldboy

    [root@oldboyedu ~]# grep  -v "oldboy"  test.txt 
    test
    qiudao
    [root@oldboyedu ~]# sed  '/oldboy/d'  test.txt
    test
    qiudao
    [root@oldboyedu ~]# awk  '!/oldboy/' test.txt
    test
    qiudao
    [root@oldboyedu ~]# head -2  test.txt
    test
    qiudao
    

    6.只查看/etc/passwd文件内第5到第15行的内容

    [root@oldboyedu ~]# head  -15  /etc/passwd  |tail -11
    [root@oldboyedu ~]# sed -n  '5,15p'  /etc/passwd
    [root@oldboyedu ~]# awk  'NR==5,NR==15'  /etc/passwd
    [root@oldboyedu ~]# awk  'NR>4&&NR<16'  /etc/passwd
    [root@oldboyedu ~]# awk  'NR>=5&&NR<=15'  /etc/passwd
    

    7.把test.txt文件中的oldboy替换为oldgirl,给出命令

    [root@oldboyedu ~]# sed -i  's#oldboy#oldgirl#g'  awk.txt
    [root@oldboyedu ~]# sed -i.bak 's#oldboy#oldgirl#g'  awk.txt
    

    8.test.txt 的内容如下,要求过滤出不包含alex的行。
    oldboy
    oldgirl
    alex

    9.把文件/etc/passwd文件中的/sbin/nologin替换为/bin/bash

    10.把/etc/selinux/config文件中的SELINUX=enforcing行中的enforcing替换成disabled

    11.现将文件b.txt 中的所有123替换成def,请问如何实现?

    12.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

    [root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |tr  '/'  ' '  |cut  -d ' ' -f6
    10.0.0.100
    [root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |cut  -d ' ' -f 6  |cut -d '/' -f1
    10.0.0.100
    [root@oldboyedu ~]# ip  address  show  eth0  | grep -w inet  |sed 's#/# #g'  |cut -d ' ' -f6
    10.0.0.100
    [root@oldboyedu ~]# ip a s eth0  |awk  'NR==3'  |awk -F '[ /]'  '{print $6}'
    10.0.0.100
    [root@oldboyedu ~]# ip a s eth0  |awk  'NR==3'  |awk -F '[ /]*'  '{print $3}'
    10.0.0.100
    [root@oldboyedu ~]# ip a s eth0 |awk -F '[ /]'  'NR==3{print $6}'
    10.0.0.100
    

    13.使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?

    [root@oldboyedu ~]# awk -F:  '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}'  passwd
    

    14.删除/etc/passwd文件的前三行内容。

    文件属性

    [root@oldboyedu ~]# ll
    -rw-r--r--. 1 root root 58817074 Sep 21  2017 access.log
    
      • 文件的类型
    1. rw-r--r-- 文件的权限
    2. 1 文件的硬链接数
    3. root 文件的属主
    4. root 文件的属组
    5. 58817074 文件的大小
      7-9 Sep 21 2017 文件的最后修改时间
      10 access.log 文件名,不属于文件属性
    • 普通文件
      d 目录
      l 链接文件
      b 块设备
      c 字符设备
      s 套接字文件
      p 管道文件

    .txt
    .log
    .conf
    .xml
    .html
    .sh
    .gz
    .mp3
    .py
    扩展名只是为了方便运维人员使用,没有其他任何意义。

    文件的链接

    软链接

    Linux中的软链接文件类似于Windows系统中的 ”快捷键方式“ 里面具体存放的是源文件的路径,并指向源文件实体,因此通过访问这个 ”快捷方式“ 可迅速访问到源文件。软链接文件类型是l,

    [root@oldboyedu ~]# mkdir  oldboy/data/ 
    [root@oldboyedu ~]# cd oldboy/data/
    [root@oldboyedu data]# touch  oldboy.txt
    [root@oldboyedu data]# cd
    [root@oldboyedu ~]# ln  -s  /root/oldboy/data/oldboy.txt   /root/oldgirl.txt
    [root@oldboyedu ~]# ll /root/oldgirl.txt
    lrwxrwxrwx. 1 root root 28 Jun 22 17:04 /root/oldgirl.txt -> /root/oldboy/data/oldboy.txt
    [root@oldboyedu ~]# echo  "123"  > /root/oldgirl.txt
    [root@oldboyedu ~]# cat /root/oldgirl.txt
    123
    [root@oldboyedu ~]# cat /root/oldboy/data/oldboy.txt
    123
    
    版本升级
    [root@oldboyedu ~]# mkdir  nginx-1.14
    [root@oldboyedu ~]# ln -s nginx-1.14  nginx
    [root@oldboyedu ~]# mkdir  nginx-1.16
    [root@oldboyedu ~]# rm -f nginx  && ln -s nginx-1.16  nginx
    
    版本回退
    [root@oldboyedu ~]# rm -f nginx  && ln -s nginx-1.14  nginx
    
    [root@oldboyedu ~]# ll -i  nginx
    67160163 lrwxrwxrwx. 1 root root 10 Jun 22 17:08 nginx -> nginx-1.16
    [root@oldboyedu ~]# ll -i nginx-1.16
    total 0
    [root@oldboyedu ~]# ll -i -d nginx-1.16
    101703610 drwxr-xr-x. 2 root root 6 Jun 22 17:07 nginx-1.16
    

    硬链接

    Linux文件系统中, 多个文件名指向同一个索引节点Inode是正常且允许的(文件的多个有效的入口),这种情况文件
    称为硬链接。

    [root@oldboyedu ~]# ln  passwd   passwd.lk
    [root@oldboyedu ~]# ll -i  passwd*
    67160142 -rw-r--r--. 2 root root 962 Jun 22 11:27 passwd
    67160142 -rw-r--r--. 2 root root 962 Jun 22 11:27 passwd.lk
    [root@oldboyedu ~]# \rm -f passwd
    [root@oldboyedu ~]# ll passwd.lk 
    -rw-r--r--. 1 root root 962 Jun 22 11:27 passwd.lk
    [root@oldboyedu ~]# cat passwd.lk
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    

    软链接和硬链接的区别

    1.从定义:linux系统中,链接有两种,一种被称为软链接,类似于快捷方式,存放指向原文件inode的信息,与原文件inode不同。一种是硬链接,与原文件有相同的inode,可以指向数据block。
    2.从创建方式:硬链接命令 ln [原文件] [目标文件],软链接命令ln –s [原文件] [目标文件]
    3.从创建对象:ln命令不能对目录创建硬链接,但是可以对目录创建软链接。因为软链接可以跨越文件系统,硬链接则不能。对目录和为客户创建的文件软链接经常用到。
    4.删除软链接文件,对硬链接和原文件无影响。
    5.删除文件硬链接,对原文件及软链接文件无影响
    6.删除原文件,对硬链接读取数据无影响,软链接则失效。会出现红底白字状。
    7.同时删除原文件和硬链接,原文件才会被真正删除
    8.很多硬件设备中的快照原理,类似于硬链接原理

    命令的执行方式

    是否使用绝对路径
    判断命令是否有别名
    判断是否是内部命令 type -a
    判断命令缓存列表是否存在命令缓存
    [root@oldboyedu ~]# hash -d ip #删除命令缓存列表中对应的命令
    [root@oldboyedu ~]# hash -r #清空命令缓存列表
    [root@oldboyedu ~]# hash
    执行命令,有就执行成功,没有报错,命令找不到。
    [root@oldboyedu ~]# qiudao
    -bash: qiudao: command not found

    vim 文本编辑工具

    vim三种模式

    普通模式:进入文本当中就是普通模式,可以对文件进行删除,复制,粘贴等操作。
    编辑模式:需要由普通模式进入到编辑模式,可以对文件修改等操作。
    底行模式:保存文件,退出文件等。

    安装vim命令

    [root@oldboyedu ~]# yum install -y vim
    普通模式

    1.普通模式光标跳转

    G #光标跳转至文件的最后一行 shift+g
    gg #光标跳转至文件的第一行
    Ngg #光标跳转至当前文件的Number行
    $ #光标跳转至光标所在行的尾部
    ^|0 #光标跳转至光标所在行的首部

    2.文件内容较多

    ctrl+f #往下翻页(行比较多)
    ctrl+b #往上翻页

    3.复制与粘贴

    yy #复制当前光标所在的行
    5yy #复制当前光标以及光标向下4行
    p(小写) #粘贴至当前光标下一行
    P(大写) #粘贴至当前光标上一行

    4.删除、剪贴、撤销

    dd #删除当前光标所在的行
    4dd #删除当前光标所在的行以及往下的3行
    dG #删除当前光标及以后的所有行
    D #删除当前光标及光标以后的内容
    x #删除当前光标标记往后的字符,跟delete键功能一样
    X #删除当前光标标记往前的字符
    dd & p #剪贴、先删除dd(number dd),后粘贴p
    u #撤销上一次的操作

    5.替换

    r #替换当前光标标记的单个字符
    R #进入REPLACE模式, 连续替换,ESC结束

    1.跳转到某行时使用
    2.复制server{ 到 }结尾的这一行, 粘贴到 } 结尾的下一行
    3.删除listen相关的所有行
    4.将server_name 替换为SERVER_NAME
    5.删除oldboy.com,boy删除
    6.撤销一次

    编辑模式

    i #进入编辑模式,光标不做任何操作,内容输出在光标之前。
    a #进入编辑模式,将当前光标往后一位
    o #进入编辑模式,并在当前光标下添加一行空白内容
    I #进入编辑模式,并且光标会跳转至本行的头部
    A #进入编辑模式,将光标移动至本行的尾部
    O #进入编辑模式,并在当前光标上添加一行空白内容
    C #删除当前光标及光标以后的内容并进入编辑模式

    练习

    l1.新建一个文件,进入编辑模式,粘贴如下内容
    [root@www ~]# cat file.txt
    server {
    listen 80;
    server_name test.oldboy.com;
    index index.html;
    }
    2.在编辑模式下修改 test.oldboy.com为test.ett.com
    3.在index 最后面,添加index.php
    4.在index行下面插入一行内容为:root html;。
    5.退出编辑模式

    底行模式

    1.文件保存与退出

    :w #保存当前状态
    :q #退出当前文档
    :wq #先保存,在退出
    :x #先保存,在退出
    ZZ #保存退出, shfit+zz
    :q! #强制退出文档不会修改当前内容(常用)
    :w! #强制保存当前状态(不常用)
    :wq! #强制保存并退出(忽略)
    :number #跳转至对应的行号 和在普通模式下用Ngg一个意思

    2.文件内容查找

    /oldboy #需要搜索的内容(查找)
    n #按搜索到的内容依次往下进行查找
    N #按搜索到的内容依次往上进行查找

    3.文件内容替换sed 's###g'

    :%s#sbin#test#g #替换整个文本文件中包含sbin的替换为test
    :1,5s#sbin#test#g #替换1-5行中包含sbin的内容为test

    4.vim变量

    :set nu #显示行号
    :set nonu #取消显示行号
    :set list #给每行内容的结尾加个标识符
    :set nolist #取消显示标识符

    Vim练习题一

    1.将/etc/passwd 复制到/root/目录下,并重命名为test.txt
    2.用vim打开test.txt并显示行号
    3.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页
    4.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行
    5.搜索文件中出现的 root 并数一下一共出现多少个
    6.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作
    8.把整个文件中所有的root替换成admin
    9.把光标移动到20行,删除本行,还原上一步操作
    11.删除从5行到10行的所有内容,还原上一步操作
    12.复制2行并粘贴到11行下面,还原上一步操作(按两次u)
    13.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)
    14.把13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)
    15.将文件中所有的/sbin/nologin为/bin/bash
    16.在第一行下面插入新的一行,并输入"# Hello!"
    17.保存文档并退出

    视图模式

    批量删除字符:进入批量编辑模式(可视块)ctrl+v

    选择 #上下左右(方向键)
    删除 #d

    批量增加字符:进入批量编辑模式(可视块)ctrl+v

    选择区域 #上下左右(方向键)
    输入shift+i进入编辑模式
    编辑内容
    按下ESC键退出,内容会自动添加上

    批量删除多行:进入批量编辑模式(可视行)shift+v

    选择区域 #上下左右(方向键)
    删除 #d

    批量复制多行:进入批量编辑模式(可视行)shift+v

    选择区域 #上下左右(方向键)
    复制 #y
    粘贴 #p

    vim故障

    模拟故障:

    编辑文件的时候断开连接即可(断网或断电)
    重新连接服务器
    再次进行编辑文件

    故障报错:

    Found a swap file by the name ".vim.log.swp"
    Swap file ".vim.log.swp" already exists

    故障解决:

    删除临时文件或者先恢复内容再删除
    使用-r选项进行恢复。

    根据文件回答下列习题

    [root@www ~]# cat proxy.conf
    server {
    Listen 8080;
    Server_Name vim.OldboyEDU.com;
    location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forward-for;
    proxy_intercept_errors on;
    proxy_next_upstream error timeout;
    proxy_next_upstream_timeout 3s;
    proxy_next_upstream_tries 2;
    error_page 500 502 403 404 = /proxy_error.html;
    }
    location = /proxy_error.html {
    root /code/proxy;
    }
    }
    

    1.使用vim打开proxy.conf文件
    2.修改Listen为listen小写,并将8080修改为80
    3.修改ServerName为server_name小写。
    4.修改vim.OldboyEDU.com为vim.oldboy.com
    5.在server_name行下插入一行 root /code;
    5.复制5-14行的内容,然后将其粘贴到14行下面
    6.删除与proxy_set_header相关的两行全部删除
    7.如上操作完成后,在13-20行前面加上#号
    8.删除21-23的行,然后保存当前文件

    文件内容比对

    相同文件之间差异对比,通常用于对比修改前后的差异。
    diff #文件对比(No)
    vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容

    文件执行过程

    Vi/Vim执行过程:

    1.打开一个文件oldboy.txt.
    2.进入编辑模式,开始编辑内容
    3.编辑文件的时候,vim会自动创建一个临时文件。(.oldboy.txt.swap)
    4.编辑完成,vim会自动删除临时文件
    5.退出,修改成功

    相关文章

      网友评论

          本文标题:Linux-文件管理-文件操作命令02

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