🐧 리눅스의 힘을 완전히 활용하는 30가지 핵심 명령어
안녕하세요, 리눅스 애호가 여러분! 오늘은 리눅스 시스템을 완벽하게 다룰 수 있게 해주는 30가지 핵심 명령어를 자세히 살펴보겠습니다. 이 명령어들을 마스터하면 여러분은 진정한 리눅스 전문가가 될 수 있습니다. 각 명령어는 실제 사용 예시와 함께 자세한 설명, 그리고 추가적인 팁을 제공하여 여러분의 리눅스 여정을 더욱 풍성하게 만들어 줄 것입니다.
1. ls - 디렉토리 내용 나열하기
ls -lah
모든 파일(숨김 파일 포함)을 자세한 정보와 함께 사람이 읽기 쉬운 형식으로 보여줍니다.
-l: 자세한 정보 표시 (권한, 소유자, 크기, 수정 시간 등)-a: 숨김 파일(이름이 '.'으로 시작하는 파일) 포함-h: 파일 크기를 사람이 읽기 쉬운 형식(예: 1K, 234M, 2G)으로 표시
추가 팁: ls -lt는 최근 수정된 파일부터 내림차순으로 정렬하여 보여줍니다. 파일 수정 시간을 기준으로 작업할 때 유용합니다.
2. cd - 디렉토리 변경하기
cd -
이전 작업 디렉토리로 빠르게 이동합니다. 현재 디렉토리와 이전 디렉토리 사이를 빠르게 전환할 때 유용합니다.
추가 팁: cd ~는 홈 디렉토리로 이동하며, cd ..는 상위 디렉토리로 이동합니다.
3. pwd - 현재 작업 디렉토리 확인
pwd
현재 위치한 디렉토리의 전체 경로를 보여줍니다. 스크립트 작성 시 현재 작업 디렉토리를 확인해야 할 때 유용합니다.
추가 팁: pwd -P는 심볼릭 링크를 따라 실제 경로를 보여줍니다.
4. mkdir - 새 디렉토리 만들기
mkdir -p projects/{dev,test,prod}
projects 디렉토리 아래에 dev, test, prod 하위 디렉토리를 한 번에 생성합니다. -p 옵션은 중간 경로의 디렉토리가 없으면 생성합니다.
추가 팁: mkdir new_dir은 현재 디렉토리에 new_dir이라는 새 디렉토리를 생성합니다.
5. rm - 파일 또는 디렉토리 삭제
rm -i important_file.txt
파일을 삭제하기 전에 확인을 요청합니다. 중요한 파일을 실수로 삭제하는 것을 방지할 수 있습니다.
추가 팁: rm -rf directory는 디렉토리와 그 안의 모든 내용을 강제로 삭제합니다. 매우 강력하므로 주의해서 사용해야 합니다.
6. cp - 파일 또는 디렉토리 복사
cp -u *.txt backup/
모든 .txt 파일 중 백업 디렉토리에 없거나 더 새로운 파일만 복사합니다. -u 옵션은 업데이트된 파일만 복사합니다.
추가 팁: cp -r directory1 directory2는 디렉토리와 그 안의 모든 내용을 재귀적으로 복사합니다.
7. mv - 파일 이동 또는 이름 변경
mv -i *.jpg Photos/
모든 .jpg 파일을 Photos 디렉토리로 이동하며, 덮어쓰기 전에 확인을 요청합니다.
추가 팁: mv old_name.txt new_name.txt는 파일 이름을 변경합니다.
8. cat - 파일 내용 보기
cat -n long_file.txt | less
파일 내용을 행 번호와 함께 표시하고, less 명령어를 통해 페이지 단위로 볼 수 있게 합니다. 큰 파일의 내용을 확인할 때 유용합니다.
추가 팁: cat file1 file2 > combined_file.txt는 두 파일의 내용을 합쳐 새로운 파일로 만듭니다.
9. grep - 파일에서 텍스트 검색
grep -r "TODO" .
현재 디렉토리와 모든 하위 디렉토리에서 "TODO" 문자열을 포함한 모든 파일을 검색합니다. -r 옵션은 재귀적으로 검색합니다.
추가 팁: grep -i "pattern" file.txt는 대소문자를 구분하지 않고 검색합니다.
10. chmod - 파일 권한 변경
chmod -R 755 scripts/
scripts 디렉토리와 그 안의 모든 파일에 대해 소유자에게 모든 권한을, 그룹과 다른 사용자에게는 읽기와 실행 권한을 부여합니다. -R 옵션은 재귀적으로 권한을 변경합니다.
추가 팁: chmod 777 file.txt는 모든 사용자에게 모든 권한을 부여합니다. 보안상 위험할 수 있으므로 주의해야 합니다.
11. chown - 파일 소유권 변경
chown -R user:group directory/
디렉토리와 그 안의 모든 파일의 소유자와 그룹을 변경합니다. -R 옵션은 재귀적으로 소유권을 변경합니다.
추가 팁: chown user file.txt는 파일의 소유자만 변경합니다.
12. ps - 실행 중인 프로세스 보기
ps aux | grep nginx
시스템에서 실행 중인 모든 프로세스 중 nginx와 관련된 프로세스만 필터링하여 보여줍니다.
추가 팁: ps -ef는 모든 프로세스를 전체 형식으로 보여줍니다.
13. top - 시스템 리소스 모니터링
top -o %MEM
프로세스를 메모리 사용량 순으로 정렬하여 보여줍니다. 시스템 리소스 사용량을 실시간으로 모니터링할 때 유용합니다.
추가 팁: top 명령 실행 중 'M' 키를 누르면 메모리 사용량 순으로 정렬됩니다.
14. df - 디스크 공간 사용량 확인
df -h --total
모든 파일 시스템의 디스크 사용량을 사람이 읽기 쉬운 형태로 보여주고, 총 사용량도 표시합니다.
추가 팁: df -i는 inode 사용량을 보여줍니다.
15. du - 디렉토리 크기 확인
du -sh */
현재 디렉토리의 모든 하위 디렉토리 크기를 요약하여 보여줍니다.
추가 팁: du -a는 모든 파일과 디렉토리의 크기를 보여줍니다.
16. tar - 파일 압축 및 해제
tar -czvf archive.tar.gz --exclude='*.tmp' directory/
directory/의 내용을 압축하되, .tmp 파일은 제외합니다. -c는 압축, -z는 gzip 압축, -v는 압축 과정을 상세히 보여줌, -f는 파일 이름 지정, --exclude는 특정 패턴 제외를 의미합니다.
추가 팁: tar -xzvf archive.tar.gz는 압축을 해제합니다.
17. find - 파일 검색
find . -type f -mtime -7 -print0 | xargs -0 tar -czvf recent_files.tar.gz
최근 7일 이내에 수정된 모든 파일을 찾아 tar 압축 파일로 만듭니다. -print0와 xargs -0는 파일 이름에 공백이 포함된 경우에도 안전하게 처리합니다.
추가 팁: find . -name "*.txt"는 현재 디렉토리와 하위 디렉토리에서 .txt 파일을 찾습니다.
18. sed - 스트림 편집기
sed -i 's/old_config/new_config/g' *.conf
모든 .conf 파일에서 'old_config'를 'new_config'로 바꿉니다. -i 옵션은 파일을 직접 수정합니다.
추가 팁: sed 's/pattern/replacement/g' file.txt는 파일 내용을 변경하여 화면에 출력합니다.
19. awk - 텍스트 처리 도구
awk '{sum+=$1} END {print "Total:",sum}' numbers.txt
numbers.txt 파일의 첫 번째 열 숫자들의 합계를 계산합니다. $1은 첫 번째 열을 의미합니다.
추가 팁: awk -F',' '{print $2}' file.csv는 쉼표로 분리된 파일의 두 번째 열을 출력합니다.
20. ssh - 원격 서버에 안전하게 접속
ssh -i ~/.ssh/id_rsa user@hostname
특정 SSH 키를 사용하여 원격 서버에 접속합니다. -i 옵션은 사용할 SSH 키를 지정합니다.
추가 팁: ssh user@hostname은 비밀번호를 입력하여 접속합니다.
21. scp - 원격 파일 복사
scp -r local_directory user@hostname:/remote_directory
로컬 디렉토리를 원격 서버로 재귀적으로 복사합니다. -r 옵션은 디렉토리를 재귀적으로 복사합니다.
추가 팁: scp file.txt user@hostname:/remote_directory는 파일을 원격 서버로 복사합니다.
22. wget - 웹에서 파일 다운로드
wget -c [http://example.com/large_file.zip](http://example.com/large_file.zip)
대용량 파일을 다운로드하며, 중단된 경우 이어받기를 지원합니다. -c 옵션은 이어받기를 활성화합니다.
추가 팁: wget -O new_name.zip [http://example.com/file.zip](https://www.google.com/search?q=http://example.com/file.zip)는 다운로드한 파일을 new_name.zip으로 저장합니다.
23. curl - URL을 통한 데이터 전송
curl -o output.json [https://api.example.com/data](https://api.example.com/data)
API에서 JSON 데이터를 받아 파일로 저장합니다. -o 옵션은 출력 파일을 지정합니다.
추가 팁: curl -X POST -d "param1=value1¶m2=value2" [https://api.example.com/data](https://api.example.com/data)는 POST 요청을 보냅니다.
24. netstat - 네트워크 연결 정보 표시
netstat -tuln
현재 열려있는 TCP와 UDP 포트를 표시합니다. -t는 TCP 연결, -u는 UDP 연결, -l은 Listen 상태의 소켓, -n은 주소를 이름 대신 숫자로 표시합니다.
추가 팁: netstat -an는 모든 네트워크 연결을 표시합니다.
25. iptables - 방화벽 규칙 설정
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
SSH 연결(포트 22)을 허용하는 방화벽 규칙을 추가합니다. -A는 규칙 추가, -p는 프로토콜 지정, --dport는 대상 포트 지정, -j는 규칙의 동작 지정입니다.
추가 팁: iptables -L은 현재 방화벽 규칙을 표시합니다.
26. crontab - 예약 작업 설정
crontab -e
cron 작업을 편집합니다. 0 2 * * * /scripts/backup.sh는 매일 새벽 2시에 backup.sh 스크립트를 실행합니다.
추가 팁: crontab -l은 현재 설정된 cron 작업을 표시합니다.
27. systemctl - 시스템 서비스 관리
systemctl status nginx
nginx 서비스의 현재 상태를 확인합니다.
추가 팁: systemctl start nginx는 서비스를 시작하고, systemctl stop nginx는 서비스를 중지합니다.
28. journalctl - 시스템 로그 확인
journalctl -u nginx -f
nginx 서비스의 로그를 실시간으로 확인합니다. -u는 서비스 지정, -f는 로그를 실시간으로 표시합니다.
추가 팁: journalctl -xe는 오류 메시지와 함께 자세한 설명을 표시합니다.
29. htop - 대화형 프로세스 뷰어
htop
시스템 리소스와 프로세스를 대화형 인터페이스로 모니터링합니다. top보다 사용하기 편리합니다.
추가 팁: htop 실행 중 'F5' 키를 누르면 프로세스를 트리 형태로 볼 수 있습니다.
30. tmux - 터미널 멀티플렉서
tmux new -s mysession
'mysession'이라는 이름의 새 tmux 세션을 시작합니다. 여러 터미널 창을 하나의 화면에서 관리할 수 있습니다.
추가 팁: tmux attach -t mysession은 기존 세션에 연결합니다.
리눅스 마스터로 가는 여정
이 30가지 명령어를 익히고 나면, 여러분은 리눅스 시스템을 훨씬 더 효과적으로 다룰 수 있을 것입니다. 각 명령어의 man 페이지를 꼭 읽어보세요. 더 많은 옵션과 고급 사용법을 배울 수 있을 거예요.
리눅스는 강력하고 유연한 운영 체제입니다. 이 명령어들을 마스터하면 시스템 관리, 자동화, 문제 해결 등 다양한 작업을 효율적으로 수행할 수 있습니다.
여러분만의 필수 리눅스 명령어나 팁이 있나요? 댓글로 공유해 주세요!
더 강력한 리눅스 사용자가 되는 여정을 즐기세요!
