V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seabornlee
V2EX  ›  分享发现

别再用 CD 切换目录了

  •  
  •   seabornlee · 2016-01-01 09:21:42 +08:00 · 17218 次点击
    这是一个创建于 3240 天前的主题,其中的信息可能已经有所发展或是发生改变。

    引言

    有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI ?」

    

    是的,在一些人眼里,这个黑黑的终端窗口代表着确实代表着落后,装 B 。
    而在另一些人手里,它却是一个高效的工具。

    其实很多人觉得 Terminal 难用,他们认为:

    • 命令很多,难记
    • 敲命令很麻烦
    • 界面黑黑的,难看
    • ...

    可能这些印象都来自于「未经任何武装」的 Terminal ,实际上始终有一部分人是 Terminal 忠实用户,他们也在推动着 Terminal 与日俱增。
    所以,接下来我准备分享一系列使用 Terminal 的技巧。

    目录

    有了 tldr ,妈妈再也不用担心我记不住命令了
    「 What the fuck 」妈妈再也不用担心我敲错命令了

    正文

    我看到很多使用 Terminal 的同学,还在使用cd命令切换目录,每次打开一个新的窗口都要一连串的cd才能进入自己工作的目录。
    今天我要介绍的工具叫 Autojump ,它就是来解决这个问题的。

    打开 Autojump 的 Github 主页,可以看到它的介绍。

    主要有几点:

    • 它可以让你快速跳转到想去的目录
    • 它记录你进入过的目录,然后根据进入频率来推测你想去的目录
    • 刚安装的时候,它没有作用(因为你还没进入过任何目录)

    安装很简单,主页上有 Linux , Windows 和 Mac OS 上的安装方法。
    以 Mac OS 为例,使用 Homebrew :

    brew install autojump



    取决于你使用 Zsh 或 Fish ,根据提示将一行代码添加到配置文件即可。
    测试一下,先使用cd切换到某个目录xxx,再打开一个新窗口,这次就不用再一级一级cd进去了,直接j xxx即可。

    有任何问题,欢迎留言。

    94 条回复    2019-08-15 15:24:07 +08:00
    aheadlead
        1
    aheadlead  
       2016-01-01 09:40:01 +08:00
    loading
        2
    loading  
       2016-01-01 09:40:41 +08:00 via Android
    建议看看 zsh
    aheadlead
        3
    aheadlead  
       2016-01-01 09:40:53 +08:00
    写 java 的日子觉得目录比较麻烦,就写上面的代码到了 .bash_profile
    ryd994
        4
    ryd994  
       2016-01-01 09:44:30 +08:00   ❤️ 3
    1 Tab 补全
    2 良好的目录结构实际上是高效的索引
    just1
        5
    just1  
       2016-01-01 09:49:37 +08:00 via Android
    输目录其实并没有不好
    Explorare
        6
    Explorare  
       2016-01-01 09:59:21 +08:00
    图床挂了。另外请使用支持 https 的图床
    lxy42
        7
    lxy42  
       2016-01-01 10:01:49 +08:00
    GUI 还不是要一级一级目录点击,终端用 tab 补全也挺快的,常用目录可以用 alias
    nozama
        8
    nozama  
       2016-01-01 10:11:12 +08:00 via iPhone
    好像 iterm 自带此功能
    azuginnen
        9
    azuginnen  
       2016-01-01 10:11:34 +08:00   ❤️ 3
    预感楼主要打我了

    我就 po 两张图



    rashawn
        10
    rashawn  
       2016-01-01 10:12:44 +08:00
    这个难道不是大家都在用的东西吗..
    azuginnen
        11
    azuginnen  
       2016-01-01 10:13:32 +08:00
    进目录是如此高效,支持 fuzzy 名字
    tokki
        12
    tokki  
       2016-01-01 10:21:26 +08:00 via iPhone
    用了好多年了 你现在才知道
    congeec
        13
    congeec  
       2016-01-01 10:21:58 +08:00
    看来 V2EX 社区用户总体 shell 水平不高
    ryd994
        14
    ryd994  
       2016-01-01 10:46:18 +08:00   ❤️ 7
    昨天见个不用 if 的
    今天见个不用 cd 的
    V2EX 上牛人真是越来越多了,呵呵
    nazhao
        15
    nazhao  
       2016-01-01 10:46:55 +08:00
    azuginnen ,能告诉我用的是啥么
    phoneli
        16
    phoneli  
       2016-01-01 10:59:13 +08:00
    @nazhao 我自己也写了一个类似的,但是很简单却实用。不过,后来我发觉,我同事很多都写了类似的东西。例如这个: https://github.com/dacez/dcd
    matrix67
        17
    matrix67  
       2016-01-01 11:02:34 +08:00 via Android
    @nazhao fzf fasd
    azuginnen
        18
    azuginnen  
       2016-01-01 11:03:51 +08:00
    zonghua
        19
    zonghua  
       2016-01-01 11:08:25 +08:00
    @aheadlead 你在终端写 Java?
    Andiry
        20
    Andiry  
       2016-01-01 11:09:05 +08:00
    这玩意有啥用处?多窗口+永不关机已经可以解决所有问题了。
    westup
        21
    westup  
       2016-01-01 11:14:12 +08:00
    @azuginnen 这是啥工具
    wwek
        22
    wwek  
       2016-01-01 11:14:50 +08:00
    感谢分享
    4everLoveU
        23
    4everLoveU  
       2016-01-01 11:23:20 +08:00
    华而不实
    enotx
        24
    enotx  
       2016-01-01 11:27:49 +08:00   ❤️ 1
    我还以为要来推 pushd&popd
    latyas
        25
    latyas  
       2016-01-01 11:46:09 +08:00
    我一直 cd+tab+history
    fxxkgw
        26
    fxxkgw  
       2016-01-01 11:55:01 +08:00
    @enotx 同感 特使是很长的 shell 脚本 这两个命令特别好用
    slixurd
        27
    slixurd  
       2016-01-01 12:02:26 +08:00
    autojump 会越用越卡,尤其是在文件数量特别大的情况下。
    还不如自己手敲路径然后 tab 补全。
    Quaintjade
        28
    Quaintjade  
       2016-01-01 12:03:14 +08:00 via Android   ❤️ 7
    明天会不会发一篇“别再用浏览器逛论坛了,来 telnetBBS 玩吧”。。。
    firefox12
        29
    firefox12  
       2016-01-01 12:06:25 +08:00
    shell 类最大的好处是 可以自动化批处理文件。
    aec4d
        30
    aec4d  
       2016-01-01 12:10:09 +08:00
    文笔不错。。。。可是-_-典型的装逼不成反被草 用命令行的多了去了
    br00k
        31
    br00k  
       2016-01-01 12:47:51 +08:00
    城会玩😊
    noahlee
        32
    noahlee  
       2016-01-01 12:57:57 +08:00
    alias 重命名 cd 目录!
    k9982874
        33
    k9982874  
       2016-01-01 13:03:43 +08:00 via iPhone
    服务器上一般不会有这么花哨的玩意,当然自己摆弄摆弄还是极好的。

    @azuginnen z 命令是查看服务区负载的你造么
    tracyone
        34
    tracyone  
       2016-01-01 13:04:14 +08:00   ❤️ 1
    文本三巨头: vim 、 zsh 和 tmux ,有了这三个让你远离鼠标,高效操作文本和命令。
    azuginnen
        35
    azuginnen  
       2016-01-01 13:10:09 +08:00
    @k9982874 不知道,求普及~

    服务器上缺失,什么 tmux , htop 都没有
    meunicorn
        36
    meunicorn  
       2016-01-01 13:10:45 +08:00
    win 下。。我都是先输入 cd 然后空格,再把那个文件夹拖进去的。。。
    azuginnen
        37
    azuginnen  
       2016-01-01 13:26:37 +08:00
    p.s


    azuginnen
        38
    azuginnen  
       2016-01-01 13:28:08 +08:00   ❤️ 1
    这个 history 的自带电池也是好用到爆啊!!!
    vietor
        39
    vietor  
       2016-01-01 13:31:40 +08:00 via Android   ❤️ 1
    楼主是来钓鱼的,哈哈
    kikyous
        40
    kikyous  
       2016-01-01 13:37:19 +08:00
    别再用电脑了
    2owe
        41
    2owe  
       2016-01-01 13:50:33 +08:00 via iPhone
    嗯 用过都说好!
    kn007
        42
    kn007  
       2016-01-01 14:17:35 +08:00
    老生常谈的东西了。。
    redsonic
        43
    redsonic  
       2016-01-01 14:38:50 +08:00
    popd , pushd
    slfmessi
        44
    slfmessi  
       2016-01-01 15:00:00 +08:00
    @azuginnen 之前好像看到过自带电池指代什么,但忘记,请不吝赐教
    SonicY
        45
    SonicY  
       2016-01-01 15:36:52 +08:00 via Android
    @k9982874 z 不是 ohmyzsh 自带的插件吗,跟 Autojump 一样。
    qian19876025
        46
    qian19876025  
       2016-01-01 15:41:25 +08:00
    额 不都是用 tab 么?
    EzVoodoo
        47
    EzVoodoo  
       2016-01-01 16:01:25 +08:00
    Fish terminal 路过
    azuginnen
        48
    azuginnen  
       2016-01-01 16:21:17 +08:00   ❤️ 1
    ykqmain
        49
    ykqmain  
       2016-01-01 17:20:06 +08:00   ❤️ 1
    我觉得终端是神器
    BOYPT
        50
    BOYPT  
       2016-01-01 17:28:19 +08:00   ❤️ 1
    没人吐槽 CD 是切换不了目录的?必须 cd
    tuimaochang
        51
    tuimaochang  
       2016-01-01 17:51:21 +08:00
    @Quaintjade 哈哈哈,这台词抢得好啊
    guoziyan
        52
    guoziyan  
       2016-01-01 18:00:53 +08:00   ❤️ 1
    什么? 大清亡了
    nsa
        53
    nsa  
       2016-01-01 18:28:00 +08:00 via iPad   ❤️ 1
    楼主脸肿了😂
    wxm4ever
        54
    wxm4ever  
       2016-01-01 18:41:18 +08:00
    @azuginnen 你用的那两个图里的工具是什么,分享下。。。 thx
    wizardforcel
        55
    wizardforcel  
       2016-01-01 18:51:08 +08:00 via Android
    wtf 真心好用。
    s12j
        56
    s12j  
       2016-01-01 18:57:02 +08:00   ❤️ 1
    用 terminal 来贬低 GUI 的基本都是刚入行的菜鸟,有本事工作机用纯命令行。
    把 terminal 和脚本混为一谈到也是透换概念,谁说 GUI 下就不能用脚本了?
    举个例子,你有几十台 linux 要经常 ssh 过去,两个方案:
    1. GUI 的: 一台 windows 做跳板机,通过 SecureCRT 管理
    2. 无 GUI 的:一台 linux 做跳板机。。。;
    Lonely
        57
    Lonely  
       2016-01-01 18:58:04 +08:00
    目前未见楼主回复
    azuginnen
        58
    azuginnen  
       2016-01-01 19:01:13 +08:00 via Android
    @wxm4ever 分享了,就在我留的帖子里
    wxm4ever
        59
    wxm4ever  
       2016-01-01 19:02:29 +08:00
    @azuginnen 收到。多谢多谢
    CheungKe
        60
    CheungKe  
       2016-01-01 19:53:25 +08:00
    @seabornlee http://www.codingstyle.cn 很多东西加载不到
    kingwkb
        61
    kingwkb  
       2016-01-01 20:04:47 +08:00
    @azuginnen 这个就是 autojump 么? 看着不像哈
    TangMonk
        62
    TangMonk  
       2016-01-01 20:14:37 +08:00
    fasd 完爆 autojump
    seabornlee
        63
    seabornlee  
    OP
       2016-01-01 21:01:56 +08:00
    @azuginnen 出来就是交流的,抛砖引玉,请问这个是什么工具啊?
    seabornlee
        64
    seabornlee  
    OP
       2016-01-01 21:02:40 +08:00
    @loading 以前用 zsh 的,现在用 fish 了。
    seabornlee
        65
    seabornlee  
    OP
       2016-01-01 21:04:37 +08:00
    @aheadlead 挺有趣的。
    armysheng
        66
    armysheng  
       2016-01-01 21:05:08 +08:00
    @azuginnen 大师又来安利了,看来猪厂学到了不少啊。
    seabornlee
        67
    seabornlee  
    OP
       2016-01-01 21:05:11 +08:00
    @lxy42 Alias 也是一种方法。
    seabornlee
        68
    seabornlee  
    OP
       2016-01-01 21:06:26 +08:00
    @Andiry 我尽量避免多窗口,多 Tab ,多应用...因为每次切换的成本太高,很难一次找到自己想要的。请教你有什么好的解决办法吗?
    seabornlee
        69
    seabornlee  
    OP
       2016-01-01 21:07:44 +08:00
    @aec4d 多接触的很多传统企业的程序员用命令行的不多哦。
    seabornlee
        70
    seabornlee  
    OP
       2016-01-01 21:08:54 +08:00
    @tokki 我是去年才知道的。您知道就知道了,我只是分享给不知道的人而已,也希望您多分享一些好用的工具。
    seabornlee
        71
    seabornlee  
    OP
       2016-01-01 21:20:29 +08:00   ❤️ 2
    ```
    pushd&popd
    fzf
    fasd
    battery included
    ```
    谢谢推荐工具的朋友们!回头我研究一下。
    个人认为社区就是要鼓励积极分享,那些讽刺的朋友我都点开看了,好多一个主题帖都没有...
    如果分享的东西对你没用你不要看就好了,世界上信息量这么大,不是什么都对你有用的。而我分享的东西,总会对一些人有用。
    那些谩骂与讽刺的同学我都一一发送了感谢。还请你们千万不要来我的社区!
    springz
        72
    springz  
       2016-01-01 21:27:36 +08:00
    @azuginnen 这是啥
    ferock
        73
    ferock  
       2016-01-01 21:32:48 +08:00
    zsh 好东西
    TJT
        74
    TJT  
       2016-01-01 21:34:37 +08:00 via Android
    从来不觉得按 tab 有多麻烦,常用路径设置成环境变量。
    pushd 和 popd 很好用~ 不过频繁切换还不如开多几个窗口。
    就像当初自己在 Windows 了弄了一堆插件和主题,最后还是回归简洁一样。
    seabornlee
        75
    seabornlee  
    OP
       2016-01-01 21:43:54 +08:00
    @TJT 我在 浏览器, iTerm 里都习惯保持在 4 个 Tab 以内,这样就可以用 CMD + number 进行切换。常常见到很多人开几十个 Tab ,切换的时候要找很久。我发现这样做的原因通常是「打开成本太高」,所以我会用各种手段降低打开成本。用完立刻销毁。
    mcfog
        76
    mcfog  
       2016-01-01 21:46:41 +08:00   ❤️ 1
    这种帖子下面难道不应该是大家各自贴各自的 dotfiles 么?

    https://github.com/mcfog/dotfiles-fish

    改用 fish 一个多月,感觉良好
    seabornlee
        77
    seabornlee  
    OP
       2016-01-01 21:57:34 +08:00
    @s12j 并无贬低之意。只是想帮一些同学纠正 「 shell 是落后的」这种观念。
    tabris17
        78
    tabris17  
       2016-01-01 21:59:36 +08:00
    好吧,又是个命令
    xianglifei
        79
    xianglifei  
       2016-01-01 22:06:10 +08:00
    点赞。评论区收获不少。
    TJT
        80
    TJT  
       2016-01-01 22:18:16 +08:00 via Android
    @seabornlee 我之前也是这么干的,是挺方便的。但是忙的时候 4 5 个 tab 根本不够用,所以用上了 Vimium ,然后就变成习惯了。

    说到底只是工具而已,主要目的是大部分人适用和提高工作效率。
    seabornlee
        81
    seabornlee  
    OP
       2016-01-01 22:43:40 +08:00
    @TJT 我马上发一篇,再讨论 : )
    imdoge
        82
    imdoge  
       2016-01-01 22:44:55 +08:00
    @meunicorn win 下我弄好几个 cmd ,然后分别修改起始位置为那几个常用目录的路径(也就 4,5 个),是不是很蠢!可是我觉得很方便诶~
    seabornlee
        83
    seabornlee  
    OP
       2016-01-01 22:47:00 +08:00
    @imdoge 方便了就行了,结果最重要。
    ffffwh
        84
    ffffwh  
       2016-01-01 23:41:23 +08:00   ❤️ 1
    gui/cli 各有好处,结合就更好了,比方说 spotlight 搜索式的 cd 、方向键导航的 cd
    Tetsuchou
        85
    Tetsuchou  
       2016-01-01 23:57:53 +08:00   ❤️ 1
    嘛,我觉得任何一个工具,要是学习成本太高,都会被其他易用性更好的同类产品替代掉。总之什么时候 cli 好用就用 cli , gui 好用就用 gui 咯
    seabornlee
        86
    seabornlee  
    OP
       2016-01-02 08:21:45 +08:00
    @azuginnen 谢谢!我记下来了,回头再写一篇分享给更多人。
    seabornlee
        87
    seabornlee  
    OP
       2016-01-02 08:22:25 +08:00
    @Tetsuchou 工具都是手段,只要自己的目的达到了就成。
    Devin
        88
    Devin  
       2016-01-02 08:58:27 +08:00 via iPhone
    @azuginnen 请问这种动图怎么弄的?
    seabornlee
        89
    seabornlee  
    OP
       2016-01-02 09:04:17 +08:00   ❤️ 1
    @Devin 不知道他用的什么,我用的是 LICEapp 。
    azuginnen
        90
    azuginnen  
       2016-01-02 10:42:45 +08:00 via Android
    @Devin 就是楼上这个
    likebeta
        91
    likebeta  
       2016-01-02 14:50:39 +08:00
    敲 cd 命令会成为工作的瓶颈么
    hualuogeng
        92
    hualuogeng  
       2016-01-05 10:47:44 +08:00   ❤️ 1
    @imdoge 推荐试试 cmder
    clino
        93
    clino  
       2016-01-12 13:03:28 +08:00
    装了几天这个 autojump 觉得并没有什么 luan 用...
    chen2019
        94
    chen2019  
       2019-08-15 15:24:07 +08:00
    @hualuogeng cmder 也可以设置提示吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1083 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:52 · PVG 03:52 · LAX 11:52 · JFK 14:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.