在命令行下,如何更舒服的退到某一层级的目录去。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
plprapper
V2EX    Linux

在命令行下,如何更舒服的退到某一层级的目录去。

  •  
  •   plprapper 2014-03-02 18:17:55 +08:00 8825 次点击
    这是一个创建于 4252 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大多数 应该都是cd ../../../../..................................吧

    git地址 https://github.com/peiliping/shell/blob/master/base/Function.sh

    line num : 109

    ccd和_ccd 在bashrc中 加载 并complete -F _ccd ccd

    使用方法

    ccd + tab 会提示pwd 中的每一级目录

    ccd home 跳到 /home 目录下

    ccd h + tab 提示pwd中 带h的目录名字或者自动补全

    ccd 5 如果参数是数字 则直接向外跳N层目录(这个功能也许有人不喜欢吧,当初这么写是觉得以纯数字命令的目录名字会比较少,呵呵)

    自己用了一段时间感觉还不错。
    第 1 条附言    2014-06-26 17:28:01 +08:00
    做了一点补充 除了向后找目录 还可以继续从选择的目录向下继续了。

    >pwd

    /home/X/dev/git/nbp/src/main/java


    >ccd nbp/readme/sql/insert/


    >pwd

    /home/X/dev/git/nbp/readme/sql/insert/


    大家看看 是不是有这种需求呢
    40 条回复    2014-06-26 22:14:27 +08:00
    wangkangluo1
        1
    wangkangluo1  
       2014-03-02 18:23:37 +08:00   1
    pushd popd
    zealinux
        2
    zealinux  
       2014-03-02 18:30:31 +08:00
    cd --
    manhere
        3
    manhere  
       2014-03-02 18:34:27 +08:00
    一般还真没有频繁切换这么深目录的时候
    mongodb
        4
    mongodb  
       2014-03-02 18:34:45 +08:00
    ccd数字不能忍...
    有很多目录是 2014/02/23/ 这种...
    web日志按小时切分存放的,同样也有2014/02/23/1500 这样的...

    不过想法还是挺好的。
    plprapper
        5
    plprapper  
    OP
       2014-03-02 18:34:48 +08:00
    @wangkangluo1 用了一下感觉不是很方便。不过确实以前没用过pushd popd
    plprapper
        6
    plprapper  
    OP
       span class="ago" title="2014-03-02 18:39:10 +08:00">2014-03-02 18:39:10 +08:00
    @mongodb 我主要是在代码目录切的时候比较多 ,你这个场景还真是没想到,去掉关于数字的判断就好了,或者加个 -N 之类的判断

    主要是有tab提示,用起来舒服多了。
    happy123
        7
    happy123  
       2014-03-02 18:40:44 +08:00
    zsh+autojump
    humiaozuzu
        8
    humiaozuzu  
       2014-03-02 18:48:38 +08:00
    1. oh-my-zsh cd ... = cd ../../
    2. brew install z
    alexrezit
        9
    alexrezit  
       2014-03-02 18:50:05 +08:00
    alias d.="cd .."
    ksc010
        10
    ksc010  
       2014-03-02 19:46:01 +08:00
    突然想到一个方法,待会写个demo发上来
    zuroc
        11
    zuroc  
       2014-03-02 19:47:36 +08:00
    google autojump
    Mutoo
        12
    Mutoo  
       2014-03-02 19:57:45 +08:00
    alias ..="cd .."
    ovear
        13
    ovear  
       2014-03-02 20:04:10 +08:00
    cd ../

    回车

    回车
    ksc010
        14
    ksc010  
       2014-03-02 20:46:51 +08:00
    好吧 刚才试了一下不行
    思路是这样的 写个脚本 匹配参数与当前路径 然后做个 调整目录
    但是问题是 这里的跳转并不影响shell 也就是调用脚本的终端 改变的只是当前进程的cwd
    代码如下
    #!/usr/bin/env python
    import os
    import sys
    pwd=os.getcwd()
    print pwd
    pwds=pwd.split(os.sep)
    print pwds
    path='/'
    if len(sys.argv)>1:
    print sys.argv
    for k in pwds:
    print k
    path=os.path.join(path,k)
    if sys.argv[1] in k:
    break
    print(path)
    os.chdir(path)

    还是 @happy123 zsh+autojump 靠谱
    zhangxiao
        15
    zhangxiao  
       2014-03-02 21:03:59 +08:00 via Android
    我的zsh里,command+u 是去上层目录,很方便
    liliang13
        16
    liliang13  
       2014-03-02 21:36:36 +08:00
    @ovear 这个很科学
    cbwzwsq
        17
    cbwzwsq  
       2014-03-02 21:46:22 +08:00
    autojump
    xiaket
        18
    xiaket  
       2014-03-02 21:52:45 +08:00
    @Mutoo 嗯, 我也是这个思路, 于是:

    alias ..='cd ..'
    alias ...='cd ../..'
    alias ....='cd ../../..'
    est
        19
    est  
       2014-03-02 21:54:57 +08:00
    @humiaozuzu 遇到一个名字叫 ... 的目录怎么办?
    banbanchs
        20
    banbanchs  
       2014-03-02 22:06:26 +08:00
    @est cd ./...
    humiaozuzu
        21
    humiaozuzu  
       2014-03-02 22:13:29 +08:00   1
    @est 好问题,但是这样的异常情况我没遇到过,所以可以忽略吧。。。
    hitsmaxft
        22
    hitsmaxft  
       2014-03-02 22:18:54 +08:00   1
    cd - <tab>

    用zsh的同学, 你懂的
    ericFork
        23
    ericFork  
       2014-03-02 22:32:04 +08:00
    autojump
    dirs -v
    humiaozuzu
        24
    humiaozuzu  
       2014-03-02 22:37:13 +08:00
    ls 居然那么多 autojump 的。。。 表示还是 z 方便简洁
    AWSAM
        25
    AWSAM  
       2014-03-02 23:28:59 +08:00
    表示用的是z
    rainysia
        26
    rainysia  
       2014-03-03 01:48:16 +08:00
    常用的就这几个
    bashrc
    .. = cd ../
    ... = cd ../../
    .... = cd ../../../
    cdr = cd /
    cdw = cd /home/www
    然后是项目的
    cdo = cd /home/www/xxx/....
    已经非常快了
    还有切换用户的
    st = su tom
    sr = su - root
    oott123
        27
    oott123  
       2014-03-03 07:16:42 +08:00 via Android
    @est 一个叫..的目录,它本身不就是上级目录么?
    我记得上级目录就叫..,难道还能另外创建这个目录?
    gerorim
        28
    gerorim  
       2014-03-03 09:23:51 +08:00 via Android
    Shell 记忆命令的功能走起

    再把常用路径用 alias 缩短。
    yangg
        29
    yangg  
       2014-03-03 09:28:18 +08:00
    upto ()
    {
    cd "${PWD/\/$@\/*//$@}"
    }
    _complete_upto() {
    local IFS=$'\n'
    local word=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=($(echo ${PWD#/} | sed 's|/|\n|g' | grep -i "^$word" | sed -e 's| |\\ |g'))
    }
    complete -o nospace -F _complete_upto upto

    /var/www/test/file1/file2 $ upto test
    jsonline
        30
    jsonline  
       2014-03-03 09:34:27 +08:00 via Android
    autojump
    wenLiangcan
        31
    wenLiangcan  
       2014-03-03 10:10:27 +08:00 via Android
    zsh +1
    9
        32
    9  
       2014-03-03 10:16:00 +08:00
    @oott123 蛋疼,人家说的是 ... 三个点,就不能看清楚再回么
    args
        33
    args  
       2014-03-03 10:29:39 +08:00
    "\C-xb": "cd ..^M"
    bash也可以设置快捷键。
    tamamaxox
        34
    tamamaxox  
       2014-03-03 10:43:54 +08:00
    oh~my~zsh
    merlin852
        35
    merlin852  
       2014-03-03 10:44:43 +08:00
    常用路径可以加到CDPATH里面,cd可以直接读路径下的目录
    robertlyc
        36
    robertlyc  
       2014-03-03 11:52:02 +08:00
    惊现张教主
    greenblue007
        37
    greenblue007  
       2014-03-04 06:52:09 +08:00
    cd ls tab
    dtubest
        38
    dtubest  
       2014-03-13 18:22:42 +08:00
    高频目录,我都会pwd,粗暴直接
    xixi10111011
        39
    xixi10111011  
       2014-06-26 18:41:18 +08:00
    alias
    keith3
        40
    keith3  
       2014-06-26 22:14:27 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3011 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 12:47 PVG 20:47 LAX 05:47 JFK 08:47
    Do have faith in what you're doing.
    ubao msn 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