macOS를 사용하면서 터미널에서 제가 많이 사용하는 명령어가 있습니다. 하지만, 다른 개발자분들과 얘기하다보면 생각보다 모르는 분들이 많은 것같아 간단하게 소개시켜 드릴려고 합니다. 제가 소개 시켜드릴려는 명령어는 pbcopy
, pbpaste
, rsnyc
입니다. pbcopy
, pbpaste
는 맥에서만 제공되어지는 기능이고, rsync
는 리눅스에서 제공되는 기능으로 맥에도 기본으로 제공하고 있습니다. 지금부터 차근차근 알아보도록 하겠습니다.
우선 명령어만 보셔도 바로 기능이 무엇인지 아실것 같지 않으시나요? 맞습니다. pbcopy
는 클립보드에 복사해 오는 것이고, pbpaste
는 클리보드에 있는 내용을 붙여넣기하는 기능입니다.
pbcopy
cat logs.log | pbcopy
위와 같은 명령어는 logs.log
라는 파일의 내용을 모두 클립보드에 복사하라는 의미로 사용하실 수 있습니다. iTerm과 같은 프로그램에서 그냥 드래그하셔서 복사하실 수 있지 않나라고 생각하실 수도 있지만, 저와 같은 경우엔 vim
으로 사용하고 있을 경우 set nu
로 설정하여 줄넘버를 표시하도록 사용하고 있습니다. 이 경우 복사하고 붙여넣었을 때 줄넘버도 같이 복사해서 결국은 다시 코드를 포맷팅 해야하는 귀찮은 작업을 하곤 했습니다. 하지만 pbcopy
와 같은 명령어를 사용할 경우 바로 붙여 넣을 수도 있습니다. 뿐만아니라 터미널에서 작업한 내용을 GUI환경에서 붙여 넣을 때 동안 사용할 수 있기 때문에 알고 있으면 굉장히 편합니다.
pbpaste
pbpaste | test.txt
위와 같은 명령어는 클립보드에 있는 내용으로 test.txt
파일을 생성하라는 명령어입니다. 즉, 코드를 복사하거나 기본 파일을 만들 때, 클립보드에 있는 내용을 기반으로 vim
과 같은 텍스트 편집기를 열지 않고 바로 생성할 수 있습니다.
pbpaste | grep "바보"
또 위와 같은 명령어는 클립보드에 있는 내용에서 바보라는 내용이 있으면 출력해 달라는 구문으로 클립보드 내에서 간단하게 검색도 가능합니다.
이처럼 생각보다 pbcopy
와 pbpaste
는 간단하지만 활용할수록 무궁무진한 응용성과 빠른 편의성을 제공합니다.
rsync
rsync
는 기본적으로 리눅스에서도 사용되어지는 명령어인데요. 특정 폴더를 다른 폴더내에 똑같이 동기화 시켜주는 역할을 해주는 명령어라 생각하시면 됩니다.
rsync -ruv --progress /path/important /home
위와 같은 명령어는 /path/important
의 디렉토리 내에 있는 파일을 /home/important
에 똑같이 파일을 동기화하라는 명령어입니다. 여기서 문제는 위와 같은 명령어는 생성한 파일들에 대해서는 동기화를 해주지만 /path/important
에 있는 파일이 삭제될 경우에는 동기화하지 않아 /home/important
에는 존재합니다. 물론 모든 파일들을 보존하는 차원에서는 위와 같은 명령어를 사용하시면 되지만, 완전히 똑같이 동기화하고 싶은 경우에는 다음과 같은 명령어를 추가해주면 됩니다.
rsnyc -ruv --delete /path/important /home
위와 같이 --delete
를 추가하면 두 디렉토리를 똑같이 동기화할 수 있습니다. 이처럼 같은 로컬 내에서 폴더를 동기화를 하는 방법에 대해서 알아보았지만 원격에 있는 서버에 동기화하고 싶은 경우는 안되는걸까요? 다행히도 원격에도 동기화가 가능합니다.
rsync -ruv --delete /path/important root@<remote_address>:/home
위와 같이 ssh
에 접속하듯이 명명을 해주면 원격에 있는 서버와 동기화도 가능합니다. 단, 원격 서버가 ssh
포트에 대한 접근이 허용되어 있어야 가능합니다.
마무리
세 개의 명령어에 대해서 알아보았습니다. 생각보다 간단한 기능이면서 강력한 편의성을 제공해주는 명령어지만 macOS에서 기본으로 제공하는지 모르는 분들이 많습니다. 제 글을 통해서 기본 기능에 대해서 알고 무궁무진하게 활용할 수 있으시면 좋겠습니다.