리눅스 셸에서 디렉토리에 별명 지어주기
워낙 오래 전에 복사해 온 코드라서 출처를 찾지도 못 하겠지만 그 가치를 재발견해서 여기에 기록으로 남긴다. 대부분 GUI에 익숙해져 버린 요즘 이런 짧으면서도 유용한 스크립트를 보면 정말 기분이 상쾌해진다.
to() { cd "`cat ~/.going/${1-_back} || echo .`"; }
here() { pwd > ~/.going/${1-_back}; echo "to ${1} will go to `pwd`"; }
there() { (cd ~/.going; grep -H '' *) |
awk -F: '{printf("%-10s %s\n", $1, $2)}' | grep -i -E ${1-.\*}; }
nowhere() { rm -f ~/.going/${1-_back}; }
위의 코드를 ~/.bash_profile
에 복사해 넣은 후 다시 셸로 로그인하면 된다. 사용법은 간단하다.
cd ~/directory/you/want/to/name # 일단 별명을 지어줄 디렉토리로 이동한다
here name # 이곳의 이름을 name이라 짓는다
cd ~/somewhere/else # 다른 곳으로 이동한다
to name # 다른 작업을 마친 후 name으로 돌아간다
there # 이름 지어진 모든 디렉토리를 나열한다
there name # name의 실제 디렉토리명을 보여준다
nowhere name # name 별명을 지운다
here # 무명의 디렉토리를 지정한다 (다시 덮어써질 수 있다)
to # 무명의 디렉토리로 돌아간다
nowhere # 무명 디렉토리의 별명을 지운다
to
명령의 원래 이름은 go
였으나 Go 컴파일러의 이름과 같아서 to
로 개명을 해줬다.
비슷한 명령으로는 pushd
와 popd
가 있지만 별명을 지어 주지도 않고 무작위로 이동이 불가능하다. 스택 구조로 최근 디렉토리로 먼저 돌아가고 한 번 돌아가면 기억에서 지워진다.