리눅스에서 원하는 경로로 이동하기 위해서는 /이나 /home 부터 cd를 연타하게 되는데 만약 이런 패턴을 반복적으로 겪는다면 시간 낭비니까 바로가기를 만들어 두면 좋다.
리눅스에서 바로가기를 만들 수 있는 게 심볼릭 링크를 만드는 ln 명령어다.
예를 들어
[root@localhost test5]# pwd
/root/tmp/test/test2/test3/test4/test5
이런 식으로 깊숙이 있는 test5 디렉터리에 자주 간다면 /root 디렉터리에 test5 로 바로 갈 수 있는 심볼릭 링크를 생성하면 된다.
[root@localhost ~]# ln -s /root/tmp/test/test2/test3/test4/test5/ path_test5
ln -s [실제 경로] [심볼릭링크 이름]
그럼 이렇게 링크 파일이 생성되는데 해당 경로로 이동해보면
[root@localhost ~]# cd path_test5/
[root@localhost path_test5]# pwd
/root/path_test5
[root@localhost path_test5]# ls
file1 file2 file3
실제 test5 디렉터리에 있는 파일들이 확인되는 걸 볼 수 있다. 당연한 거지만 test5 디렉터리에 변경사항이 있으면 이 링크로 타고 들어가도 모두 반영된다.
특히 마음에 드는 것이 뭐냐하면 이렇게 진입한 경로에서 cd ..로 상위 디렉터리로 빠져나오면 test4가 아닌 심볼링 링크를 타고 들어간 위치인 /root 로 이동한다. 그래서 빠져나올 때도 번거로움이 없다.
심볼릭 링크 삭제 시 주의사항
생성한 심볼릭 링크를 삭제할 땐
[root@localhost ~]# rm path_test5
rm: remove symbolic link ‘path_test5’? y
이런식으로 rm으로 삭제하면 된다. 실제 경로에는 영향이 없다.
이때 반드시 주의해야할 게 있는데
[root@localhost ~]# rm -rf path_test5/
이런 식으로 -rf 옵션을 쓰면서 끝에 /를 붙여서 잘못 지우면 바로 재앙이다.
왜냐하면 이건 path_test5 인 심볼릭 링크 파일을 지우겠다는 게 아니라 path_test5/ 경로 밑으로 있는 파일들을 지우겠다는 의미라서 path_test5 에 있던 파일을 모조리 지워버린다.
이거 tab으로 자동완성 쓰다보면 충분히 나올 수 있는 실수라서 각별히 주의해야 된다.
물론
[root@localhost ~]# rm -rf path_test5
이런식으로 지우면야 문제가 없지만 끝에 / 하나 붙는 순간 전혀 다른 명령어가 되기 때문에 그냥 심볼릭 링크 지울 때는 무조건 옵션없이 쓴다고 외우자.
적어도 rm 으로 지우면 실수로 심볼릭 링크 파일 끝에 /를 붙이더라도
[root@localhost ~]# rm path_test5/
rm: cannot remove ‘path_test5/’: Is a directory
이런 식으로 이건 디렉터리가 아닌데? 하면서 알려준다. 이렇게 한번 살려줬는데 여기서 눈치없이 rm -rf 쓰는 악수를 두어선 안 된다.