예를 들어 완전히 관련이없는 경로에있는 디렉토리 (예 : /Project/Warnest/docs/
및) 를 자주 전환하고 싶습니다 ~/Dropbox/Projects/ds/test/
.
그러나 나는 cd /[full-path]/
항상 타이핑하고 싶지 않습니다 . 이전에 작동 한 디렉토리로 전환하기위한 바로 가기 명령이 있습니까?
내가 생각할 수있는 한 가지 해결책 bash
.profile
은 자주 사용되는 디렉토리에 대한 환경 변수를 추가 하고 cd
해당 변수를 사용하여 환경 변수를 추가 하는 것입니다.
그러나 이것에 대한 다른 해결책이 있습니까?
답변
두 디렉토리 간을 전환하는 경우 cd -
앞뒤로 이동할 수 있습니다 .
답변
쉘 변수가 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
될 것 입니다. 주어진 이름을 가진 서브 디렉토리를 가진 디렉토리가 더 많이 포함 된다면 , 첫 번째 디렉토리가 사용됩니다.)
답변
다른 시도는 autojump 라는 도구 입니다. j
기본적으로 별칭에 대한 호출 데이터베이스를 유지하고 가고 싶은 곳을 현명하게 결정하려고 시도합니다. 예를 들어 자주 입력하는 경우 :
j ~/Pictures
다음을 사용하여 핀치 할 수 있습니다.
j Pic
데비안과 우분투에서 사용할 수 있으며 기본적으로 ~/.bashrc
또는 사용자별로 포함되어 ~/.zshrc
있습니다.
답변
디렉토리 수가 적 으면이를 사용 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
분명히 이것은 스택을 통해 회전하기위한 것이며 새로운 경로 추가를 처리하지 않습니다. 어쩌면 이름을 바꿔야 할 수도 있습니다.
답변
나는 alias
bashrc에서 그 CD를 사용합니다.
같은 :
alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'
답변
이 문제를 해결하는 스크립트 (일반적으로 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를 확장하여 방문한 디렉토리 이름의 기록을 유지, 표시 및 액세스합니다 .
답변
cdable_vars
bash 에서 쉘 옵션을 사용해보십시오 . 로 켭니다 shopt -s cdable_vars
.
그런 다음 변수를 설정해야합니다 export dir1=/some/path
. 그리고 마지막으로 cd dir1
, 등등. 당신은 ~/.bashrc
그것을 스틱 만들기 위해 넣을 수 있습니다 .