V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iOran
V2EX  ›  问与答

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

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

    看来前端程序员也要学点运维用的工具啊。今天遇到需要在工程里面递归删除.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 /*
    执行,然后恢复数据,你就是资深运维了
    hambut
        11
    hambut  
       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:00
    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
    别抢饭碗啊 =。=
    whwq2012
        24
    whwq2012  
       2017-02-06 19:54:33 +08:00
    locate ,贼快的文件索引搜索
    cdlnls
        25
    cdlnls  
       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 命令好点
    whwq2012
        36
    whwq2012  
       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   ·   实用小工具   ·   1165 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 23:59 · PVG 07:59 · LAX 15:59 · JFK 18:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.