bash 쉘에서 빠른 디렉토리 탐색


119

예를 들어 완전히 관련이없는 경로에있는 디렉토리 (예 : /Project/Warnest/docs/및) 를 자주 전환하고 싶습니다 ~/Dropbox/Projects/ds/test/.

그러나 나는 cd /[full-path]/항상 타이핑하고 싶지 않습니다 . 이전에 작동 한 디렉토리로 전환하기위한 바로 가기 명령이 있습니까?

내가 생각할 수있는 한 가지 해결책 bash .profile은 자주 사용되는 디렉토리에 대한 환경 변수를 추가 하고 cd해당 변수를 사용하여 환경 변수를 추가 하는 것입니다.

그러나 이것에 대한 다른 해결책이 있습니까?


또한 심볼릭 링크가 유용 할 수 있습니다. en.wikipedia.org/wiki/…
— user606723

답변:


135

두 디렉토리 간을 전환하는 경우 cd -앞뒤로 이동할 수 있습니다 .


13
이것이 얼마나 오랫동안 나를 피했는지는 미스터리입니다. 이 훌륭한 팁에 대해 대단히 감사합니다.
— Mr. Shickadance

3
+1 확실히 내가 좋아하는 것 중 하나이며 많은 전문가가 '누락'한 것입니다.
— Michael Durrant

62

쉘 변수가 CDPATH있는 bash과 ksh와 cdpath인은 zsh:

CDPATH    The search path for the cd command. This is a colon-separated
          list of directories in which the shell looks for destination
          directories specified by the cd command.

~ / .bashrc에서 설정할 수 있습니다.

export CDPATH=/Project/Warnest:~/Dropbox/Projects/ds

다음 cd docs과 cd test최초의 발견과 같은 디렉토리로 이동합니다. (같은 이름을 가진 디렉토리가 현재 디렉토리에 존재하더라도 CDPATH여전히 참조 CDPATH될 것 입니다. 주어진 이름을 가진 서브 디렉토리를 가진 디렉토리가 더 많이 포함 된다면 , 첫 번째 디렉토리가 사용됩니다.)


16
일반적으로 첫 번째 항목을 명시 적으로 입력 $CDPATH해야합니다 .(명시 적으로 항목 :도 작동 함). 그렇지 않으면 CDPATH현재 작업 디렉토리의 디렉토리보다 dirs가 우선 하는 이상한 동작이 생길 수 있습니다.
— jw013

4
나는 거의 똑같은 일을하지만 export. 그렇게하면 CDPATH잠재적으로 이상하거나 유해한 효과가있는 스크립트로 내보내지지 않습니다. 자세한 토론 및 예는 여기 를 참조 하십시오 .
— Telemachus 2019

"bash 및 ksh 및 cdpath in zsh"... 및 tcsh ( 수퍼 유저 에 대한 질문을 기반으로 한 질문에 대답하고 SE에서 비슷한 답변을 찾는 동안 이것을 찾았습니다).
— Hennes

이것은 POSIX 지정이라고 생각합니다. 적어도 POSIX는이를 cd참조합니다.
— mikeserv

48

다른 시도는 autojump 라는 도구 입니다. j기본적으로 별칭에 대한 호출 데이터베이스를 유지하고 가고 싶은 곳을 현명하게 결정하려고 시도합니다. 예를 들어 자주 입력하는 경우 :

j ~/Pictures

다음을 사용하여 핀치 할 수 있습니다.

j Pic

데비안과 우분투에서 사용할 수 있으며 기본적으로 ~/.bashrc또는 사용자별로 포함되어 ~/.zshrc있습니다.


5
Autojump는 아마도 가장 좋은 도구 일 것입니다. 공통 dirs의 데이터베이스를 구축하는 데 약간의 시간이 걸리지 만 일단 그렇게되면 나는 그것이 없으면 살 수 없다는 것을 알게 될 것입니다. 나는 다른 사람의 컴퓨터에있을 때마다 나는 절망감을 느낀다.
— quodlibetor

1
이 도구를 사랑해 주셔서 감사합니다! cd -아직 모르는 경우 알면 편리 하지만 현재 최고 답변보다 훨씬 나은 솔루션이라고 생각합니다.
— 사용자

어떤 시스템에 시스템 전체에 설치 되었습니까?
— ctrl-alt-delor

