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있는 bashkshcdpath인은 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 docscd 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
오, 나는에 대해 알고 pushdpopd탐색을 위해,하지만 그 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/x1cd /etc/X11/);
    • 스크립팅 : 좋습니다.
  • Fish+ oh-my-fish(현재)가 상자 밖으로 최고입니다.
    • 자동 완성 : 기본 및 지원되는 옵션;
    • 경로 확장 : 예;
    • 스크립팅 : POSIX 호환과의 차이점이 너무 많습니다.

의미있는 별명 사용

모든 쉘은 및를 사용하여 확장 할 수 있습니다. 문제와 관련하여 사용하는 쉘은 다음 functionalias같습니다 (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.