Infra & Security Eng/Linux Fundamentals
리눅스 명령어 총 정리
엔지니어 E
2025. 12. 23. 18:39
반응형
📌 리눅스 명령어 형식
| 기본 형식 | command [옵션] | 명령어 뒤에 옵션을 붙여 사용 | # ls [옵션] |
| 단일 문자 옵션 | - 문자 | 한 글자 옵션, 여러 개 결합 가능 | # ls -l -h / ls -lh |
| 다중 문자 옵션 | -- 단어 | 두 글자 이상 옵션, 의미가 명확 | # ls --all |
| 단일 문자 옵션 결합 | - 문자문자 | 단일 문자 옵션을 한 번에 사용 | # ls -lh |
📌주요 명령어 총 정리
📂 디렉토리 관련
| cd | 디렉토리 이동 | cd [이동할 디렉토리] |
| pwd | 현재 디렉토리 확인 | - |
| mkdir | 디렉토리 생성 | -p, --parents: 상위 디렉토리 없으면 생성 mkdir -p /aa/a |
| rmdir | 디렉토리 삭제 | 잘 사용하지 않음 |
| tree | 디렉토리 구조 출력 | -d: 디렉토리만 출력 |
📁 디렉토리 개념
- 파일을 담고 있는 일종의 방(=폴더)
- 대소문자 구별
- 디렉토리 구조는 / 기준 트리 구조
🌐 디렉토리 경로 표현
| / | 최상위 root 디렉토리 |
| ./ | 현재 디렉토리 (생략 가능) |
| ../ | 상위 디렉토리 |
| ~/ | 각 사용자의 홈 디렉토리 |
| 절대경로 | /부터 시작하는 경로 |
| 상대경로 | ./ 또는 현재 위치 기준 경로 |
📄 파일/목록 관련
| ls | 현재 디렉토리 목록 출력 | -a, --all: 숨김 파일 포함 * 숨겨진 파일 이름: .으로 시작함 ex) .config - al: 숨겨진 파일 포함해서 상세 정보까지 함께 출력 -l: 파일 날짜, 용량 등 상세 정보를 보여줌 -r: 하위 디렉토리 내용 포함 -h: 사람이 읽기 쉬운 크기 -k: KB 단위 출력 -i: inode 번호 출력 - li: 파일의 아이덴티티 값을 확인 |
| ex) ls -al | grep conf (나오는 라인중에 conf 라는 문자열이 들어있는 행만 출력 해줌) 실습 1. putty 로그인 2. mkdir a 입력 3. cd a 입력 4. cd .. 입력 5. cd a/ 입력 (원래 ./a/ 라고 쓰는데 생략된 것) * a 라는 디렉토리라면 반드시 a 뒤에 "/" 를 입력 |
||
| cat | 파일 내용 출력 | -n: 행 단위 번호 ★ 많이 사용 → 프로그램 소스 코드 볼때 유용 -b: 공백 라인 제외 행 번호 → 잘 사용하지는 않음 |
ls -l 명령어 출력 예시
-rw--------. 1 root root 1518 12월 17 15:05 anaconda-ks.cfg
출력 항목 설명
| 파일 권한 | -rw--------. | 소유자, 그룹, 기타 사용자의 읽기/쓰기/실행 권한 |
| 링크 수 | 1 | 하드 링크 수 |
| 소유자 | root | 파일 소유자 |
| 그룹 | root | 파일이 속한 그룹 |
| 파일 크기 | 1518 | 파일 크기(바이트 단위) |
| 수정 날짜 | 12월 17 15:05 | 마지막 수정 또는 생성 날짜 |
| 파일 이름 | anaconda-ks.cfg | 파일 이름 |
📌 입출력 제어 (리다이렉트)
| > | 표준 출력 → 파일 덮어쓰기 | command > 파일 |
| >> | 표준 출력 → 파일 이어쓰기 | command >> 파일 |
| < | 표준 입력 ← 파일 | command < 파일 |
| <<EOF | Here Document | bash\ncat <<EOF > ./abc.txt\n내용 입력\nEOF\n |
📄 파일 입출력 예시
1️⃣ 파일 내용을 다른 파일로 복사
cat < a.txt > b.txt
- a.txt의 내용을 b.txt로 복사
- 기존 b.txt 내용은 덮어쓰기
💡 TIP: 명령 프롬프트에서 텍스트 복사
- 복사 방법: 드래그 → 마우스 휠 중앙 클릭
2️⃣ 파일 초기화 (내용 삭제)
cat < /dev/null > a.txt (회사 업무 시 null 파일 만드는 작업이 많음)
- a.txt의 내용을 모두 지우고 빈 파일로 초기화
3️⃣ 내용 입력 후 저장
cat > b.txt
- 명령어 실행 후 키보드로 입력한 내용이 b.txt에 저장 ("< 입력파일" 은 입력하지 않았으므로 입력은 키보드로부터 받음, 그래서 입력하라고 명령 프롬프트가 대기 하고 있음
- 입력 완료 후 Ctrl+D 혹은 Ctrl+C 누르면 저장 종료
📌출력 관련 명령어
| echo | 문자열 또는 환경 변수 출력 | echo "Hello" echo $HOME echo 1 > a.txt: 1 a.txt로 저장함 |
| * 변수: 자주 사용하는 값을 메모리 안에 저장 해놓는데 그 공간을 변수라고 부름 * 환경변수: 리눅스가 사용자 컴퓨터에 미리 지정 해놓은 변수로 1, '1' 이런 것들이 저장되어 있는 것 * $: 변수를 지정함 *값(=리터럴): 문자 리터럴('1'), 숫자 리터럴(1) |
||
| env | 모든 환경 변수 출력 | env |
| ex) #env | grep HOME: 환경 변수 목록 중에서 HOME 관련된 것만 출력해줘 |
||
| cat | 파일 내용 출력 | -n: 행 단위 번호 ★ 많이 사용 → 프로그램 소스 코드 볼때 유용 -b: 공백 라인 제외 행 번호 → 잘 사용하지는 않음 |
| ex) cat file.txt cat -n file.txt (행번호) |
||
| ex) # cat a.txt > b.txt: a.txt 입력 받아 b.txt 로 출력 # cat -n /etc/passwd | grep ftp: etc 밑에 passwd 라는 파일의 내용을 행 번호 붙여서(-n) 화면에 출력해줘 근데 출력되는 행 중에 ftp 라는 문자열이 들어간 행만 출력해줘 |
||
| more/less | 텍스트 파일이나 명령 출력 결과를 한 화면씩 보고, 위/아래로 이동할 수 있는 명령어 | more file.txt less /var/log/messages |
| * more나 less 는 똑같다고 보면 됨 * 요새는 less를 더 많이 사용하고 있음 |
||
| 실습 1. 메모장에 a 적기 2. a.txt 제목으로 저장하기 3. cmd에 type a.txt 입력하면 a 라는 내용을 보여준다 |
||
📌 파일/디렉토리 복사·이동·삭제
| cp | 파일/디렉토리 복사 cp -arpf 원본(파일 혹은 디렉토리) 복사본(파일 혹은 디렉토리) |
-r: 하위 디렉토리 포함 -p: 속성 유지 -f: 강제 실행 |
* cp의 옵션은 굳이 외울 필요 없이 한꺼번에 붙여서 쓰면 됨 cp -arpf 실습 cp aa ./a/bb 두가지 해석 1) aa 라는 파일을 ./ 아래 a 디렉토리 아래 bb 디렉토리 밑으로 복사하세요 2) aa 라는 파일을 ./ 아래 a 디렉토리 밑에 bb 라는 파일로 복사하세요 * 디렉토리를 가지고 작업할 시 반드시 파일명 뒤에 /를 넣어야 함 |
||
| mv | 파일/디렉토리 이동 | -f: 강제 실행 -b: 덮어쓰기 시 백업 -i: 삭제 전 확인 |
| ex) mv c.txt a/: c.txt를 a 라는 디렉토리로 옮겨줘 | ||
| * mv 명령어는 이동 명령어 이기 때문에 원본이 없어짐 * 같은 파티션 내에서는 파일 간 이동이 빠름 |
||
| rm | 파일/디렉토리 삭제 | -r: 디렉토리 삭제 -f: 강제 실행 |
| * rmdir 명령어보다 rm을 쓰는 일이 많음 | ||
💡 TIP: 디렉토리를 강제로 삭제할 때는 rm -rf 디렉토리명
📌 링크
| ln | 원본 파일에 대해서 바로가기 파일을 만드는 것 ln [옵션] 원본파일 링크파일 → 링크파일을 열면 원본파일이 열림 |
-s: 심볼릭(소프트) 링크 → [옵션]에 반드시 -s 옵션을 줘야 함(옵션을 안 준다면 hard 파일이 만들어지기 때문에) |
| * 바로가기 파일이 있는데 원본 파일을 지우면? 바로가기 파일은 쓸모 없어짐 (쓰레기 파일이 됨) 링크 파일은 리눅스 화면에서 빨간색으로 바뀌는데 실체가 없는 파일(쓰레기 파일)이 되었기 때문 ★ 이런 빨간 파일들이 보이면 지워주는 작업을 하는 게 좋음 ★ 요새는 보안상의 이유로 소프트링크를 잘 사용 안함 * 심볼릭 링크 파일은 디렉토리도 만들 수 있음 실습 1. putty에서 프롬프트에 cd /dev 입력 2. pwd 3. ls 4. 하늘색으로 나오는 애들 => * 파일 각자 자세히 보고 싶다면 ls -al cdrom (해당파일 입력) 5. sr0는 링크 파일 / cdrom은 원본 파일 (쓰기 편하면 만들고, 쓰기 불편하면 안 만들어도 됨) |
||
| 심볼릭 링크 | 원본 파일 위치 정보 저장, 다른 파일시스템 가능, inode 별도 | 원본 삭제 시 링크는 깨짐 |
| 하드 링크 | 원본과 동일 inode, 같은 파일시스템에서만 가능 | 원본 삭제 후에도 사용 가능 |
📌 파일 일부 출력
| head | 파일 앞부분 출력(오래됨) | -n N: N줄 출력 -c N: N바이트 출력 |
| tail | 파일 뒷부분 출력(최근) | -n N, -f: 실시간 추가 내용 출력 ex) tail -n 20 /var/log/nginx/error.log |
| ★ tail:로그파일 볼때 많이 사용 ★ 유닉스에서는 파일의 뒷부분 보는게 많음 |
||
📌 파일 크기/조작
| truncate | 파일 크기 변경 | -s N: N 바이트로 설정 -r file: 기준 파일 크기 사용 |
| * 작동하고 있는 프로그램에 파일을 지우기 위해 사용 * 공간 확보 가능함 * 실제로 옵션을 사용하지 않음 ★ 설정파일이나 로그파일 내용 지울 때 사용 ex) truncate -s 0 a.xtxt |
||
| touch | 파일 시간 갱신, 빈 파일을 만들기도 함 | -t: 특정 시간 지정 ex) touch -t 202405151330.45 filename.txt (YYYYMMDDhhmm.ss 형식) -a: 접근 시간 변경(마지막으로 접근한 시간만 변경) -m: 수정 시간 변경 -r : 지정한 다른 파일의 시간과 똑같이 맞춤 |
📌 파일 검색
| find | 파일 시스템에서 조건 만족 파일 검색 | -name: 이름 -perm: 권한 -type: 파일 종류 (f, d, l) -mtime/-atime/-ctime: 시간 기준 -user/-group: 소유자 기준 -empty: 빈 파일 |
| ex) #find /etc/ /var/ -name ???.conf etc 에서도 찾고 var 에서도 찾아줘 그리고 ???(3글자) 이면서.conf 로 끝나는 것들만 찾아줘 |
||
| * find 는 검색경로나 검색조건 등 여러 개 줄 수 있음 | ||
📌 압축/압축 해제
| tar | 파일 묶기/압축 압축하기: - cvzf 압출풀기: - xvzf 목록보기: - tvf 파일추가: - rvf 고효율압축: -J |
-c: 압축 -x: 압축 해제 -v: 작업 내용 출력 -f: 파일 지정 -z: gzip 압축 -j: bzip2 압축 |
| gzip | gzip 압축 | gzip a.txt gzip -d a.txt.gz |
| bzip2 | bzip2 압축 | bzip2 a.txt bunzip2 a.txt.bz2 |
| compress | compress 압축 | compress a.txt uncompress a.txt.Z |
| cpio | 아카이브 생성/압축 해제 | cpio -idmv < archive.cpio |
| gzip, bzip2, compress, cpio 은 잘 사용하지 않음 | ||
📌 파일 정보 확인
| stat | 파일의 타임스탬프 출력 ex) stat test.txt size 20 Blocks:8 IO Block: 4096 ... |
| atime (access) | 마지막 접근 시간 ex) stat -c %y filename.txt 2024-05-15 11:30:00.000000000 +0900 |
| ctime (change) | 속성 변경 시간 |
| mtime (modify) | 내용 수정 시간 |
💡 Tip:
- >: 덮어쓰기, >>: 이어쓰기
- |(파이프): 명령어 연결, grep: 문자열 필터링 (내가 원하는 문자열에 들어있는 행만 보여주는것임)
- ls -al | more 앞의 입력값을 받아서(al) 뒤에 넘겨줌 (more로)