
터미널, 매일 쓰면서도 잘 모르는 기능들
개발자라면 터미널을 안 쓸 수가 없잖아요. Git 명령어 치고, 서버 접속하고, 로그 확인하고. 그런데 매일 쓰면서도 "이런 게 되는지 몰랐네!" 하는 순간이 의외로 많거든요. 셸(Shell)이라는 게 겉보기에는 단순한 텍스트 인터페이스인데, 알고 보면 시간을 엄청 아껴주는 기능들이 숨어있어요.
오늘은 Bash나 Zsh 같은 셸에서 바로 써먹을 수 있는 실용적인 트릭들을 모아봤어요. "이걸 진작 알았으면 좋았을 텐데" 싶은 것들 위주로 골랐으니, 하나라도 새로 배워가시면 좋겠어요.
히스토리를 200% 활용하는 방법
셸 히스토리, 그냥 위쪽 화살표 눌러서 이전 명령어 찾는 용도로만 쓰시는 분 많죠? 사실 이게 훨씬 강력해요.
먼저 Ctrl + R은 아시는 분도 많겠지만, 역방향 검색(reverse search) 기능이에요. 누르면 프롬프트가 바뀌면서 타이핑하는 대로 히스토리에서 매칭되는 명령어를 찾아줘요. 예를 들어 어제 실행했던 긴 Docker 명령어가 기억 안 날 때, Ctrl + R 누르고 docker만 치면 최근에 실행한 Docker 관련 명령어가 쭉 나와요. Ctrl + R을 한 번 더 누르면 그 이전 결과로 넘어가고요.
그런데 여기서 한 단계 더 나가면 !!라는 게 있어요. 이건 바로 직전 명령어 전체를 의미해요. 가장 흔한 사용법이 sudo !!인데요. 뭔가 실행했는데 권한 오류가 났을 때, sudo !!를 치면 직전 명령어를 sudo 붙여서 다시 실행해줘요. 매번 긴 명령어를 다시 타이핑할 필요가 없는 거죠.
!$도 정말 유용해요. 이건 직전 명령어의 마지막 인자를 가져와요. 예를 들어 mkdir -p /some/deep/directory를 실행한 직후에 cd !$를 치면 방금 만든 그 디렉토리로 바로 이동해요. 긴 경로를 두 번 타이핑하는 수고를 덜어주는 거예요.
프로세스 제어, 생각보다 자주 쓸 수 있어요
터미널에서 뭔가 오래 걸리는 작업을 실행했는데, 잠깐 다른 걸 해야 할 때 어떻게 하세요? 새 탭을 여시나요? 사실 Ctrl + Z로 현재 프로세스를 일시 정지(suspend) 시킬 수 있어요. 이게 뭐냐면, 프로세스를 끄는 게 아니라 잠깐 멈춰놓는 거예요. 그리고 다른 작업을 하다가 fg를 치면 아까 멈춘 프로세스가 다시 포그라운드로 돌아와요.
bg 명령어도 있는데, 이건 정지된 프로세스를 백그라운드에서 계속 실행시켜줘요. 예를 들어 대용량 파일 다운로드를 시작했는데 포그라운드를 차지하고 있으면, Ctrl + Z로 멈추고 bg를 치면 백그라운드에서 다운로드가 계속 진행돼요. 그동안 터미널에서 다른 작업을 할 수 있고요.
명령어 끝에 &를 붙이면 처음부터 백그라운드로 실행할 수도 있어요. ./long_running_script.sh & 이런 식으로요. jobs 명령어를 치면 현재 백그라운드에서 돌고 있는 작업 목록도 확인할 수 있어요.
중괄호 확장(Brace Expansion)의 마법
이건 진짜 모르면 손해인 기능이에요. 중괄호 {}를 써서 여러 변형을 한 번에 만들 수 있거든요.
가장 많이 쓰는 패턴은 파일 백업이에요. cp config.yml{,.bak}이라고 치면, 이게 cp config.yml config.yml.bak으로 확장돼요. 설정 파일 수정하기 전에 백업 만들 때 정말 편해요.
여러 디렉토리를 한 번에 만드는 것도 가능해요. mkdir -p project/{src,test,docs,config}를 실행하면 project 아래에 네 개의 디렉토리가 한 번에 생겨요. 숫자 범위도 돼서, echo {1..10}은 1부터 10까지 출력하고, touch file_{01..05}.txt는 file_01.txt부터 file_05.txt까지 다섯 개 파일을 만들어줘요.
이걸 응용하면 재미있는 조합도 가능해요. echo {a,b}{1,2}를 치면 a1 a2 b1 b2가 나와요. 조합을 모두 만들어주는 거죠.
파이프와 xargs, 데이터를 흘려보내는 기술
파이프(|)는 다들 아실 텐데요, 이걸 xargs와 함께 쓰면 활용도가 확 올라가요. xargs가 뭐냐면, 표준 입력으로 받은 데이터를 다른 명령어의 인자(argument)로 변환해주는 도구예요.
예를 들어 특정 확장자의 파일을 모두 찾아서 삭제하고 싶을 때, find . -name ".log" | xargs rm이라고 하면 돼요. find가 찾은 파일 목록을 xargs가 받아서 rm의 인자로 넘겨주는 거예요. -I {}를 붙이면 각 항목을 원하는 위치에 넣을 수도 있어요. find . -name ".txt" | xargs -I {} cp {} {}.bak 이런 식으로요.
tee 명령어도 알아두면 좋아요. 파이프 중간에 끼워넣으면 출력을 화면에도 보여주면서 동시에 파일로도 저장해줘요. ./build.sh | tee build.log라고 하면 빌드 로그를 실시간으로 보면서 파일로도 남길 수 있어요. 디버깅할 때 정말 유용하거든요.
한국 개발자에게 주는 팁
이런 셸 트릭들은 하루에 몇 초씩 아끼는 것 같아도, 누적되면 엄청난 차이를 만들어요. 특히 서버 관리하거나 CI/CD 파이프라인 스크립트 작성할 때 이런 기본기가 탄탄하면 작업 속도가 확 달라지거든요.
추천하는 방법은 한 번에 다 외우려고 하지 말고, 오늘 하나만 골라서 써보는 거예요. Ctrl + R을 한 번도 안 써봤다면 오늘 하루 그것만 의식적으로 써보세요. 손에 익으면 다음 트릭으로 넘어가면 돼요. Zsh를 쓰고 계시다면 oh-my-zsh 같은 프레임워크에 이런 기능을 더 강화해주는 플러그인들도 많으니 함께 살펴보시면 좋아요.
정리
셸은 매일 쓰는 도구인 만큼, 조금만 깊이 파면 생산성이 크게 올라가는 영역이에요. 오늘 소개한 트릭 중에서 하나라도 새로 알게 된 게 있다면 바로 터미널을 열고 한번 쳐보세요.
여러분만의 셸 꿀팁이 있다면 댓글로 공유해주세요! 특히 "이건 진짜 나만 아는 것 같다" 싶은 트릭이 있으면 더 좋고요.
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공