Linux / Bash 下除了在 .profile 中使用 alias,还有什么其他可以方便快速跳转目录的方式? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Livid
56.4D
450.71D
V2EX    Linux

Linux / Bash 下除了在 .profile 中使用 alias,还有什么其他可以方便快速跳转目录的方式?

  •  
  •   Livid
    PRO
    2019-05-07 13:34:34 +08:00 11009 次点击
    这是一个创建于 2349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直在用下面这样的方式在 .profile 中定义一些 alias,可以用于快速跳转到一些经常会用到的目录。

    alias p='cd /Users/user/Documents/Projects/example' 

    很好奇还没有其他也很方便的方式?

    73 条回复    2019-05-10 02:58:08 +08:00
    Mithril
        1
    Mithril  
       2019-05-07 13:37:04 +08:00   8
    你可以试试 autojump
    https://github.com/wting/autojump
    reus
        2
    reus  
       2019-05-07 13:37:23 +08:00
    cd -

    pushd

    autojump
    alexfu
        3
    alexfu  
       2019-05-07 13:37:50 +08:00
    div class="reply_content">zsh 里的 z
    LokiSharp
        4
    LokiSharp  
       2019-05-07 13:41:05 +08:00
    zsh+oh-my-zsh+autojump
    Luckyray
        5
    Luckyray  
       2019-05-07 13:42:22 +08:00 via iPhone
    zsh 的 z 命令
    okampfer
        6
    okampfer  
       2019-05-07 13:43:17 +08:00 via Android
    试试 z 吧,oh-my-zsh 和 oh-my-fish 都有插件。
    xiaket
        7
    xiaket  
       2019-05-07 13:46:00 +08:00
    纯 bash 的解决方案, 设置 CDPATH
    est
        8
    est  
       2019-05-07 13:49:56 +08:00
    ln -s /Users/user/Documents/Projects/example ~/1
    cd ~/1
    MeteorCat
        9
    MeteorCat  
       2019-05-07 13:54:09 +08:00 via Android
    autojump+1
    tomychen
        10
    tomychen  
       2019-05-07 13:56:19 +08:00
    z ?
    lampxiongdi
        11
    lampxiongdi  
       2019-05-07 13:58:07 +08:00 via iPhone
    z 值得拥有
    lanjz
        12
    lanjz  
       2019-05-07 14:00:02 +08:00   1
    Rsl
        13
    Rsl  
       2019-05-07 14:09:17 +08:00
    autojump + 1
    lycbug666
        14
    lycbug666  
       2019-05-07 14:18:27 +08:00
    z/autojump 跳转目录很方便,autojump 可以为目录设置权重
    fasd 可以快速跳转 /模糊查找 /操作文件
    fasd 提供了 -e 参数可以指定使用什么编辑器操作选定的路径
    例如设置 ’ alias v='f -e vim', 就可以使用 v zsh 直接编辑 ~/.zsh 文件
    xlsepiphone
        15
    xlsepiphone  
       2019-05-07 14:22:27 +08:00
    借楼问一下 mac 下面的 fish shell 有类似的命令行工具吗
    pp3182429
        16
    pp3182429  
       2019-05-07 14:27:57 +08:00
    我一般软连接

    ```sh
    > ln -s /Users/user/Documents/Projects/example ~/example-works

    > cd ~/ex<tab>
    ```
    quinoa42
        17
    quinoa42  
       2019-05-07 14:28:33 +08:00 via Android
    fzf
    cd **
    qgy18
        18
    qgy18  
       2019-05-07 14:28:47 +08:00
    oh my zsh 中的 j 命令,背后是 autojump 这个 plugin
    lonelygo
        19
    lonelygo  
       2019-05-07 14:30:42 +08:00
    z 和 j 都用,再来个 fzf 还是很爽的。
    CSM
        20
    CSM  
       2019-05-07 14:30:46 +08:00 via Android
    我一般是手动跳转一次,以后再输入 cd /U 这样开头的几个就会有提示
    orzjerry
        21
    orzjerry  
       2019-05-07 14:42:58 +08:00
    autojump + 1
    myth
        22
    myth  
    PRO
       2019-05-07 14:49:22 +08:00
    用 screen,常用的目录一直开着对应的 windows (title 自动设置成目录名)
    想去哪个目录,快捷键跳到对应的 windows 就好。
    cuminflea
        23
    cuminflea  
       2019-05-07 14:53:57 +08:00
    一站式解决方案:

    https://github.com/b4b4r07/enhancd
    Cooky
        24
    Cooky  
       2019-05-07 14:54:52 +08:00 via Android
    按住左 shift,右键“ 在此处打开 Linux shell ”
    kevinroot
        25
    kevinroot  
       2019-05-07 14:55:31 +08:00
    autojump + 1, j 目录名
    iceiceice
        26
    iceiceice  
       2019-05-07 14:57:35 +08:00
    autojump +1
    mcfog
        27
    mcfog  
       2019-05-07 15:09:08 +08:00
    @xlsepiphone 可以参(抄)考下我的 https://github.com/mcfog/dotfiles-fish, 纯 fasd 可以用最老的这个 https://github.com/mcfog/dotfiles-fish/blob/3eefb2c37a70e08062252328638714b36b38691e/custom/fasd.fish, 但强烈建议整合 fzf 用,就是这个 https://github.com/mcfog/dotfiles-fish/blob/master/functions/j.fish

    另外这几个 autojump j z fasd 都是老古董了,新一点的有个 rust 的 autojump-rs 和一个作者好像在本站的 z.lua
    lululau
        28
    lululau  
       2019-05-07 15:12:13 +08:00
    我用的 autojump + fzf 和自定义的一些 zle widget

    可以实现这些目录跳转方式:

    1. alt-a -> cd .. | alt-p -> cd $OLD_PWD | alt-P -> project root dir
    2. alt-c -> recursive subdirectories tree using fzf
    3. alt-C -> non-recursive subdirectories list using fzf
    4. alt-j -> autojump historical dir list using fzf
    5. SPC-d-d -> cd ~/Downloads
    6. SPC-d-m -> cd ~/Movies
    7. SPC-d-c -> cd ~/.config
    ... ...
    lc4t
        29
    lc4t  
       2019-05-07 15:32:32 +08:00
    一直使用 autojump,然后其他命令会用一个 shell 来调用,相当于一个控制台
    mcfog
        30
    mcfog  
       2019-05-07 15:34:04 +08:00
    @Livid

    fzf 配合简单的文本文件就能实现非常流畅“书签收藏”功能,和大家讲的基于历史的 autojump 系列不一样,完全自己控制, 灵感来自这个 https://dmitryfrank.com/articles/shell_shortcuts,后来我自己移植(重写)了 fish 的,直接在指定目录下 fav <别名> 收藏,favdel 取消收藏,jf <query>跳转,然后绑定一下 jf,幸福指数特别高

    https://github.com/mcfog/dotfiles-fish/commit/98ac3048296f7523ffec4fdadae45a8f440b0efe
    wednesdayco
        31
    wednesdayco  
       2019-05-07 15:45:29 +08:00
    zsh

    plugins=(
    git
    zsh-autosuggestions
    autojump
    )
    3CH0
        32
    3CH0  
       2019-05-07 15:46:51 +08:00
    yulewg
        33
    yulewg  
       2019-05-07 15:47:47 +08:00
    我一直用 zsh 的 wd
    L3au
        34
    L3au  
       2019-05-07 15:54:33 +08:00
    oh-my-zsh

    z [regex1 regex2...] 跳转到最近最匹配的目录

    d 命令展示最近访问的目录,再通过数字跳转
    yzlnew
        35
    yzlnew  
       2019-05-07 17:06:22 +08:00 via Android
    虽然 z.lua 很快,但是还是习惯 autojump 了
    mr2xd
        36
    mr2xd  
       2019-05-07 17:10:20 +08:00
    服务器装 ohmyzsh 有没有什么风险
    CivAx
        37
    CivAx  
       2019-05-07 17:21:43 +08:00
    实际上如果你的目录真的很常用,那么你一定至少在 1000 行 History 里输入过至少 1 次完整路径

    那么问题就已经解决了。Ctrl+R 打开搜索,敲入关键字就能补全你的 CD 命令,回车完事

    完全不需要任何调配和额外软件
    ingin
        38
    ingin  
       2019-05-07 17:25:38 +08:00
    人家都说了 bash !!!
    Mithrandir
        39
    Mithrandir  
       2019-05-07 17:31:09 +08:00
    z
    alkene
        40
    alkene  
       2019-05-07 18:26:09 +08:00
    charles2java
        41
    charles2java  
       2019-05-07 18:28:54 +08:00 via Android
    一个 source cdDir.sh 即可,不需要安装其他
    kevinhwang
        42
    kevinhwang  
       2019-05-07 19:41:54 +08:00
    [z.lua]( https://github.com/skywind3000/z.lua ),支持 bash,支持常用目录跳转,支持快捷键,配合 fzf 使用。
    lihnzx
        43
    lihnzx  
       2019-05-07 19:59:06 +08:00
    @pp3182429 好方法, 当时我改文件名也用的这个方法
    ynyounuo
        44
    ynyounuo  
       2019-05-07 20:06:10 +08:00
    推荐 z.lua ,好处在于作者在意产品的速度和表现,并且持续维护并增加一些新的功能。虽然很多功能比较 niche,但可以稳定改善切换目录的习惯,比如说 `-b`。
    RaymondYip
        45
    RaymondYip  
       2019-05-07 21:20:51 +08:00
    autojump +1
    huxiaohaiyang
        46
    huxiaohaiyang  
       2019-05-07 21:42:47 +08:00
    iTerm2->Profiles-> add one
    ifaii
        47
    ifaii  
       2019-05-07 21:51:47 +08:00
    ctrl+r
    反向搜索 特别好用
    itechify
        48
    itechify  
    PRO
       2019-05-07 22:21:14 +08:00 via Android
    zsh/oh-my-zsh/autojump,谁用谁知道
    tinywhale
        49
    tinywhale  
       2019-05-07 22:26:39 +08:00
    一个 script 搞定 https://github.com/rupa/z
    Kobayashi
        50
    Kobayashi  
       2019-05-07 22:47:02 +08:00   1
    autojump 又慢( Python 性能问题)功能又差(通过 cd 命令次数计算使用频率),为什么不用点好的?

    速度快选 zsh-z, z-lua。功能强选 fasd。这几位速度都比 autojump 好,而且基于目录下执行命令的次数做使用频率统计,比 autojump 好很多。

    方案二是做书签,跳到书签后根据情况再用 cd 跳。ZSH 插件 urbainvaes/fzf-marks 专门来干这个的。

    方案三,配合 TUI 文件管理器,利用文件管理内置书签功能,跳转。配置为退出文件管理器切换目录即可。参考 ranger 和 vifm。

    从问题来看,说的是 Bash,恐怕只能方案三。

    参考链接:

    1. autojump, z, z.lua, fasd 实现方案和速度对比,https://sjc.v2ex.com/t/528858

    2. fuzzy finder 做书签,https://github.com/urbainvaes/fzf-marks

    3. ranger 退出文件管理器自动切换路径,https://github.com/ranger/ranger/blob/master/examples/bash_automatic_cd.sh

    4. vifm 退出文件管理器自动切换路径,https://wiki.vifm.info/index.php/How_to_set_Vifm_current_directory_after_leaving_sub-shell
    Oneneuuu
        51
    Oneneuuu  
       2019-05-07 23:02:58 +08:00
    习惯 ctrl +r & zsh-autosuggestions
    yim7
        52
    yim7  
       2019-05-07 23:09:42 +08:00
    实用方式 z
    还有简单的 pushd popd
    Tink
        53
    Tink  
    PRO
       2019-05-07 23:10:29 +08:00
    z
    cuminflea
        54
    cuminflea  
       2019-05-07 23:24:48 +08:00 via iPad
    https://jeoygin.org/2018/01/20/customize-macOS-5/
    这篇文章里梳理了一下类似的东东
    vHypnos
        55
    vHypnos  
       2019-05-08 01:47:27 +08:00
    autojump +1
    SharkIng
        56
    SharkIng  
       2019-05-08 01:59:19 +08:00
    autojump 或者 z 我个人更喜欢 autojump 一些

    前往以前去过的 directory 的时候可以 j dir_name 这样直接跳转
    lilpig
        57
    lilpig  
       2019-05-08 07:37:44 +08:00 via Android
    autojump
    ytlm
        58
    ytlm  
       2019-05-08 07:51:34 +08:00 via Android
    autojump + fzf
    zhouzm
        59
    zhouzm  
       2019-05-08 07:53:31 +08:00
    jianzong
        60
    jianzong  
       2019-05-08 11:43:26 +08:00
    因为不喜欢工具上的依赖,所以一直避免使用 zsh 和 第三方工具,我的办法是用 alfred 联想到目录之后,拖拽过去 terminal。很好奇有没有其他人也是这么做的。
    SenLief
        61
    SenLief  
       2019-05-08 12:21:56 +08:00 via Android
    z?
    henryhu
        62
    henryhu  
       2019-05-08 12:24:03 +08:00
    IanPeverell
        63
    IanPeverell  
       2019-05-08 12:33:42 +08:00
    .bash_profile 里面定义一些变量,比如 nvm 就是通过 export NVM_DIR="$HOME/.nvm",就可以直接 cd $NVM_DIR 了
    blueswhisper
        64
    blueswhisper  
       2019-05-08 14:50:02 +08:00
    z +1
    NB40B938mff85mtq
        65
    NB40B938mff85mtq  
       2019-05-08 14:57:17 +08:00
    我觉得软链和别名就挺方便啊.....(手动狗头
    dodo2012
        66
    dodo2012  
       2019-05-08 15:02:06 +08:00
    z,一直在用
    kzzhr
        67
    kzzhr  
       2019-05-08 16:58:17 +08:00 via iPhone
    没有人用 hash -d 么。

    再加 ctrl r 的模糊匹配,感觉还可以
    Lumuy
        68
    Lumuy  
       2019-05-08 18:27:03 +08:00 via Android
    z,很智能
    ngn999
        69
    ngn999  
       2019-05-08 18:29:46 +08:00
    autojump +10086.
    还看到 hacer news 上有讨论一个[z.lua]( https://github.com/skywind3000/z.lua), 没用过,不评价
    MrUser
        70
    MrUser  
       2019-05-08 20:04:36 +08:00
    ech0x
        71
    ech0x  
       2019-05-08 20:05:24 +08:00
    试试 z.lua
    Imr
        72
    Imr  
       2019-05-09 08:24:25 +08:00 via iPhone
    1. 常用目录 ln -s 放常用目录下,比如 ~

    2. alias 挺好用啊,有什么不妥吗
    quinoa42
        73
    quinoa42  
       2019-05-10 02:58:08 +08:00
    c() {
    cd $(fd --absolute-path -L -t d . $1 | fzf)
    }
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     982 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 23:03 PVG 07:03 LAX 16:03 JFK 19:03
    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