美文网首页
shell命令/使用场景

shell命令/使用场景

作者: 超鸽带你飞 | 来源:发表于2019-02-28 12:07 被阅读0次

    命令列表:

    • sleep seconds

    • date +%s 返回10位时间戳

    • cat/vim/more file

    • head/tail -n 10 file

    • wc [-L行/c字符/w单词] file 统计文件行数/字符数/单次数

    • sudo ln -s 源文件 目标文件

    • grep [-option] pattern file 如:grep '^我是10$’ grep.txt

    -o 只显示匹配的,输出一行一个
    -v 反转-o
    -n  显示行号
     -R/-r  递归
    -e  正则
    
    • find <指定目录> <指定条件> <指定动作>
    • locate file ; updatedb
     locate 命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。
    
    Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
    
    为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
    
    • sed ’s/pattern/replace/‘ file 替换 ( -i 可以将替换应用于原 文件)
    • command | xargs (xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的)
    -n 3   每行 3 个参数
    -d X   自定义分界符
    
    • awk ' BEGIN{ print "start" } pattern { commands } END{ print "end” }’ file
    BEGIN  pattern  END  均可以省略
    
    $ echo -e "line1 f2 f3\nline2 f4 f5\nline3 f6 f7" | awk '{print "Line no:"NR",No of fields:"NF, "$0="$0, "$1="$1,"$2="$2,"$3="$3}'
    
    Line no:1,No of fields:3 $0=line1 f2 f3 $1=line1 $2=f2 $3=f3
    Line no:2,No of fields:3 $0=line2 f4 f5 $1=line2 $2=f4 $3=f5
    Line no:3,No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7
    
    • ps
    • kill pid
    • pkill pname -9强制
    • cron
    • ssh user@host -p 端口(默认22)
    • lftp username@ftphost (端口21)
    • scp source destination 其中source和destination都可以是 user@host:path -r 递归复制

    如:scp -r ./dist/* www@182.92.232.41:/home/wwwroot/p.[51tiancai.com/public/](http://51tiancai.com/public/)

    • ssh-keygen -t rsa -C "youremail@example.com"
    • open -a Google\ Chrome --args --disable-web-security
    • 压缩命令:tar -zcvf 压缩文件名.tar.gz 被压缩文件名
    • 解压缩命令:tar -zxvf 压缩文件名.tar.gz

    场景应用

    1. 批量杀死所有存活的队列进程
    pids=`ps -ef|grep app:queue|grep "\-\-process="|grep -v touch|grep -v grep |awk '{print $2}'`
    if [ ! -z "$pids" ]
    then
        echo $pids|xargs kill
        echo "kill $pids success"
    else
        echo 'process not found'
    fi
    
    
    image.png

    cat test.log |awk '{print $3}' | sort | uniq -c

    find <指定目录> <指定条件> <指定动作>
    <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
    <指定条件>: 所要搜索的文件的特征。
    <指定动作>: 对搜索结果进行特定的处理。
    如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

    1、删除以html结尾的10天前的文件,包括带空格的文件:
    find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 rm -rfv

    xargs -i 参数或者-I参数配合{}即可进行文件的操作。
    加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
    加 -I 参数 需要事先指定替换字符

    1.1复制以html结尾的10天前的文件,包括带空格的文件到/dir/目录下
    find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 cp {} /dir

    2、统计所有c文件的行数
    find source_code_dir_path -type f -name "*.c" -print0 | xargs -0 wc -l

    ln -s 类似Windows下的超级链接。

    举例:
    当前目录是/local,而我经常要访问/usr/local/linux/work
    那么我就可以使用在local下建立一个文件linkwork,
    sudo ln -s /usr/local/linux/work /local/linkwork

    删除链接
    rm -rf symbolic_name 注意不是
    rm -rf symbolic_name/
    那么上面我就是
    rm -rf /local/linkwork

    相关文章

      网友评论

          本文标题:shell命令/使用场景

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