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’ 명령을 수행하면 이동하는 디렉터리 안의 파일 목록이 자동 출력되며 이동하게 됩니다.