1
@richard apt-get install autojump시스템 전체 설치 를위한 패키지 (예 : 우분투 에서나 페이지에 문서화되어있는 다른 많은 사람들을 위해)로 제공되지만 각 사용자는이를 쉘 환경에로드해야합니다. 어디로
— 가야

말할 필요도 중요 source /usr/share/autojump/autojump.sh~ / .bashrc에 추가해야합니다 autojump 작동하려면 .
— Pablo A

39

디렉토리 수가 적 으면이를 사용 pushd하여 디렉토리 를 회전 할 수 있습니다.

# starting point
$ pwd
/Project/Warnest/docs
# add second dir and change to it
$ pushd ~/Dropbox/Projects/ds/test
~/Dropbox/Projects/ds/test /Project/Warnest/docs
# prove we're in the right place
$ pwd
~/Dropbox/Projects/ds/test
# swap directories
$ pushd
/Project/Warnest/docs ~/Dropbox/Projects/ds/test

와 달리 cd -, 둘 이상의 디렉토리에 이것을 사용할 수 있습니다


Noach의 제안에 따라, 나는 지금 이것을 사용하고 있습니다 :

function pd()
{
    if [[ $# -ge 1 ]];
    then
        choice="$1"
    else
        dirs -v
        echo -n "? "
        read choice
    fi
    if [[ -n $choice ]];
    then
        declare -i cnum="$choice"
        if [[ $cnum != $choice ]];
        then #choice is not numeric
            choice=$(dirs -v | grep $choice | tail -1 | awk '{print $1}')
            cnum="$choice"
            if [[ -z $choice || $cnum != $choice ]];
            then
                echo "$choice not found"
                return
            fi
        fi
        choice="+$choice"
    fi
    pushd $choice
}

사용법 예 :

# same as pushd +1
$ pd 1

# show a prompt, choose by number
$ pd
 0 ~/Dropbox/Projects/ds/test
 1 /Project/Warnest/docs
 2 /tmp
? 2
/tmp ~/Dropbox/Projects/ds/test /Project/Warnest/docs

# or choose by substring match
$ pd
 0 /tmp
 1 ~/Dropbox/Projects/ds/test
 2 /Project/Warnest/docs
? doc
/Project/Warnest/docs /tmp ~/Dropbox/Projects/ds/test

# substring without prompt
$ pd test
~/Dropbox/Projects/ds/test /Project/Warnest/docs /tmp

분명히 이것은 스택을 통해 회전하기위한 것이며 새로운 경로 추가를 처리하지 않습니다. 어쩌면 이름을 바꿔야 할 수도 있습니다.


6
오, 나는에 대해 알고 pushd및 popd탐색을 위해,하지만 그 PUSHD는 수 회전 ... 지금까지 사용되어 있는지
— Izkata

14

나는 aliasbashrc에서 그 CD를 사용합니다.
같은 :

alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'

bashrc는 .profile과 같은 파일입니까? 그 줄을 추가해야합니까?
— saiy2k

~/.bashrc또는 /etc/bash.bashrc. 나는 .profile이전에 사용하지 않았 으므로 그들 사이의 관계를 모른다 :-(
— Felix Yan

터미널을 열 때마다 bashrc 스크립트가 시작됩니다. 시작 프로필.

내 라인을 추가 .bash_profile하고 잘 작동합니다. thx :)
— saiy2k

정기적으로 이동하는 특정 프로젝트 폴더가 여러 개 있는데,이를 설정하고 유지 관리하는 가장 쉬운 방법입니다. 또한 나를 위해, 여기에 모든 솔루션 중에서 입력 된 문자 수가 절대적으로 가장 적습니다. 키스! :-)
— moodboom 2016 년

11

이 문제를 해결하는 스크립트 (일반적으로 acd_funch.sh)를 찾았습니다. 이를 사용 cd --하여 마지막으로 사용한 10 개의 디렉토리를 볼 수 있습니다 . 다음과 같이 보일 것입니다 :

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

~/Music/thirddir그냥 입력으로 이동cd -2

참고 문헌

참고 : 이 스크립트는 원래 Linux gazette 기사에 게시되어 있습니다. acd_func.sh – bash의 CD를 확장하여 방문한 디렉토리 이름의 기록을 유지, 표시 및 액세스합니다 .


동일한 스크립트가 2004 년 12 월 Linux Gazette, Issue # 109 에도 발표되었다 .
— Sroo Stroobandt 2006 년

@Dean 링크가 뮤직 비디오로 이동하여 Geocities가 종료되었다고 말합니다.
— something 뭔가

1
@somethingSomething 대체 링크를 추가했습니다.
— Dean

역사 | grep cd
— user2180794

10

cdable_varsbash 에서 쉘 옵션을 사용해보십시오 . 로 켭니다 shopt -s cdable_vars.

그런 다음 변수를 설정해야합니다 export dir1=/some/path. 그리고 마지막으로 cd dir1, 등등. 당신은 ~/.bashrc그것을 스틱 만들기 위해 넣을 수 있습니다 .


10

"pushd -n "을 사용하십시오 (bash를 사용한다고 가정).

~ / .bashrc에 추가하십시오.

pushd -n /Project/Warnest/docs/
pushd -n ~/Dropbox/Projects/ds/test/

그때,

cd ~ 당신의 집입니다

cd ~1 이다 ~/Dropbox/Projects/ds/test/

cd ~2 이다 /Project/Warnest/docs/

당신이 사용할 수있는 ~1, ~2완전히 같은 방법으로 등 ~.


7

여기에는 좋은 제안이 많이 있습니다. 사용할 디렉토리는 작은 고정 디렉토리 목록이 있는지 또는 더 일반적인 솔루션을 찾고 있는지에 따라 다릅니다.

작은 고정 목록 인 경우 (Felix Yan이 제안한대로) 간단한 별칭을 설정하는 것이 가장 사용하기 쉽습니다.

보다 일반적인 솔루션 (예 : 시간이 지남에 따라 변화하는 많은 다른 디렉토리)을 찾고 있다면 푸시 및 팝을 사용합니다 (무용지물 제안). 필자는 개인적으로 기본 푸시 / 팝을 사용하기 어려운 것으로 보았습니다. 특히 많은 폴더간에 전환을 시작할 때 특히 그렇습니다. 그러나 나는 그것을 훨씬 쉽게하기 위해 몇 가지 조정을 썼습니다. bashrc에 다음을 추가하십시오.

alias dirs='dirs -v'
pd () 
{ 
    if [ "$1" ]; then
        pushd "${1/#[0-9]*/+$1}";
    else
        pushd;
    fi > /dev/null
}
  • 사용 pd(짧은 형태로 pushd당신은 어디 있었는지 기억, 새 폴더로 이동합니다).
  • dirs저장된 디렉토리 목록을 보는 데 사용 합니다.
  • pd 3디렉토리 번호 3으로 이동하는 데 사용 합니다.

사용법 예 :

$ PS1='\w\$ '   ## just for demo purposes
~$ pd ~/Documents/data
~/Documents/data$ pd ../spec
~/Documents/spec$ pd ~/Dropbox/Public/
~/Dropbox/Public$ pd /tmp
/tmp$ pd /etc/defaults/
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 2
~/Dropbox/Public$ dirs
 0  ~/Dropbox/Public
 1  ~/Documents/spec
 2  ~/Documents/data
 3  ~
 4  /etc/defaults
 5  /tmp
~/Dropbox/Public$ pd 4
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 3
~/Documents/spec$ popd
~/Documents/data ~ /etc/defaults /tmp ~/Dropbox/Public
~/Documents/data$ 

6

다음은 내가 테스트 한 사례에서 작동하는 것으로 보였으며 ~ / Bookmarks에 디렉토리 이름을 심볼릭 링크로 삭제할 수 있습니다.

mkdir "$HOME/Bookmarks"
ln -s /tmp "$HOME/Bookmarks/testdir"

function ccd() { cd $(readlink "$HOME/Bookmarks/$1") ; }

ccd testdir && echo $PWD
# gives /tmp

그 ccd () 함수는 터미널 프롬프트 또는 다른 곳에 입력해야합니까? pls는 설명 할 수 있습니까?
— saiy2k

1
@ saiy2k : 죄송합니다. function라인은 라인 이전의 이름이되고 "testdir에"의 테스트 케이스를 설정, (당신이 그 창을 닫으면이 사라질 것입니다 테스트하기 위해 터미널에 입력 할 수 있지만) 당신의 .bashrc로 전환 /tmp하고, 마지막 줄은 작동하는지 확인하는 테스트입니다.
— Ulrich Schwarz

6

j2를 시도하는 것보다 더 나쁠 수 있습니다.

읽어보기에서 :

복잡한 디렉토리 트리에서 많은 시간을 보내고 있습니까?

j는 현재 위치와 시간을 추적하고 실제로 사용하는 디렉토리로 이동하는 편리한 방법을 제공합니다.

폭넓게 사용하고 추천합니다.


5

디렉토리, 파일 및 대부분의 cli 프로그램에 대한 옵션에 대해 매우 우수한 TAB 완성으로 zsh을 사용 하는 것이 좋습니다.

나는 수년 동안 그 쉘을 사용해 왔으며 기능이 사라지면 놓칠 것입니다. zsh 스크립팅은 또한 매일 도움이 될 수있는 수많은 단일 라이너 로 인해 매우 재미 있습니다.


bash는 모두 동일하므로 TAB 완료를 위해 zsh로 변경할 필요가 없습니다. 다른 기능의 경우이 기능은 사용할 수 없습니다.
— Peer Stritzinger

1
@PeerStritzinger Bash는 BASH 4.0에서 이러한 종류의 기능을 도입했지만 zsh와 비교하면 여전히 훨씬 뒤떨어져 있습니다. "모두 동일"이라고 말하는 것은 확실하지 않습니다.
— polemon

글쎄 zsh는 엄청나게 우버 쉘이지만 탭 완성을 위해서만 변경할 필요가 없다 (질문은 배쉬를 요구했다). 약 3 년 전에 도입 된 bash는 4.0 외에 ...
— Stritzinger 피어

5

내 경험상 쉘 탐색에서 가장 빠른 속도는 기록 검색 기능을 사용하는 것입니다. Bash에서는 Ctrl+ 를 누르고 R패턴을 입력하여 명령 기록에서 뒤로 검색 할 수 있습니다 . 그런 다음이 패턴은 히스토리의 이전 항목 ( cd명령 또는 기타 작업 일 수 있음)과 일치하며 입력시 제안 사항이 작성됩니다. 제안 된 명령을 다시 실행하려면 Enter 키를 누르십시오. 이것은 reverse-search-historyBash에서 호출 되며 나는 그것을 좋아합니다. 그것은 많은 키 입력을 절약하고 내부 메모리를 절약합니다.

두 히스토리 항목 과와 같은 Drop또는 Wa구별하기 위해 명령의 작은 부분 만 기억하면되기 때문에 좋은 방법 입니다.cd ~/Dropbox/Projects/ds/test/cd /Project/Warnest/docs/


5

또한 이러한 별칭을 사용합니다 (~ / .bashrc에 추가).

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

그것들과 함께 상위 디렉토리로 이동하는 것이 훨씬 빠릅니다 (그러나 탐색의 절반 만 해결하십시오).


1
이것들은 유용한 별칭이지만 OP의 요구와 일치하는지 확실하지 않습니다. OP의 문제에 직접 도움이 될 수있는 방법을 제안하기 위해 답변을 확장하는 것을 고려할 수 있습니다.
— HalosGhost

4

zsh를 사용하는 경우 :

  • 을 입력 할 필요없이 cd디렉토리 경로 만 입력 /foo/bar/baz<Enter>하면 cd /foo/bar/baz<Enter>됩니다.

    auto_cd옵션을 설정 해야합니다

  • Tab키를 사용 하여 약식 경로를 확장 할 수 있습니다 ( /u/sh/pi<Tab>확장 /usr/share/pixmaps; 파일 이름에서도 작동)

3
Bash 4는을 얻었 shopt -s autocd으므로 더 이상 zsh 전용이 아닙니다.
— Gilles

4

빠른 디렉토리 변경을위한 멋진 도구가 있습니다.

xd-eXtra 빠른 디렉토리 체인저 http://xd-home.sourceforge.net/xdman.html

조금 어색한 것은 bash 프로파일이나 디렉토리를 출력 하는 것과 비슷하게 매핑해야한다는 것입니다.

# function to do `cd` using `xd`
# -g turns generalized directory search command processing on
# which improves the whole thing a bit
f() 
{
        cd `/usr/bin/xd -g $*`
}

당신은 다음과 같은 일을 할 수 있습니다 :

# change to /var/log/a* (gives you a list to choose from)    
f vla
# to skip the list and go directly to /var/log/apache2
f vlapach

f() { cd "$(xd -g "$@")"; }인수에서 간격이 지정된 디렉토리 및 공백을 올바르게 처리 하도록 기능을 변경하십시오 xd(경로가 필요하지 않을 수도 있음). 당신이 사용하지 않을 경우 xd다른 방법으로, 당신은 양자 택일 할 수있는 xd() { cd "$(command xd -g "$@")"; }(또는 사용 /usr/bin/xd대신에 command xd- 당신은 항상 실행할 수 있습니다 command xd …당신이 그것을 우회해야하는 경우).
— 아담 카츠

4

어쨌든 쉘에 전체 경로를 입력해서는 안됩니다. 당신은 항상 사용할 수 있습니다 :

soffice /P*/W*/*/mydoc*

대신에

soffice /Project/Warnest/docs/mydoc.odt

1
이것은 탭 완성과 비슷하지만 모든면에서 악화됩니다
— Michael Mrozek

Project가 P로 시작하는 파일 일 경우가 아니면 euqal 양의 키 누르기로 탭 완성을 사용 하여이 작업을 수행 할 수 없습니다 . 또한 *를 사용하여 매번 완료를 기다려야합니다. * 기다릴 필요가 없습니다.
— gena2x

나는 당신이 그것을 뒤로하고 있다고 생각 P*합니다-Project가 P로 시작하는 유일한 파일 이 아니라면 할 수 없습니다 . 탭 완성은 순환 할 수 있습니다 (기본적으로 대부분의 쉘 menu-complete에서 탭을 bash 로 리 바인드해야 함 ) 간단한 경우에 즉시 해결됩니다 이런 식으로 기다리지 않아도됩니다
— Michael Mrozek

'당신은 그것을 할 수 없습니다'에 관해서-당신은 그것을 시도 할 수 있습니다, 당신이 할 수 없다고 생각하면 요점을 놓치게됩니다. echo / u * / b * / g ++
— gena2x

1
나는 당신이 의미하는 바를 이해합니다. 명확한 경로를 입력했다고 확신하는 한 더 빠르지 만 /P*/W*/*/mydoc*언젠가 그 glob와 일치하는 다른 파일을 만들 때까지 정상적으로 작동하는 것처럼 들립니다. 둘 다 한 번에 열었습니다. /u*/*/g++은 문자가 거의 없지만, 루트 폴더의 하위 폴더에있는 u이름은로 지정되지 않습니다 g++. (멋진 타협으로, 일부 포탄에서는 탭을 사용하여 갈고리를 제자리로 확장 할 수 있습니다)
— Michael Mrozek

3

또한 OLDPWDIEEE 1003.1 (POSIX)에 따라 작업 디렉토리를 cd변경할 때 마다 이전 작업 디렉토리로 업데이트해야하는 환경 변수 도 있습니다 (호기심있는 디렉토리의 경우 IEEE 1003.1-2008의 2506 페이지 80 행).


3

이것을 위해 특별히 제작 된 "wcd"앱도 있습니다 (cygwin에도 포팅되어 있기 때문에). 바로 가기, dirs의 책갈피를 만들 수 있습니다. 와일드 카드도 지원합니다. / usr / share / wcd에서 매뉴얼 페이지와 문서를 읽으면 많은 도움이 될 것입니다.

http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html


3

cdargs는 디렉토리를 북마크하는 데 가장 효율적인 도구입니다. http://www.youtube.com/watch?v=uWB2FIQlzZg


이 제품이 관련된 제품입니까?
— Kazark

cdargs를 가리켜 주셔서 감사합니다. sudo apt-get cdargs우분투에서 간단하게 . BTW 유튜브 비디오는 정말 나쁘지만 도구는 훌륭합니다.
— DavidG

3

fastcd 시도 ( https://github.com/frazenshtein/fastcd ) 방문한 디렉토리를 bash에서 기록하는 후크를 설정합니다. 스크립트를 "j"별명으로 설정합니다.이 별명은 마지막으로 방문한 디렉토리를 표시하며 빠르게 CD를 입력 할 수 있습니다 (디렉토리를 필터링하기 위해 입력 시작). "j"별명을 작성하려면 .bashrc를 수정해야합니다.

도구 구하기

cd ~; mkdir Soft; cd Soft
git clone https://github.com/frazenshtein/fastcd

필요한 모듈 설치

pip install --user urwid

set.sh 파일을 bashrc에 소싱하십시오.

echo -e "\nsource /home/$USER/Soft/fastcd/set.sh\n" >> ~/.bashrc

그리고 bashrc를 업데이트하십시오.

source ~/.bashrc

그런 다음 콘솔에 "j"를 입력하십시오.


어떻게 작동합니까? 별칭 인 경우 수동으로 편집 할 수없는이 도구의 기능은 .bashrc무엇입니까?
— G-Man

시작된 쉘 (bash)에 대해 방문한 디렉토리를 ~ / .fastcd에 기록하는 데몬을 시작합니다. "j"는 마지막으로 방문한 디렉토리를 보여주는 도구를 시작하고 빠르게 CD를 사용할 수 있습니다. "j"별명을 작성하려면 .bashrc를 수정해야합니다. 당신은 자세한 내용은 소스 코드를 볼 수있는 것 같아요
— 샘 Toliman

빠른 답변 감사합니다. 이것은 답변에 있어야 할 정보입니다. 제발 편집 이 정보를 포함하도록 답변을.
— G-Man

3

나는 같은 질문을했고 처음 에이 대답을 찾았습니다 . 유틸리티 z ( https://github.com/rupa/z )를 설치했습니다 .

z는 cd 명령을 통해 배우고 frecency 원칙 (자주 및 최근) 에 따라 디렉토리를 추적하기 때문에 정확하게 찾는 것입니다 . 따라서 두 cd 명령을 모두 한 번 수행하면 다음과 같은 작업을 수행 할 수 있습니다.

z docs
z ds

로 이동 /Project/Warnest/docs/하고 ~/Dropbox/Projects/ds/test/각각. z에 대한 인수는 정규 표현식이므로 전체 폴더 이름을 입력 할 필요조차 없습니다.



2

나는 내 자신의 유틸리티 사용하고 cdhist을 몇 년 동안이 문제를 관리 할 수 있습니다. cd 명령의 별명을 지정하고 디렉토리 스택을 자동으로 유지합니다.


2

당신이 사용할 수있는 export변수에 대한 디렉토리 경로를 지정하고 다음을 참조합니다.

export dir1=/Project/Warnest/docs/
export dir2= ~/Dropbox/Projects/ds/test/
cd $dir1
cd $dir2

예, 이것은 몇 가지 선호하는 디렉토리에 충분합니다. 다른 유틸리티를 설치할 필요가 없습니다. 에 export명세서를 입력하면 ~/.bashrc언제든지 사용할 수 있습니다.
— wisbucky

1

여기에 몇 가지 제안이 있습니다.

가장 직접적인 아이디어는 .profile 파일에 별칭을 추가하는 것입니다.

vi ~/.profile
alias dir1='cd /myhome/onedir'
alias dir2='cd /jimmy/anotherdir'

그런 다음 사용 $ dir1 하거나 dir2, CD 할 수 있습니다

항상 두 개의 디렉토리에서만 전환하는 경우. 를 사용 cd -하면 둘 사이를 전환합니다.


1

이 상황에서 사용하는 솔루션은 screen입니다. 시작 화면에서 각 디렉토리에 대한 창을 작성 C-a c하고 탐색하십시오. C-a n또는로 창 / 디렉토리를 변경하십시오 C-a p. 로 창 이름을 지정하십시오 C-a A. 그런 다음 창 목록을 팝업 C-a "하고 창 번호 또는 이름을 사용하여 탐색 할 수 있습니다. 이이기 때문에 screen세션에서 분리하여 작업 공간을 절약하고 나중에 동일한 설정으로 다시 연결할 수 있습니다.


1

필요한 것은 기본적으로 워크 플로를위한 프로젝트 파일 인 것 같습니다. 프로그래밍 IDE에서와 같이 활동에 속하는 디렉토리가 있습니다. Zsh Navigation Tools 및 해당 도구를 사용해보십시오 n-cd. 마지막으로 방문한 폴더를 탐색하고 Hotlist원하는 디렉토리를 정의 할 수도 있습니다 .

n-cd

n-cd 다음과 같은 키 조합에 바인딩 할 수 있습니다.

zle -N znt-cd- 위젯

바인드 키 "^ T"znt-cd-widget


1

TL; DR

  1. 를 사용하여 Fish대화 형 쉘 즉시 권한을 부여 ( fish> zsh> bash).
  2. 사용 POSIX/ Bash스크립트에 대한 가장 광범위하게 지원되는 구문입니다 ( POSIX> Bash> Zsh> Fish).

포탄

다른 쉘을 테스트 한 것은 내 피드백입니다 (테스트 / 채택 순서).

  • Bash:
    • 자동 완성 : 기본;
    • 경로 확장 : 아니오;
    • 스크립팅 : 훌륭합니다.
  • Zsh+ oh-my-zsh:
    • 자동 완성 : 양호 (사이클링);
    • 경로 확장 : 예 ( cd /e/x1→ cd /etc/X11/);
    • 스크립팅 : 좋습니다.
  • Fish+ oh-my-fish(현재)가 상자 밖으로 최고입니다.
    • 자동 완성 : 기본 및 지원되는 옵션;
    • 경로 확장 : 예;
    • 스크립팅 : POSIX 호환과의 차이점이 너무 많습니다.

의미있는 별명 사용

모든 쉘은 및를 사용하여 확장 할 수 있습니다. 문제와 관련하여 사용하는 쉘은 다음 function과 alias같습니다 (POSIX 호환).

back () {  # go to previous visited directory
        cd - || exit
}

up () {  # go to parent directory
        cd ..|| exit
}

기본적이지만 실제로 의미가 있으므로 기억하기 쉽고 자동 완성됩니다.

껍질 알기

구성 CDPATH하여 가장 많이 사용 디렉토리 (예 : 추가 ~/projects/, /etc/init.d/) 그래서 당신은 신속하게 이동할 수 있습니다.

자세한 내용은 manatwork answer를CDPATH 참조하십시오 .

행 아웃 및 읽기


쉘 함수가를 호출 exit하면 대화식 쉘을 종료합니다. 그 "의미있는 별명은"단지 수 alias back='cd -'와 alias up='cd ..'-하지만, 그 명령이 false를 반환하지 않습니다 걱정하지 마십시오, 따라서 당신은 출구 않을거야 (더 이전 디렉토리가 당신을 집으로 보내 이미 루트에 그것이 어떤 조합 없다?!?!) . 또한 고려 alias back='cd $OLDPWD'가 모든 출력이되지 않기 때문에 ((작은 따옴표를주의) cd -프롬프트가 정보를 가지고 있기 때문에 가능성이 불필요하다, 당신을 보내는 곳을 알려줍니다)
— 아담 카츠

1

anc디렉토리의 책갈피를 유지하는 cmd 줄 도구 (앵커의 줄임말)입니다. (지금까지는 bash로만 테스트)

귀하의 경우 :

anc a /Project/Warnest/docs/ ~/Dropbox/Projects/ds/test/

이것은 앵커 (책갈피 생각) 목록에 두 디렉토리를 모두 추가합니다

이제 /Project/Warnest/docs/시스템 유형의 어느 곳에서든지 점프하고 싶다면 :

anc Warn

그리고 당신이 ~/Dropbox/Projects/ds/test/입력으로 이동하려면 :

anc ds test

책갈피가 지정된 경로와 텍스트를 일치시키는 것 외에도 anc는 디렉토리를 뛰어 다니는 편리한 방법이 많이 있습니다.

anc i

모든 북마크를 숫자로 나열하는 대화식 모드를 시작하므로 숫자 만 입력하면됩니다.

입력하면 :

anc Pro[TAB]

모든 책갈피와 일치하는 목록 (두 경우 모두 책갈피)이 표시되고 화살표 키를 사용하여 선택할 수 있습니다. 이는 매우 빠르고 직관적 인 방법입니다.

프로젝트의 github 페이지에서 anc를 얻으십시오 : https://github.com/tobimensch/anc

사용 예가 포함 된 README도 있습니다.

전체 공개 : 저는이 스크립트의 저자입니다. 일부 사람들이 유용하다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.