코딩꿀팁
알고 있으면 개발자에게 유익한 유닉스 커맨드 꿀팁
2021. 03. 18

이번 블로그에서는 유닉스 커맨드 꿀팁을 공유드립니다.


개발자라면 GUI 환경이 아닌 CLI 환경에서도 커맨드를 사용해 컴퓨터를 자유롭게 사용하는데 익숙해져야 합니다. 아무리 GUI 환경이 쓰기 편하다고 해도 여전히 CLI로 해결해야 할 종류의 작업들이 많기 때문인데요. 오늘은 커맨드를 사용할 때 알아두면 좋은, 작업 효율성을 UP시켜주는 꿀팁 몇 가지를 알려드리겠습니다.



모르는 커맨드를 써야할 때는? man 커맨드


컴퓨터에서 필요한 작업을 하기 위해 어떤 커맨드를 써야할지 검색하다 보면 익숙하지 않은 커맨드를 만나게 될 때가 많은데요. 이럴 때 그 커맨드로 무슨 일을 할 수 있는지, 함께 쓸 수 있는 인자와 옵션에는 무엇이 있는지를 파악하려면 어떻게 해야할까요? 인터넷 검색 말고 시스템에서 자체 제공하는 공식 메뉴얼을 보는 방법이 있습니다. 그리고 이 메뉴얼에서 세상 그 어디보다도 공식적이고 자세한 설명을 볼 수 있는데요. 바로 이렇게








man [모르는 커맨드 이름]



형식으로 터미널에 쓰고 실행하시면 됩니다. 예를 들어 제가 pwd라는 커맨드에 대해서 알고 싶다고 가정할 때 아래 그림처럼 실행하고


blog image

이런 결과를 보면 되는 거죠.

blog image


이 설명을 보는 게 해당 커맨드에 대해서 가장 빠르고 정확하게 알 수 있는 방법입니다. 물론 영어로 되어 있기는 하지만 하나씩 해석하다 보면 해당 커맨드에 관한 깊이있는 지식을 쌓으실 수 있을 거에요.




내용이 많은 파일을 출력할 때는? less 커맨드


유닉스 시스템에서 어떤 파일의 내용을 출력할 때 우리는 보통






cat [파일 이름]



의 형식으로 커맨드를 실행합니다. 이런 식으로요.


blog image

blog image


그런데 지금 그림에 보이는 것처럼 파일 내용이 많으면 파일 내용의 아랫 부분만 보이고, 윗 부분까지 보려면 마우스 스크롤을 사용해 터미널 화면을 움직여야 하는데요.


이렇게 보면 좀 불편할 때가 있습니다. 바로 이럴 때 cat 대신 less 커맨드를 사용하면 되는데요.







less [파일 이름]




의 형식으로 사용하면 됩니다.


blog image


그럼 아래 보이는 것처럼 파일 내용의 첫 번째부터 출력되고 기존의 터미널 화면과는 다른 별도의 화면이 켜집니다. 그리고 파일 내용을 볼 때 위아래 방향키 입력만으로 편하게 이동하면서 전체 내용을 살펴볼 수 있습니다.


blog image


이 뿐만 아니라 less는 텍스트 검색도 가능합니다. 잠깐 숫자 15가 있는 위치를 찾아볼까요? 그렇게 하려면 슬래시(/)를 누르고 15라고 쓴 후 엔터를 치면 됩니다.


blog image


그럼 아래처럼 해당 키워드가 있는 줄을 첫 번째 줄로 만들어서 찾게 해줍니다.


blog image


이런 점 때문에 파일 내용이 많거나, 내용 중 뭔가 찾아야할 게 있을 때는 cat 커맨드보다는 less 커맨드를 쓰는 게 좋습니다.



파일과 디렉토리를 복사-붙여넣기 할 때 주의해야할 점은?

(1) 디렉토리를 복사할 때는 -r 옵션 잊지않기


우리가 컴퓨터에서 작업을 하다보면 파일을 복사-붙여넣기할 때가 많습니다. 이 때 사용하는 커맨드는 cp(copy의 줄임말) 커맨드로 이런 형식이죠.





cp [원본 파일 이름] [복사본 이름]



하지만 디렉토리를 복사-붙여넣기할 때는 cp 커맨드에 -r 옵션을 줘야합니다. 이렇게 말이죠.




cp -r [원본 디렉토리 이름] [복사본 이름]




-r 옵션을 주지 않고 디렉토리를 복사-붙여넣기하면 오류가 발생하기 때문인데요. 왜 -r 옵션이 필요할까요?

-r은 recursive의 약자로 ‘재귀적인’, ‘반복적인’ 이라는 뜻입니다. 이 옵션이 필요한 이유는 디렉토리는 보통 그 안에 자식 디렉토리들, 파일들을 내용물로 갖고 있고 그 내용물들도 함께 복사해줘야 하기 때문입니다. 그리고 자식 디렉토리들의 경우 또 그 자식 디렉토리의 내용물을 복사해줘야 하는 그러니까, ‘재귀적인 복사', ‘반복적인 복사' 작업을 해줘야하기 때문에 그렇습니다. 물론 보통 -r 옵션을 주지 않아도


아래처럼 -r 옵션을 쓰라고 경고 메시지를 주는 경우도 있지만, (리눅스 배포판 중 하나인 우분투)

blog image



