zoukankan      html  css  js  c++  java
  • 每天十个shell中常用命令(二)

    rename 

    功能:重命名文件。支持通配符

    常用选项:

    实例:批量命名文件

    用法:rename 原文件要修改的地方 修改成什么样 修改的文件

    将foo1-foo9替换为foo01-foo09:

    [root@Zabbixserver test]# for i in `seq 9`; do touch foo$i;done
    [root@Zabbixserver test]# ls
    foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9
    
    [root@Zabbixserver test]# rename foo foo0 foo?
    [root@Zabbixserver test]# ls
    foo01 foo02 foo03 foo04 foo05 foo06 foo07 foo08 foo09
    rename

    将.htm后缀的文件替换为.html

    [root@Zabbixserver test]# touch {1,2,3}.htm
    [root@Zabbixserver test]# ls
    1.htm 2.htm 3.htm
    [root@Zabbixserver test]# rename .htm .html .htm
    rename: renaming .htm to .html failed: No such file or directory
    [root@Zabbixserver test]# rename .htm .html *.htm
    [root@Zabbixserver test]# ls
    1.html 2.html 3.html
    rename

    dirname 

    功能:去除路径的最后一个名字

    常用选项:

    示例:

    [root@Zabbixserver test]# dirname /home/rzrk/
    /home
    dirname

    basename

    功能:打印路径的最后一个名字

    常用选项:

    [root@Zabbixserver test]# basename /usr/sbin/sosreport 
    sosreport
    
    [root@Zabbixserver test]# basename /tmp/test/1.html .html 
    1
    basename

    du

    功能:估算文件磁盘空间使用

    常用选项:

    -h 易读格式显示 (K,M,G)

    -b 单位bytes显示

    -k 单位KB显示

    -m  单位MB显示

    -S 只显示总大小

    --max-depth=<目录层数>,超过层数的目录忽略

    --exclude=file 排除文件或目录

    --time 显示大小和创建时间

    示例:

    查看目录大小:

    [root@Zabbixserver ~]# du -sh /shenjianyu/
    664M    /shenjianyu/
    du -sh

    排除目录某个文件:

    [root@Zabbixserver shenjianyu]# du -sh --exclude=mysql-5.5.49.tar.gz /shenjianyu/
    643M    /shenjianyu/
    du -sh --exclude

    输出当前目录下各个子目录所使用的空间:

    [root@Zabbixserver shenjianyu]# du -h --max-depth=1
    106M    ./zabbix-3.0.4
    4.0K    ./b
    113M    ./data
    366M    ./php-5.5.35
    4.0K    ./test5
    4.0K    ./test6
    26M    ./nginx-1.9.15
    4.0K    ./a
    4.0K    ./c
    664M    .
    du -h --max-depth=1

    输出当前目录下占用空间最大的十个文件

    [root@Zabbixserver shenjianyu]# du -h --max-depth=2 /shenjianyu/| sort -h | tail
    32M    /shenjianyu/php-5.5.35/Zend
    33M    /shenjianyu/zabbix-3.0.4/src
    55M    /shenjianyu/zabbix-3.0.4/frontends
    103M    /shenjianyu/php-5.5.35/sapi
    106M    /shenjianyu/zabbix-3.0.4
    113M    /shenjianyu/data
    113M    /shenjianyu/data/zabbix
    208M    /shenjianyu/php-5.5.35/ext
    366M    /shenjianyu/php-5.5.35
    664M    /shenjianyu/
    du -h --max-depth=2

    cut

    功能:选取文件的每一行数据

    常用选项:

    -b 选中第几个字符

    -c 选中多少个字符

    -d 指定分隔符分字段

    -f 显示选中字段

    示例:

    打印b字符:

    [root@Zabbixserver shenjianyu]# echo "abc" | cut -b "2"
    b
    cut -b

    截取abc字符:

    [root@Zabbixserver shenjianyu]# echo "abcdef" | cut -c "1-3"
    abc
    cut -c

    以冒号分隔,显示第二个字符:

    [root@Zabbixserver shenjianyu]# echo "a:b:c" | cut -d : -f2 
    b
    cut -d

    tr

    功能:替换或删除字符

    格式 Usage: tr [OPTION]... SET1 [SET2]

    常用选项:

    -c 替换SET1没有SET2的字符

    -d 删除SET1中字符

    -s 压缩SET1中重复的字符

    -t 将SET1用SET2转换,默认

    示例:

    替换SET1没有SET2的字符:

    echo -n "aaabbbccc" | tr -c c 1  (echo "aaabbbccc" 时,后面会有一个
    换行符,也会被替换,所以-使用n)
    111111ccc
    tr -c

    去重字符:

    [root@Zabbixserver shenjianyu]# echo "aaabbbccc" | tr -s '[a-z]'
    abc
    tr -s

    删除字符:

    [root@Zabbixserver shenjianyu]# echo -e "aa
    bb
    cc
    " | tr -d '
    '
    aabbcc
    tr -d

    转换字符:

    [root@Zabbixserver shenjianyu]# echo "aaabbbccc" | tr -t a 1
    111bbbccc
    tr -t

    替换字符:

    [root@Zabbixserver shenjianyu]# echo "aaabbbccc" | tr '[a-z]' '[A-Z]'
    AAABBBCCC
    tr

    stat

    功能:显示文件或文件系统状态

    常用选项:

    -Z 显示selinux安全上下文

    -f 显示文件系统状态

    -c 指定格式输出内容

    -t 以简洁的形式打印

    示例:

    显示文件信息:

    [root@Zabbixserver shenjianyu]# stat devo.txt 
    File: `devo.txt'
    Size: 5 Blocks: 8 IO Block: 4096 regular file
    Device: 803h/2051d    Inode: 2645180 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2017-03-22 10:15:11.021972345 +0800
    Modify: 2017-03-22 10:15:11.021972345 +0800
    Change: 2017-03-22 10:15:11.021972345 +0800
    stat

    只显示文件修改时间:

    [root@Zabbixserver shenjianyu]# stat -c %y devo.txt (查看下修改日期)
    2017-03-22 10:15:11.021972345 +0800
    [root@Zabbixserver shenjianyu]# echo 1 >> devo.txt (修改下这个文件)
    [root@Zabbixserver shenjianyu]# stat -c %y devo.txt 
    2017-03-22 10:20:08.022902676 +0800
    stat -c

    seq

    功能:打印序列化数字

    常用选项:

    -f 使用printf样式格式

    -s 指定换行符,默认是

    -w 等宽,用0填充

    示例:

    数字序列:

    [root@Zabbixserver shenjianyu]# seq 3
    1
    2
    3
    seq

    带0的数字序列:

    [root@Zabbixserver shenjianyu]# seq -w 03
    01
    02
    03
    seq -w

    范围数字序列:

    [root@Zabbixserver shenjianyu]# seq 2 5
    2
    3
    4
    5
    seq

    步长序列:

    [root@Zabbixserver shenjianyu]# seq 1 2 5  (2是步长)
    1
    3
    5
    seq

    以加号分隔序列:

    [root@Zabbixserver shenjianyu]# seq -s "+" 5
    1+2+3+4+5
    seq -s

    等宽并在数字前面加字符串:

    [root@Zabbixserver shenjianyu]# seq -f "str%02g" 3
    str01
    str02
    str03
    
    %g是默认数字位数,02是数字不足两位时使用0填充
    seq -f

    shuf

    功能:生成随机序列

    常用选项:

    -i 输入数字范围

    -o 结果写入文件

    示例:

    输出范围随机数:

    [root@Zabbixserver shenjianyu]# seq 5 | shuf
    1
    3
    4
    2
    5
    shuf
    [root@Zabbixserver shenjianyu]# shuf -i 5-10
    5
    6
    9
    10
    8
    7
    shuf -i

    sort

    功能:排序文件

    常用选项:

    -f 忽略大小写

    -M 根据月份比较排序,比如JAN、DEC

    -h 易读的大小单位排序,比如2K,1G

    -n 数字排序

    -r 倒序排序

    -k n,m根据关键字排序,从第n字段开始,m字段结束

    -o 将结果写入文件

    -t 指定分隔符

    -u 去重重复行

    默认是对整列排序。

    示例:

    随机数字排序:

    [root@Zabbixserver shenjianyu]# seq 5 | shuf | sort
    1
    2
    3
    4
    5
    sort

    随机字母排序:

    [root@Zabbixserver shenjianyu]# printf "%c
    " {a..f} | shuf | sort
    a
    b
    c
    d
    e
    f
    shuf

    倒序排序:

    [root@Zabbixserver shenjianyu]# seq 5 | shuf | sort -r
    5
    4
    3
    2
    1
    sort -r

    分隔后字段排序:

    [root@Zabbixserver shenjianyu]# cat /etc/passwd | sort -t : -k 3 -n
    (以冒号分隔,根据第三段数字排序)
    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
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    tcpdump:x:72:72::/:/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
    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    telegraf:x:490:486::/etc/telegraf:/bin/false
    influxdb:x:491:487::/var/lib/influxdb:/bin/false
    grafana:x:492:488:grafana user:/usr/share/grafana:/sbin/nologin
    redis:x:493:489:Redis Server:/var/lib/redis:/sbin/nologin
    dspam:x:494:490:User to own dspam directories and default processes:/var/lib/dspam:/sbin/nologin
    ntop:x:495:492:ntop:/var/lib/ntop:/sbin/nologin
    mysql-proxy:x:496:493:MySQL-Proxy user:/:/sbin/nologin
    pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
    saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
    rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
    sjy:x:500:500:sjy:/home/sjy:/bin/bash
    admin:x:501:501::/home/admin:/bin/bash
    nginx:x:502:502::/home/nginx:/sbin/nologin
    zabbix:x:503:503::/home/zabbix:/sbin/nologin
    sort -t

    去重重复行:

    [root@Zabbixserver shenjianyu]# echo -e "1
    1
    2
    2
    3
    3"
    1
    1
    2
    2
    3
    3
    [root@Zabbixserver shenjianyu]# echo -e "1
    1
    2
    2
    3
    3" | sort -u
    1
    2
    3
    sort -u

    大小单位排序:

    [root@Zabbixserver ~]# du -h | sort -k 1 -h -r
    412M    .
    271M    ./ntopng
    99M    ./ntopng/.git/objects/pack
    99M    ./ntopng/.git/objects
    99M    ./ntopng/.git
    86M    ./ntopng/third-party
    60M    ./nDPI
    55M    ./ntopng/third-party/zeromq-4.1.3
    37M    ./ntopng/httpdocs
    29M    ./ntopng/third-party/zeromq-4.1.3/src
    28M    ./ntopng/httpdocs/geoip
    27M    ./redis
    26M    ./redis/bin
    23M    ./nDPI/src/lib
    23M    ./nDPI/src
    20M    ./ntopng/doc
    18M    ./ntopng/third-party/zeromq-4.1.3/.libs
    17M    ./ntopng/third-party/LuaJIT-2.0.3/src
    17M    ./ntopng/third-party/LuaJIT-2.0.3
    16M    ./nDPI/tests/pcap
    16M    ./nDPI/tests
    16M    ./nDPI/.git
    15M    ./nDPI/.git/objects/pack
    15M    ./nDPI/.git/objects
    14M    ./ntopng/src
    14M    ./nDPI/src/lib/protocols
    13M    ./ntopng/third-party/zeromq-4.1.3/src/.libs
    sort -h

    分隔后第一个字段的第二个字符排序

    [root@Zabbixserver ~]# echo -e "ag:3
    cd:2
    ef:4" | sort -t : -k 1.2
    cd:2
    ef:4
    ag:3
    sort -k

    tab作为分隔符

    [root@Zabbixserver ~]# sort -t $"	"
    tab 分隔

    多序排列:

    file文件内容

    [root@Zabbixserver ~]# cat file 
    zhaoliu 6 100
    lisi 8    80
    wangwu 7 90
    zhangsan 6 100
    View Code

    对file文件的第二列正序排列,在此基础上对第三列倒序排列(多序排列)

    [root@Zabbixserver ~]# sort -n -k 1 -k3 -nr file 
    zhaoliu 6 100
    zhangsan 6 100
    wangwu 7 90
    lisi 8    80
    View Code

    对两个文件同时排序:

    sort file1 file2
    sort
  • 相关阅读:
    线程交互
    线程死锁
    多线程的同步-sychronized
    线程常见方法
    创建多线程
    消费!
    Redis基本认识
    在右键菜单中加入"在IDEA中打开" (Open in IDEA)
    安装coc.nvim时 报[coc.nvim] javascript file not found 错误的解决方案
    汇编语言的种类
  • 原文地址:https://www.cnblogs.com/shenjianyu/p/6595770.html
Copyright © 2011-2022 走看看