V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
plprapper
V2EX  ›  Linux

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

  •  
  •   plprapper · 2014-03-02 18:17:55 +08:00 · 8021 次点击
    这是一个创建于 3701 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大多数 应该都是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
       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   ·   我们的愿景   ·   实用小工具   ·   1076 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:30 · PVG 07:30 · LAX 16:30 · JFK 19:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.