이렇게 딱히 -r 옵션을 쓰라는 메시지없이 경고만 주는 경우도 있기 때문에 (macOS)

blog image



디렉토리를 복사-붙여넣기할 때 -r 옵션을 줘야한다는 사실은 꼭 기억하시는 게 좋습니다.



파일과 디렉토리를 복사-붙여넣기 할 때 주의해야할 점은?

(2) 중요한 파일을 지키려면 -i 옵션 쓰기


파일을 복사-붙여넣기할 때는 유의해야할 점이 있습니다. 그건 바로 복사본의 이름으로 지정한 파일이 이미 존재하고 있을 때의 문제입니다. 이미 doc_2라는 파일이 있고 doc_2에는 중요한 내용이 들어있다고 합시다. 그런데 만약 이 사실을 잊고 그냥 이렇게 쓰고 실행하면





cp doc_1 doc_2




doc_2의 내용을 그대로 doc_1의 내용으로 덮어써버리게 됩니다. 이렇게 되면 큰일날 수도 있겠죠? 그래서 이럴 때는 꼭 -i 옵션을 주어야 합니다. -i 옵션은 interactive의 약자로 상호 작용한다는 뜻인데요. 그러니까 만약 복사본의 이름과 같은 이름의 파일이 존재할 경우에 사용자에게 그 내용을 덮어쓸 것인지 물어보겠다는 뜻입니다. 아래 그림을 보면 -i 옵션을 썼을 때의 모습을 볼 수 있는데요. 지금 doc_2라는 파일이 이미 존재하는 상황에서 cp 커맨드를 사용한 겁니다.


blog image


“overwrite doc_2?” 라는 질문에 대해 no를 나타내는 n을 누르면 “not overwritten”이라는 답변이 출력되면서 복사-붙여넣기가 진행되지 않습니다. 하지만 yes를 나타내는 y를 누르면 아무 출력없이 바로 복사-붙여넣기가 진행되죠.

앞으로 파일을 복사-붙여넣기할 때 혹시 복사본과 같은 이름의 파일이 이미 있는 건 아닌지 걱정되신다면 -i 옵션을 쓰면 되겠죠?



디렉토리를 삭제할 때 주의해야할 점은?-i 옵션 잊지않기


파일이나 디렉토리를 삭제할 때는 rm 커맨드를 쓰는데 이 때도 디렉토리 삭제의 경우에는 cp 커맨드 때처럼 옵션 -r 이 필요합니다. 이렇게 말이죠.





rm -r [삭제할 디렉토리 이름]




그런데 가끔 디렉토리에 중요한 파일이 들어있는 경우가 있습니다. 그런데 그 사실을 잊고 그대로 디렉토리를 삭제하면 안되겠죠? 이럴 때 -i(interactive) 옵션을 쓰면 디렉토리 안에 있는 파일 하나하나를 체크하면서 삭제할 수 있는데요. 아래 그림을 보세요.


Directory_C라는 디렉토리 안에


지워서는 안 되는 중요한 파일인 important_file과,

지워도 되는 not_important_file


2개가 있는데요. 지금 Directory_C 디렉토리를 지우려고 합니다. 이 상태에서 rm 커맨드에 -i 옵션을 주면 일단 디렉토리 내부에 있는 파일 하나하나씩 삭제할 거냐고 물어봐주는데요. 이때 삭제할 파일은 y(yes), 삭제하면 안되는 파일은 n(no)을 입력하면 됩니다. 그럼 원래 지우려고 했던 Directory_C 디렉토리는 important_file이 아직 남아있기 때문에 삭제될 수가 없습니다.

blog image


디렉토리 안에 어떤 것들이 있는지 정확히 아는 경우가 아니라면 -i 옵션을 꼭 사용해주세요.


내가 이때까지 사용한 커맨드들이 궁금할 때는? history 커맨드


터미널에서 이런 저런 커맨드들을 치다보면 가끔 이전에 쳤던 커맨드를 그대로 치거나 거기서 내용만 조금 바꿔서 쳐야할 때가 있는데요. 그런데 이전에 친 커맨드들을 기억하는 건 쉽지 않습니다. 이럴 때는 이때까지 사용한 커맨드 기록을 살펴보면 됩니다. history라는 커맨드를 사용하면 아래 그림처럼 이전에 쳤던 커맨드들의 기록을 볼 수 있습니다.

blog image


만약 이 중에서 그대로 다시 실행하고 싶은 커맨드가 있다면


!실행하고 싶은 커맨드에 붙은 번호


의 형식으로 입력하고 엔터를 누르면 됩니다.


이때까지 유닉스 커맨드를 사용할 때 알아두면 좋은 꿀팁들을 정리해봤는데요. 사실 커맨드로 컴퓨터를 사용한다는 것은 컴퓨터의 더 깊숙한 면까지, 더 자유자재로 다룰 수 있다는 뜻이기도 합니다. 그래서 자신이 하는 작업이 무엇인지 분명히 알고 하는 것이 좋습니다. 그렇지 않으면 시스템에 꼭 필요한 파일을 삭제한다든지와 같은 실수를 하게 될 수도 있으니까요. 위의 꿀팁들을 기억하셔서 CLI 환경에서 안전하고 효율적으로 작업해보세요.

더 많은 내용이 궁금하다면?
[유닉스 커맨드라인] 들어 보세요!
추천글
codeit facebook pagecodeit facebook pagecodeit facebook pagecodeit facebook page
(주) 코드잇