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

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

  •  
  •   plprapper · 2014 年 3 月 2 日 · 9029 次点击
    这是一个创建于 4333 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大多数 应该都是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 年 6 月 26 日
    做了一点补充 除了向后找目录 还可以继续从选择的目录向下继续了。

    >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 年 3 月 2 日   ❤️ 1
    pushd popd
    zealinux
        2
    zealinux  
       2014 年 3 月 2 日
    cd --
    manhere
        3
    manhere  
       2014 年 3 月 2 日
    一般还真没有频繁切换这么深目录的时候
    mongodb
        4
    mongodb  
       2014 年 3 月 2 日
    ccd数字不能忍...
    有很多目录是 2014/02/23/ 这种...
    web日志按小时切分存放的,同样也有2014/02/23/1500 这样的...

    不过想法还是挺好的。
    plprapper
        5
    plprapper  
    OP
       2014 年 3 月 2 日
    @wangkangluo1 用了一下感觉不是很方便。不过确实以前没用过pushd popd
    plprapper
        6
    plprapper  
    OP
       2014 年 3 月 2 日
    @mongodb 我主要是在代码目录切的时候比较多 ,你这个场景还真是没想到,去掉关于数字的判断就好了,或者加个 -N 之类的判断

    主要是有tab提示,用起来舒服多了。
    happy123
        7
    happy123  
       2014 年 3 月 2 日
    zsh+autojump
    humiaozuzu
        8
    humiaozuzu  
       2014 年 3 月 2 日
    1. oh-my-zsh cd ... = cd ../../
    2. brew install z
    alexrezit
        9
    alexrezit  
       2014 年 3 月 2 日
    alias d.="cd .."
    ksc010
        10
    ksc010  
       2014 年 3 月 2 日
    突然想到一个方法,待会写个demo发上来
    zuroc
        11
    zuroc  
       2014 年 3 月 2 日
    google autojump
    Mutoo
        12
    Mutoo  
       2014 年 3 月 2 日
    alias ..="cd .."
    ovear
        13
    ovear  
       2014 年 3 月 2 日
    cd ../

    回车

    回车
    ksc010
        14
    ksc010  
       2014 年 3 月 2 日
    好吧 刚才试了一下不行
    思路是这样的 写个脚本 匹配参数与当前路径 然后做个 调整目录
    但是问题是 这里的跳转并不影响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 年 3 月 2 日 via Android
    我的zsh里,command+u 是去上层目录,很方便
    liliang13
        16
    liliang13  
       2014 年 3 月 2 日
    @ovear 这个很科学
    cbwzwsq
        17
    cbwzwsq  
       2014 年 3 月 2 日
    autojump
    xiaket
        18
    xiaket  
       2014 年 3 月 2 日
    @Mutoo 嗯, 我也是这个思路, 于是:

    alias ..='cd ..'
    alias ...='cd ../..'
    alias ....='cd ../../..'
    est
        19
    est  
       2014 年 3 月 2 日
    @humiaozuzu 遇到一个名字叫 ... 的目录怎么办?
    banbanchs
        20
    banbanchs  
       2014 年 3 月 2 日
    @est cd ./...
    humiaozuzu
        21
    humiaozuzu  
       2014 年 3 月 2 日   ❤️ 1
    @est 好问题,但是这样的异常情况我没遇到过,所以可以忽略吧。。。
    hitsmaxft
        22
    hitsmaxft  
       2014 年 3 月 2 日   ❤️ 1
    cd - <tab>

    用zsh的同学, 你懂的
    ericFork
        23
    ericFork  
       2014 年 3 月 2 日
    autojump
    dirs -v
    humiaozuzu
        24
    humiaozuzu  
       2014 年 3 月 2 日
    ls 居然那么多 autojump 的。。。 表示还是 z 方便简洁
    AWSAM
        25
    AWSAM  
       2014 年 3 月 2 日
    表示用的是z
    rainysia
        26
    rainysia  
       2014 年 3 月 3 日
    常用的就这几个
    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 年 3 月 3 日 via Android
    @est 一个叫..的目录,它本身不就是上级目录么?
    我记得上级目录就叫..,难道还能另外创建这个目录?
    gerorim
        28
    gerorim  
       2014 年 3 月 3 日 via Android
    Shell 记忆命令的功能走起

    再把常用路径用 alias 缩短。
    yangg
        29
    yangg  
       2014 年 3 月 3 日
    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 年 3 月 3 日 via Android
    autojump
    wenLiangcan
        31
    wenLiangcan  
       2014 年 3 月 3 日 via Android
    zsh +1
    9
        32
    9  
       2014 年 3 月 3 日
    @oott123 蛋疼,人家说的是 ... 三个点,就不能看清楚再回么
    args
        33
    args  
       2014 年 3 月 3 日
    "\C-xb": "cd ..^M"
    bash也可以设置快捷键。
    tamamaxox
        34
    tamamaxox  
       2014 年 3 月 3 日
    oh~my~zsh
    merlin852
        35
    merlin852  
       2014 年 3 月 3 日
    常用路径可以加到CDPATH里面,cd可以直接读路径下的目录
    robertlyc
        36
    robertlyc  
       2014 年 3 月 3 日
    惊现张教主
    greenblue007
        37
    greenblue007  
       2014 年 3 月 4 日
    cd ls tab
    dtubest
        38
    dtubest  
       2014 年 3 月 13 日
    高频目录,我都会pwd,粗暴直接
    xixi10111011
        39
    xixi10111011  
       2014 年 6 月 26 日
    alias
    keith3
        40
    keith3  
       2014 年 6 月 26 日
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5513 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1715ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    ♥ Do have faith in what you're doing.