조희대의 개인사이트
Anything personal, something useful
태그:

리눅스 셸에서 디렉토리에 별명 지어주기

워낙 오래 전에 복사해 온 코드라서 출처를 찾지도 못 하겠지만 그 가치를 재발견해서 여기에 기록으로 남긴다. 대부분 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로 개명을 해줬다.

비슷한 명령으로는 pushdpopd가 있지만 별명을 지어 주지도 않고 무작위로 이동이 불가능하다. 스택 구조로 최근 디렉토리로 먼저 돌아가고 한 번 돌아가면 기억에서 지워진다.

이 칸을 비워 두세요.