Linux cd 후 ls 하기 .bashrc(.zshrc) function 작성

터미널에서 change directory(cd)를 한 후 ls를 사용하는 일이 많습니다.

이게 자동으로 되려면 어떻게 해야 할까요?

alias론 되지 않습니다.

예를 들어 터미널에서

cd directory;ls

를 하면 잘 작동한다고 이런 alias를 넣으면?

alias c="cd $1;ls"

‘c directory’ 명령에 이동은 하지 않고 목록만 잘 출력됩니다.

하지만 function을 이용하면 가능합니다.

bash shell을 사용한다면 ~/.bashrc에, zsh을 사용한다면 ~/.zshrc에 function을 넣어 영구 적용해봅시다.

sudo vim .zshrc (zsh 사용 시)

.bashrc(.zshrc) 파일을 열어 새 줄을 추가합니다.

function c {
  cd $1
  ls
}

끝입니다. 터미널을 껐다 켜보면 ‘c directory’ 명령으로 이동 시 ls 명령도 같이 수행되는 것을 볼 수 있습니다.

안된다면 c와 { 사이에 공백이 없는지 확인하세요. 여기의 공백은 기호가 아닌 필수입니다.

혹시 $1이 무엇인지 모르셔도 눈치채셨을 겁니다. 변수죠. 첫 번째 매개변수라는 소리입니다.

자 그럼 넘어가서, 혹시 function 구문을 한 줄로 만들고 싶어서 이렇게 하면 어떻게 될까요?

function c {cd $1;ls;}

터미널을 재시작하면 친절하게도 .bashrc나 .zshrc에 오류가 있다고 알려줄 겁니다.

그럼 방법이 없느냐? 아닙니다.

위 function 구문을 이렇게 바꿀 수 있습니다.

c() {
  cd $1
  ls
}

이름 뒤에 ()가 붙으니 C 문법 같죠. 이 경우 ()와 { 사이에 공백은 필수가 아닌 기호입니다.

그리고 이 구문은 다음처럼 한 줄로도 작성 가능합니다.

c(){cd $1;ls;}

()와 { 사이에 공백을 넣는 게 예쁘다면 넣어도 됩니다.

매우 짧아 실수할 일이 없겠지만 한마디 더 하자면 각 명령(cd, ls)이 끝날 때 세미콜론(;)을 넣어주어야 합니다.

마지막 명령까지 빼먹지 않고 말이죠.

이제 ‘c directory’ 명령을 수행하면 이동하는 디렉터리 안의 파일 목록이 자동 출력되며 이동하게 됩니다.

SW Level Up

mail@swlevelup.com

You may also like...

답글 남기기

이메일 주소를 발행하지 않을 것입니다.