非运维的同学们,你们用过那些简单又实用的 shell 命令? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOran
V2EX    问与答

非运维的同学们,你们用过那些简单又实用的 shell 命令?

  •  1
     
  •   iOran 2017-02-06 15:43:10 +08:00 5249 次点击
    这是一个创建于 3171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看来前端程序员也要学点运维用的工具啊。今天遇到需要在工程里面递归删除.svn 的需求,网上查了下看到:

    find . -type d -name ".svn"|xargs rm -rf; 

    顺利搞定问题。但随后执行

    svn add . 

    发现有好多 *.a 文件被 global-ignore 了。自己 svn add . --no-ignore ,又有本地 ignore ,不想继续挖坑下去,一看到之前执行的指令,是不是也可以结合起来直接递归把目录里面的 *.a 一起 svn add 进入?

    然后自己 man 了下 find ,看了下参数,发现貌似可以这么玩:

    find . -type f -name "*.a"|xargs svn add; 

    试了一下,果然好用到爆炸,以前咋就没有意识到这些 shell command 的威力呢?

    来来来,大伙来分享下,还有哪些你知道的实用瑞士军刀?例如 find 结合 |xargs Xcommand ?

    56 条回复    2017-02-19 09:26:06 +08:00
    iOran
        1
    iOran  
    OP
       2017-02-06 15:52:29 +08:00
    帖子不要沉了啊。我先说个最普罗大众的:
    ```
    ls -al
    ```
    aheadlead
        2
    aheadlead  
       2017-02-06 15:55:13 +08:00   1
    最近发现 logrotate 命令挺好用的
    iOran
        3
    iOran  
    OP
       2017-02-06 15:59:24 +08:00
    @aheadlead 能来一条案例吗?比如场景 + 结果过程,如果有点参数说明 9更棒了~
    ryd994
        4
    ryd994  
       2017-02-06 16:05:36 +08:00 via Android   1
    这………怕是你还不知道 shell 脚本也是语言吧………
    awk ,这这又是一本书
    sed/grep , regex 要学好
    xargs 你说过了,但你估计不知道-P -i -n 的玩法
    find 自己就可以-exec
    uniq/head/tail/wc 这都是常用了

    Unix 世界就是这样,每个程序都很简单,但串起来可以很强大

    顺带一提,你的命令其实可以更简单
    先不加看一遍,然后
    find . -type d -name ".svn" -delete
    iOran
        5
    iOran  
    OP
       2017-02-06 16:16:00 +08:00
    @ryd994 以前只知道几个词汇,没有大面积用过,自己又是前端,最多就简单的命令。

    今天一用感觉这些指令的确太有魅力了。
    aheadlead
        6
    aheadlead  
       2017-02-06 16:24:43 +08:00
    @iOran 哈哈 2#是手滑发出来的,
    本来想写点补充,
    但是因为考虑到这个命令可以顾名思义,写了一会又关掉了。
    看到你的 9# ,我打开我刚写的脚本看了看,发现我其实记错命令了,实际是 savelog 。

    这个 savelog 命令是最近发现的,可以很方便的做 logrotate 。
    shell 脚本有时要打日志,每次执行生成一个日志文件(如: rich.log )。
    通常没有必要保存太多的日志(比如只用保留最后 7 个日志文件)。
    通过这个命令,就可以简单实现:

    在每次脚本执行完毕之后,来一个:
    $ savelog -c 7 rich.log
    aheadlead
        7
    aheadlead  
       2017-02-06 16:29:16 +08:00
    @aheadlead 我傻了… 看到你那个 9就写了个 9#,应是 3#
    R18
        8
    R18  
       2017-02-06 16:30:12 +08:00 via Android   7
    rm -rf /
    ETiV
        9
    ETiV  
       2017-02-06 16:31:43 +08:00 via iPhone
    grep "search something" -r * --include=*.php
    lhbc
        10
    lhbc  
       2017-02-06 16:50:40 +08:00
    grep
    sed
    awk
    不懂这些怎么出来行走江湖

    sudo rm -rf /*
    执行,然后恢复数据,你就是资深运维了
    WeeH9T
        11
    WeeH9T  
       2017-02-06 16:59:49 +08:00
    楼上的各位,都不带情景的么,谁会直接 rm -rf /

    我来设定情景

    我擦,这个目录好深啊,删除一个目录下的东西。

    rm -rf /dir1/dir2/dir3/dir5/dir6 /*

    我草泥马!!!!
    iOran
        12
    iOran  
    OP
       2017-02-06 17:06:23 +08:00
    @aheadlead sorry,打太快了。
    UnisandK
        13
    UnisandK  
       2017-02-06 17:07:11 +08:0
    iOran
        14
    iOran  
    OP
       2017-02-06 17:07:23 +08:00
    @hambut 乐死个人~
    UnisandK
        15
    UnisandK  
       2017-02-06 17:08:16 +08:00
    @UnisandK 情景
    你们听我解释
    iOran
        16
    iOran  
    OP
       2017-02-06 17:10:25 +08:00
    @UnisandK 这么多趣闻轶事呀~
    simple4wan
        17
    simple4wan  
       2017-02-06 18:12:18 +08:00
    sudo dd if=/dev/zero of=/
    manhere
        18
    manhere  
       2017-02-06 18:14:26 +08:00
    @simple4wan 你这个磁盘碎片整理我给 100 分
    ersic
        19
    ersic  
       2017-02-06 18:17:33 +08:00 via Android
    cd -
    hahalala
        20
    hahalala  
       2017-02-06 18:29:52 +08:00
    ls -1
    chmod -R 777 /
    dtfm
        21
    dtfm  
       2017-02-06 18:58:49 +08:00 via Android   1
    linux 刚入坑不久,说几个简单的, shell 为 zsh ,不确定 bash 是否兼容。

    systemd-analyze blame 由慢到快查看开机时间占用。

    直接输 cd ,不带参数就是切到 home 目录下。

    大家都知道 ll 是 ls -l 的简化,但其实输单独一个 l 也可以。

    切回上一个访问目录 cd - 。

    切回父目录的父目录, cd ../..,以此类推。

    统计某文件个数 ll l grep xxx l wc -l
    lun10439547
        22
    lun10439547  
       2017-02-06 19:43:51 +08:00
    果然有 rm -rf 这个东西。。。。
    sundong
        23
    sundong  
       2017-02-06 19:50:36 +08:00
    别抢饭碗啊 =。=
    syahd
        24
    syahd  
       2017-02-06 19:54:33 +08:00
    locate ,贼快的文件索引搜索
    cctv6
        25
    cctv6  
       2017-02-06 21:53:10 +08:00
    ls -lah cd ../ . rm cd mv vim chmod htop
    lydasia
        26
    lydasia  
       2017-02-06 21:53:38 +08:00
    rm -rf......
    OrangeM21
        27
    OrangeM21  
       2017-02-06 21:57:16 +08:00
    lz rz
    jasontse
        28
    jasontse  
       2017-02-06 22:01:08 +08:00 via Android
    DoraJDJ
        29
    DoraJDJ  
       2017-02-06 22:27:19 +08:00
    ls -laZ
    grep

    自己觉得经常用的比较方便的指令就这些了
    xratzh
        30
    xratzh  
       2017-02-06 23:47:25 +08:00 via iPhone
    echo
    sed
    grep
    tar
    scp
    fytriht
        31
    fytriht  
       2017-02-06 23:51:21 +08:00   1
    @dtfm item2 + zsh 可以省略掉'cd'和'/' '..' 是回到父目录 '...' 是回到父目录的父目录 以此类推
    fytriht
        32
    fytriht  
       2017-02-06 23:52:04 +08:00
    du -sh 查看文件夹 /文件的大小
    dtfm
        33
    dtfm  
       2017-02-06 23:59:23 +08:00
    @fytriht #31 刚刚试了下,果然,又省了一轮功夫, zsh 果然神之 shell
    xuboying
        34
    xuboying  
       2017-02-07 00:08:06 +08:00 via Android
    当年会个 perl 可以打死 awk sed uniq wc find grep tail head sort
    patx
        35
    patx  
       2017-02-07 02:11:43 +08:00
    @whwq2012 感觉 find 命令好点
    syahd
        36
    syahd  
       2017-02-07 08:00:07 +08:00
    @patx find 慢啊, locate 速度快,基本 updatedb 可以秒完成,而我 windows 上的 everything/masterseeker 都要花三四秒建立索引
    abmin521
        37
    abmin521  
       2017-02-07 09:03:29 +08:00 via Android
    https://vsxen.github.io/2016/12/02/short-useful-command/
    没电脑,就不贴原文了。
    没有 awk sed
    czheo
        38
    czheo  
       2017-02-07 09:41:11 +08:00
    !
    bikegl
        39
    bikegl  
       2017-02-07 10:24:16 +08:00   1
    怎么没有人说 sl 这个命令, 具我的研究它可以用来测试网络是否稳定
    如果稳定的话会有一列火车帽着白烟从屏幕右边向左边疾驰而过
    如果不稳定火车就会一卡一卡的走不动
    jarlyyn
        40
    jarlyyn  
       2017-02-07 10:25:36 +08:00
    find sed grep
    shellfly
        41
    shellfly  
       2017-02-07 10:57:32 +08:00
    aristotll
        42
    aristotll  
       2017-02-07 11:05:17 +08:00
    r#33 @dtfm 其实都是语法糖

    你 `alias` 就能看见了
    ```
    $alias
    -='cd -'
    ...=../..
    ....=../../..
    .....=../../../..
    ......=../../../../..
    还有很多....
    ``
    popu111
        43
    popu111  
       2017-02-07 11:53:51 +08:00   1
    如何快速上天: chmod -R 000 /

    见不到下班了
    UnknownR
        44
    UnknownR  
       2017-02-07 13:02:32 +08:00
    @bikegl 卧槽,竟然还有这功能,我还以为只是恶搞输入错误的
    loryyang
        45
    loryyang  
       2017-02-07 13:06:53 +08:00
    shell 使用技巧是无止境的,有时间就学几手
    https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
    如果让我投票,我投 alias 一票, ctrl+r 两票
    cosven
        46
    cosven  
       2017-02-07 13:16:46 +08:00
    目前感受:
    入门: cd, ls, cat, less...
    一级: grep, find...
    二级: awk, xargs...据说 sed 也是
    三级: 待补充
    QAPTEAWH
        47
    QAPTEAWH  
       2017-02-07 13:29:45 +08:00
    alias emcas=emacs
    alias emasc=emacs
    xiaket
        48
    xiaket  
       2017-02-07 14:01:38 +08:00
    直接翻一遍 LPI 认证那本书吧.
    Chewbacca
        49
    Chewbacca  
       2017-02-07 14:34:19 +08:00   2
    while read -d " "; do sl; done

    孩子不到 1 岁的时教会按空格看火车,按了一年多了
    loading
        50
    loading  
       2017-02-07 14:37:51 +08:00 via Android
    sl
    loading
        51
    loading  
       2017-02-07 14:38:46 +08:00 via Android
    @Chewbacca 对, sl 我最喜欢的命令,有时郁闷就来一下。
    wildcat007
        52
    wildcat007  
       2017-02-07 14:39:11 +08:00
    whereis java
    find / -name xxxx.py
    ls -alh
    grep 'xxx' /etc/my.cnf
    whoami
    netstat -ntulp

    上面都是些什么奇怪的东西
    iOran
        53
    iOran  
    OP
       2017-02-07 14:53:12 +08:00
    @Chewbacca 什么梗?
    DaCong
        54
    DaCong  
       2017-02-07 15:10:09 +08:00   2
    推荐一本书:
    https://billie66.github.io/TLCL/book/index.html
    用它来对 Linux 的命令行有个初步的了解是不错的。
    SeanQu
        55
    SeanQu  
       2017-02-09 14:30:45 +08:00
    cmatrix 装逼神器
    mingyun
        56
    mingyun  
       2017-02-19 09:26:06 +08:00
    @DaCong 好赞
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5994 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:42 PVG 09:42 LAX 18:42 JFK 21:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86