Photo by Gabriel Heinzer on Unsplash
명령줄 인터페이스(CLI)는 대부분의 기술 전문가, 특히 개발자와 시스템 관리자에게 필수적인 도구다. 스크립트를 작성하거나 서버를 구성하거나 작업을 자동화할 때, Linux 명령어에 익숙해지는 것은 작업 시간을 크게 절약해준다.
많은 사람에게 Linux는 처음에는 어렵게 느껴질 수 있지만, 명령줄 인터페이스의 잠재력을 제대로 이해하게 되면 이것이 프로그래머에게 얼마나 강력한 도구인지 깨닫게 된다. 디렉터리 탐색, 파일 조작, 디버깅까지 이러한 단순하면서도 강력한 Linux 명령어를 숙달하면 워크플로우가 획기적으로 개선될 것이다.
이 글에서는 개발자라면 반드시 알아야 할 5가지 명령줄 트릭을 살펴볼 것이다. 이들은 단순히 알면 좋은 정도의 팁이 아니라, 시간을 절약해주고 터미널에서의 작업을 훨씬 효율적으로 만들어주는 진정한 게임 체인저들이다.
시작해보자!
mkdir와 중괄호 {}를 활용한 여러 폴더 생성하기
파일 및 디렉터리 정리는 개발자에게 자주 필요한 작업 중 하나이다. 특히 프로젝트를 관리하거나 복잡한 디렉터리 구조를 설정할 때 유용하다. 일반적으로 여러 디렉터리를 생성하려면 반복적으로 명령어를 입력해야 하는데, mkdir 명령어에 중괄호 {}를 활용하면 한 번에 여러 디렉터리를 생성할 수 있는 강력한 방법이 있다.
문제
예를 들어, 프로젝트의 여러 서비스에 대해 development, testing, production 환경을 위한 폴더 구조를 만들고 싶다고 가정해 보자. 일반적인 방법으로는 다음과 같이 하나씩 폴더를 만들어야 한다.
mkdir dev
mkdir test
mkdir prod하지만 구조가 더 복잡해지면 작업이 점점 번거로워진다. 예를 들어, 백엔드와 프론트엔드 서비스를 모두 포함하는 폴더를 세 환경 각각에 만들어야 한다면 훨씬 더 많은 명령어를 입력해야 한다.
해결 방법: 중괄호 {}를 사용한 mkdir
각 디렉터리를 하나씩 생성하는 대신, mkdir 명령어와 중괄호 {}를 사용하여 하나의 명령어로 모든 작업을 처리할 수 있다. 이를 통해 디렉터리 조합을 효율적으로 생성할 수 있다.
mkdir -p {dev,test,prod}/{backend,frontend}다음은 명령어에 대한 설명이다:
-p플래그: 필요한 경우 상위 디렉터리를 자동으로 생성한다. 상위 디렉터리가 없을 경우 오류를 발생시키지 않고, 필요한 디렉터리를 함께 만든다.- 중괄호 {}: 중괄호 안에 여러 옵션을 나열하면, mkdir가 이를 조합하여 자동으로 디렉터리를 생성한다.
- 첫 번째 중괄호 {dev,test,prod}: dev, test, prod 환경용 디렉터리를 만든다.
- 두 번째 중괄호 {backend,frontend}: 백엔드와 프론트엔드 서비스를 위한 디렉터리를 각각 생성한다.
위 명령어를 실행하면 아래와 같은 폴더 구조가 생성된다.
dev/
backend/
frontend/
test/
backend/
frontend/
prod/
backend/
frontend/이 트릭이 유용한 이유
이 방법은 작업 시간을 크게 절약하고, 대규모 프로젝트의 복잡한 폴더 구조를 설정할 때 발생할 수 있는 실수를 줄여준다. 모든 조합을 일일이 수동으로 입력할 필요 없이, 한 줄의 명령어로 간결하고 정확하게 생성할 수 있다.
이러한 효율성 덕분에 프로젝트 초기 세팅 시 큰 도움을 줄 수 있으며, 특히 협업 환경에서 일관성을 유지하기에도 좋다.
cd -로 빠르게 이전 디렉터리로 이동하기
프로그래머라면 종종 깊게 중첩된 디렉터리에서 작업할 때가 많다. 프로젝트의 루트 디렉터리에서 코드, 설정 파일, 로그 등을 다루기 위해 서브 디렉터리로 이동하곤 한다. 그런데 다시 원래 디렉터리로 돌아와야 할 때, cd ..를 여러 번 입력하는 것은 번거롭고 실수하기 쉽다.
문제
예를 들어, 다음과 같은 중첩된 디렉터리에서 작업하고 있다고 가정해 보자.
/home/user/projects/webapp/src/frontend/components프로젝트 루트(/home/user/project/)로 돌아가려면 보통 다음과 같은 명령어를 입력해야 한다.
cd ..
cd ..
cd ..
cd ..이렇게 4번이나 입력해야 겨우 루트로 돌아올 수 있다. 이는 시간이 걸릴 뿐만 아니라, 어디까지 돌아왔는지 혼동하기 쉽다.
해결 방법: cd -사용하기
cd - 명령어를 사용하면, 깊은 디렉터리 구조 안에서 이전 디렉터리로 한 번에 돌아갈 수 있다. 마치 웹 브라우저의 '뒤로 가기' 버튼처럼 동작한다.
사용법
1. 시작 디렉터리:
루트 디렉터리에서 시작한다고 가정한다.
/home/user/projects/webapp/
2. 중첩 디렉터리로 이동:
서브 디렉터리로 이동한다.
/home/user/projects/webapp/src/frontend/components
3. 이전 디렉터리로 돌아가기:
이제 단순히 cd -를 입력하면 루트 디렉터리로 바로 돌아갈 수 있다.
/home/user/projects/webapp/
동작 원리
cd -는 디렉터리 트리를 거슬러 올라가는 명령어가 아니다. 대신, 이전 디렉터리를 메모리에 저장하고, 이 저장된 디렉터리로 돌아간다.- 현재 디렉터리와 이전 디렉터리를 서로 교환하는 방식으로 동작하며, 두 디렉터리 간의 빠른 전환이 가능해진다.
활용 사례
이 방법은 특히 디버깅이나 프로젝트의 여러 부분을 동시에 작업할 때 유용하다. 예를 들어, 프로젝트 루트 디렉터리와 깊은 서브 디렉터리 간 자주 오가야 할 경우, 긴 경로를 반복 입력하거나 cd ..를 여러 번 사용할 필요 없이, cd -로 간단히 해결할 수 있다.
touch와 숫자 범위를 사용한 다중 파일 생성하기
개발자라면 테스트 파일, 자리 표시자, 로그 등을 생성해야 하는 경우가 많다. 파일을 하나씩 만드는 작업은 번거롭고, 많은 수의 파일을 생성해야 할 때 비효율적이다. 하지만 Linux의 touch 명령어와 중괄호 {}를 사용하면 단일 명령어로 여러 파일을 빠르게 생성할 수 있다.
문제
예를 들어, 100개의 테스트 파일(test1.txt 부터 test100.txt)을 만들어야 한다고 가정해보자. 일반적인 방법으로는 다음과 같이 일일이 입력해야 한다.
touch test1.txt
touch test2.txt
touch test3.txt
...
touch test100.txt이 작업은 시간이 많이 걸리고 지루하며, 실수로 파일 이름을 틀리게 입력할 가능성도 있다.
해결 방법: touch와 숫자 범위, 중괄호 {} 활용하기
아래 명령어를 사용하면 단 한 번에 여러 파일을 생성할 수 있다.
touch test{1..100}.txt동작 원리
- touch 명령어: 새로운 파일을 생성하는 데 사용된다. 보통 touch filename 형식으로 사용한다.
- 중괄호 {1..100}: 숫자 범위를 지정하여 1부터 100까지 자동으로 파일 이름에 숫자를 붙인다.
- 결과: 명령어 실행 후 아래와 같은 파일들이 생성된다.
test1.txt
test2.txt
test3.txt
...
test100.txt이 트릭이 유용한 이유
- 시간 절약: 수십, 수백 개의 파일을 단 몇 초만에 생성할 수 있다.
- 오류 감소: 파일 이름을 일일이 입력하지 않아도 되므로 오타나 중복된 이름으로 인한 실수를 방지할 수 있다.
- 효율적인 자동화: 대규모 프로젝트에서 테스트 또는 로그 파일 생성과 같은 작업을 자동화할 때 특히 유용하다.
활용 사례
예를 들어, 애플리케이션이 다수의 파일을 처리하는지 확인해야 할 때 이 명령어를 사용해 테스트 데이터를 빠르게 준비할 수 있다. 또, 애플리케이션에서 처리할 가상의 로그 파일을 즉시 생성하여 시간을 절약할 수 있다. 그리고 애플리케이션에서 처리할 가상의 로그 파일을 즉시 생성하여 시간을 절약할 수 있다.
실시간 파일 업데이트: tail -f
백엔드 개발자라면 오류, 시스템 동작 또는 디버깅 목적으로 로그 파일을 실시간으로 모니터링할 일이 많다. 하지만 로그 파일을 수동으로 확인하면 비효율적이고 시간이 많이 걸린다. 다행히 tail 명령어의 -f 옵션을 사용하면 실시간 업데이트를 자동으로 추적할 수 있다.
문제
예를 들어, 애플리케이션 로그 파일(error_file.log)에서 새로 기록된 오류를 모니터링하고 싶다고 가정해보자. 일반적으로 다음과 같이 로그의 마지막 몇 줄을 확인할 수 있다.
tail error_file.log그러나 이 명령어는 파일의 현재 상태만 보여주며, 이후에 파일이 변경되면 명령어를 다시 실행해야 새로운 줄을 볼 수 있다. 이는 실시간 시스템에서 비효율적이다.
해결 방법: tail -f
tail -f 명령어를 사용하면 파일이 업데이트될 때마다 자동으로 새 줄을 터미널에 표시한다.
tail -f error_file.log동작 원리
- tail: 파일의 마지막 10줄을 출력
- -f 옵션: 파일을 "팔로우"하여 새로 추가되는 내용을 실시간으로 표시함
활용 사례
웹 서버의 액세스 로그를 실시간으로 모니터하고 싶다면
tail -f /var/log/nginx/access.log새로운 요청이 들어오면 해당 요청이 바로 터미널에 출력된다. 명령어를 재실행할 필요가 없다.
grep과 결합하면 특정 키워드만 필터링하여 볼 수도 있다.
tail -f error_file.log | grep "ERROR"이 명령어는 "ERROR"가 포함된 로그만 출력한다.
명령어 히스토리 활용: history
터미널에서 반복적으로 특정 명령어를 사용하거나, 이전에 실행했던 복잡한 명령어를 다시 실행해야 할 때가 많다. 하지만 수동으로 터미널을 스크롤해 찾는 것은 비효율적이다. Linux의 history 명령어는 이런 문제를 해결한다.
문제
예를 들어, 복잡한 grep 또는 find 명령어를 실행했는데 다시 사용하려면 정확한 문법을 기억해야 한다. 이는 귀찮고 시간이 소모된다.
해결 방법: history 5
history 명령어는 현재 세션에서 실행한 모든 명령어를 기록하며, 숫자를 추가하면 마지막 몇 개만 표시할 수 있다.
history 5동작 원리
- history: 세션의 모든 명령어를 나열함
- 숫자 추가(history 5): 마지막 5개의 명령어만 표시함
예를 들어, 마지막 5개의 명령어가 다음과 같다면
123 ls
124 cd src/
125 mkdir newdir
126 touch newfile.txt
127 history 5history 5는 다음과 같은 결과를 출력한다.
123 ls
124 cd src/
125 mkdir newdir
126 touch newfile.txt
127 history 5활용 사례
디버깅 중 여러 명령어를 실행한 후, 이를 다시 실행하려면
history 5출력된 목록에서 원하는 명령어 번호를 확인하고 다음과 같이 실행한다.
!125위 명령어는 mkdir newdir 명령어를 다시 실행한다.
결론
- mkdir와 중괄호를 사용해 다수의 디렉터리 생성: 한 줄로 복잡한 디렉터리 구조를 생성
- cd -로 이전 디렉터리로 빠르게 이동: 깊은 디렉터리에서 작업할 때 특히 유용
- touch와 숫자 범위로 다수의 파일 생성: 테스트나 로그 파일을 즉시 준비
- tail -f로 실시간 로그 파일 모니터링: 실시간 이벤트 추적
- history로 명령어 재사용: 복잡한 명령어를 쉽게 다시 실행
이러한 팁을 활용하면 반복 작업을 줄이고 더 중요한 코딩 작업에 집중할 수 있다. 리눅스 명령어의 강력함을 활용해 생산성을 극대화할 수 있다.
Photo by Rowen Smith on Unsplash
이 글은 CyCoderX의 5 Linux Command Tricks That Will Change Your Life as a Programmer를 한글로 번역한 글입니다.