기타 / 자격증 / 리눅스마스터 2급 / 4강

4편 · 기본 명령어 (2) 디렉터리·파일 조작과 기타 필수 명령어

이번 강의에서 배울 것

  • ls·cp·mv·rm·mkdir·touch의 주요 옵션과 절대·상대 경로를 구분해 쓴다.
  • 하드 링크와 심볼릭 링크의 차이를 아이노드 번호와 원본 삭제 결과로 설명한다.
  • find의 검색 조건(-name, -type, -perm, -size, -mtime, -user, -exec)과 locate·which·whereis의 차이를 말한다.
  • 리다이렉션·파이프와 grep·wc·sort·uniq·cut·tr을 엮어 출력 결과를 예측한다.

학습 경로 · 1과목 3장

← 3편 · 사용자 계정과 권한 · 다음: 5편 · 파일 시스템 명령어와 물리 구조 →

범위: 1과목 3장 "리눅스 기본 명령어" 중 디렉터리·파일 조작, 파일 내용 보기, 파일 찾기, 입출력 재지정과 텍스트 가공, 날짜·도움말·시스템 종료 등 기타 필수 명령어.

형광펜 읽는 법: 노랑 핵심 정의·결론 · 빨강 시험에서 헷갈리는 구분·함정 · 파랑 외워야 할 순서·목록


단원 도입

출제 포인트빈도이렇게 나온다
하드 링크 vs 심볼릭 링크★★★아이노드 번호, 원본 삭제 후 결과, ln -s
find 조건 (-name, -type, -perm, -size, -mtime, -user, -exec)★★★조건에 맞는 명령 완성
리다이렉션 (>, >>, 2>, 2>&1, <<)★★★표준 에러만 파일로 보내는 명령
파이프 조합 (grep·wc·sort·uniq·cut)★★★명령 결과 예측
cp·mv·rm·mkdir 옵션 (-r, -i, -f, -p)★★하위 디렉터리까지 복사, 부모 디렉터리 생성
head·tail (-n, -f)★★실시간 로그 보기
which·whereis·locate 차이★★매뉴얼 위치까지 보여 주는 명령
man 섹션 번호, man -k / -f★★설정 파일 형식은 몇 번 섹션인가
shutdown 옵션 (-h, -r, -c, -k, +분)★★10분 뒤 재부팅 명령
date·cal★출력 형식

PART 1 · 디렉터리와 파일 다루기

1. 경로와 이동 — pwd · cd · ls

핵심 필기

  • 절대 경로: /(루트)부터 시작 — /home/kim/docs
  • 상대 경로: 현재 위치 기준 — docs, ./docs, ../lee
  • 특수 기호: . 현재 디렉터리, .. 상위 디렉터리, ~ 홈 디렉터리, ~lee lee의 홈, - 직전 디렉터리(cd에서)
명령뜻
pwd현재 작업 디렉터리의 절대 경로 출력 (Print Working Directory)
cd / cd ~홈 디렉터리로
cd ..상위로
cd -직전 디렉터리로 되돌아가기

ls 주요 옵션

옵션뜻
-a숨김 파일(.으로 시작) 포함 전부 (. 과 .. 포함)
-A. 과 .. 를 뺀 전부
-l자세히(long) — 권한, 링크 수, 소유자, 크기, 시각
-d디렉터리 자체의 정보 (안의 내용이 아니라)
-h크기를 K, M, G로 (-l과 함께)
-i아이노드 번호
-R하위 디렉터리까지 재귀
-t / -S / -r시간순 / 크기순 / 역순
-F종류 표시 기호: / 디렉터리, * 실행 파일, @ 심볼릭 링크, | 파이프, = 소켓
$ ls -ld /etc
drwxr-xr-x 98 root root 4096 Oct 30 09:12 /etc
$ ls -a
.  ..  .bashrc  .profile  docs

2. 만들기 · 복사 · 이동 · 삭제

핵심 필기

명령주요 옵션예
mkdir-p 부모 디렉터리까지 함께 생성, -m 권한 지정mkdir -p a/b/c, mkdir -m 700 secret
rmdir빈 디렉터리만 삭제, -p 부모까지rmdir -p a/b/c
cp-r/-R 디렉터리 재귀, -i 덮어쓰기 확인, -f 강제, -p 권한·소유자·시간 보존, -a 보관(-dR --preserve=all), -u 더 새로울 때만, -b 백업, -l/-s 복사 대신 하드/심볼릭 링크cp -r dir1 dir2
mv-i 확인, -f 강제, -n 덮어쓰지 않음, -u, -bmv a.txt b.txt (이름 변경)
rm-r 재귀, -f 묻지 않고 강제, -i 하나씩 확인, -d 빈 디렉터리rm -rf old/
touch빈 파일 생성 또는 시간 정보 갱신, -a 접근 시간만, -m 수정 시간만, -t [[CC]YY]MMDDhhmm[.ss] 시각 지정, -r 파일 그 파일의 시각으로, -c 없으면 만들지 않음touch -t 202601011200 old.txt
$ mkdir -p a/b/c
$ rmdir a
rmdir: failed to remove 'a': Directory not empty
$ rmdir -p a/b/c          # c → b → a 순서로 지운다
$ touch -t 202601011200 old.txt
$ ls -l old.txt
-rw-r--r-- 1 root root 0 Jan  1  2026 old.txt

3. 링크 — 하드 링크와 심볼릭 링크

핵심 필기

구분하드 링크 ln 원본 링크심볼릭 링크 ln -s 원본 링크
아이노드원본과 같은 번호새 아이노드(자기만의 파일)
내용같은 데이터를 가리키는 또 하나의 이름원본의 경로 문자열을 저장
ls -l 표시일반 파일 -, 링크 수 증가l, 링크 -> 원본, 권한 rwxrwxrwx
원본 삭제·이동그대로 읽힘 (링크 수만 감소)깨진 링크(dangling)
디렉터리 대상불가가능
다른 파일 시스템불가가능
크기원본과 같음경로 길이(바이트)
$ echo hello > orig.txt
$ ln orig.txt hard.txt
$ ln -s orig.txt soft.txt
$ ls -li orig.txt hard.txt soft.txt
1729015 -rw-r--r-- 2 root root 6 Oct 30 17:20 hard.txt
1729015 -rw-r--r-- 2 root root 6 Oct 30 17:20 orig.txt
1729016 lrwxrwxrwx 1 root root 8 Oct 30 17:20 soft.txt -> orig.txt
$ mv orig.txt moved.txt
$ cat hard.txt
hello
$ cat soft.txt
cat: soft.txt: No such file or directory

같은 아이노드를 orig.txt와 hard.txt 두 이름이 가리키는 하드 링크와, 자기 아이노드에 원본 경로 문자열만 담은 심볼릭 링크를 나란히 놓고 원본을 지웠을 때의 결과를 비교한 그림

그림 4-1 · 하드 링크와 심볼릭 링크 — 누르면 원본 크기로 열린다.

4. 파일 내용 보기

명령뜻 / 옵션
cat내용 전체 출력·파일 합치기, -n 모든 줄 번호, -b 빈 줄 제외 번호, -s 연속 빈 줄 하나로
tac거꾸로(마지막 줄부터) 출력
nl줄 번호 붙여 출력
more한 화면씩, 앞으로만 (Space 다음 화면, Enter 한 줄, b 뒤로 일부, q 종료)
less한 화면씩, 앞뒤 자유 이동 (b·PageUp 뒤로, /문자열 검색, n·N 다음·이전, g·G 처음·끝, q 종료)
head앞부분, 기본 10줄, -n 숫자 또는 -숫자, -c 바이트
tail뒷부분, 기본 10줄, -n 숫자, -n +숫자(그 줄부터 끝까지), -f 내용이 추가되는 대로 계속 출력
file파일 종류 판별
$ seq 1 20 > n.txt
$ head -3 n.txt
1
2
3
$ tail -n +19 n.txt
19
20
$ tail -f /var/log/messages      # 로그 실시간 감시, Ctrl+C로 종료
$ file orig.txt soft.txt /etc /dev/null
orig.txt:    ASCII text
soft.txt:    symbolic link to orig.txt
/etc:        directory
/dev/null:   character special (1/3)

5. 파일 찾기 — find · locate · which · whereis

핵심 필기

find 경로 조건 동작 — 실제 디렉터리를 뒤져서 찾는다(느리지만 정확).

조건뜻예
-name / -iname이름(와일드카드 가능) / 대소문자 무시find / -name '*.conf'
-typef 파일, d 디렉터리, l 심볼릭 링크, b c 장치find . -type l
-user / -group소유자 / 그룹find /home -user kim
-nouser / -nogroup소유자·그룹이 없는(삭제된 계정의) 파일
-perm-perm 644 정확히 일치, -perm -4000 해당 비트를 포함find / -perm -4000
-size+10M 초과, -10k 미만, c 바이트 k M Gfind / -size +100M
-mtime / -atime / -ctime수정 / 접근 / 상태 변경 후 n일. +7 7일 초과 전, -1 1일 이내find . -mtime -1
-newer 파일그 파일보다 최근에 수정된 것
-empty빈 파일·디렉터리
-maxdepth n검색 깊이 제한
-exec 명령 {} \;찾은 파일마다 명령 실행 ({} 자리에 파일 이름)find . -name '*.tmp' -exec rm {} \;
-ok 명령 {} \;-exec와 같지만 하나씩 확인 질문
$ find . -name '*.txt' -type f
./hard.txt
./n.txt
./orig.txt
$ find . -type l
./soft.txt
$ find . -name 't1' -exec ls -l {} \;
-rw-r--r-- 1 root root 3 Oct 30 17:20 ./t1
$ find / -perm -4000 -type f 2>/dev/null | head -3
/usr/bin/sudo
/usr/bin/chfn
/usr/bin/chsh
명령찾는 방식결과
locate 이름미리 만든 DB에서 검색 → 매우 빠름. DB 갱신은 updatedb(보통 하루 한 번 cron)방금 만든 파일은 updatedb 전까지 안 나옴
which 명령PATH 환경 변수에 있는 디렉터리에서 실행 파일 위치/usr/bin/ls
whereis 명령실행 파일 + 소스 + 매뉴얼 위치
type 명령셸 내장 명령·alias·외부 명령 구분cd is a shell builtin
$ which ls
/usr/bin/ls
$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
$ type cd
cd is a shell builtin

PART 2 · 입출력 재지정과 텍스트 가공

6. 리다이렉션과 파이프

핵심 필기

번호스트림기본 장치
0표준 입력 (stdin)키보드
1표준 출력 (stdout)화면
2표준 에러 (stderr)화면
기호뜻예
>표준 출력을 파일로 (덮어쓰기)ls > list.txt
>>표준 출력을 파일 끝에 추가echo two >> f
<파일을 표준 입력으로wc -l < f
<< 끝문자here document — 끝문자가 나올 때까지를 입력으로cat << EOF
2>표준 에러를 파일로ls nofile 2> err.txt
2>>표준 에러를 파일 끝에 추가
2>&1표준 에러를 표준 출력이 가는 곳으로cmd > out.txt 2>&1
&>표준 출력과 에러를 함께 (bash)cmd &> all.txt
|앞 명령의 출력을 뒤 명령의 입력으로 (파이프)ps -ef | grep sshd
tee 파일화면에도 출력하면서 파일에도 저장ls | tee list.txt
/dev/null버리는 곳cmd 2> /dev/null
$ echo one > f
$ echo two >> f
$ cat f
one
two
$ wc -l < f
2
$ ls orig.txt nofile > out.txt 2>&1
$ cat out.txt
ls: cannot access 'nofile': No such file or directory
orig.txt
$ ls orig.txt nofile 2>&1 > o2.txt     # 순서를 바꾸면
ls: cannot access 'nofile': No such file or directory
$ cat o2.txt
orig.txt
  • 명령 연결: ; 앞뒤 순서대로 실행, && 앞이 성공했을 때만 뒤 실행, || 앞이 실패했을 때만 뒤 실행.
  • set -o noclobber를 켜면 >가 기존 파일을 덮어쓰지 않는다(>|로 강제).

7. 텍스트 가공 — grep · wc · sort · uniq · cut · tr

핵심 필기

grep 패턴 파일 — 패턴이 들어 있는 줄 출력

옵션뜻
-i대소문자 무시
-v일치하지 않는 줄
-n줄 번호 표시
-c일치하는 줄 수만
-l일치하는 파일 이름만
-w / -x단어 단위 / 줄 전체 일치
-r하위 디렉터리까지
-E확장 정규식 (egrep) — |, +, ?, {n}
-F정규식 없이 고정 문자열 (fgrep)
-o일치한 부분만

정규식 기본: ^ 줄 시작, $ 줄 끝, . 아무 한 글자, * 앞 글자 0회 이상, [abc] 그중 하나, [^abc] 그 외.

명령옵션
wc-l 줄 수, -w 단어 수, -c 바이트 수, -m 문자 수. 옵션 없으면 줄 · 단어 · 바이트 순
sort-r 역순, -n 숫자 크기순, -t 구분자, -k 필드, -u 중복 제거, -f 대소문자 무시, -o 파일 결과 저장
uniq인접한 중복 줄을 하나로, -c 개수, -d 중복된 것만, -u 중복 없는 것만
cut-d 구분자 -f 필드, -c 문자 위치, -b 바이트
tr문자 바꾸기 tr 'a-z' 'A-Z', -d 삭제, -s 연속된 같은 문자 하나로 — 파일 인자를 받지 않고 표준 입력만
$ cat users.txt
kim:x:1001:1001::/home/kim:/bin/bash
lee:x:1002:1002::/home/lee:/bin/sh
park:x:1003:1003::/home/park:/bin/bash
choi:x:1004:1004::/home/choi:/bin/bash
$ wc users.txt
  4   4 150 users.txt
$ grep -c bash users.txt
3
$ grep -v bash users.txt
lee:x:1002:1002::/home/lee:/bin/sh
$ grep -n '^p' users.txt
3:park:x:1003:1003::/home/park:/bin/bash
$ cut -d: -f1,7 users.txt
kim:/bin/bash
lee:/bin/sh
park:/bin/bash
choi:/bin/bash
$ cut -d: -f7 users.txt | sort | uniq -c
      3 /bin/bash
      1 /bin/sh
$ sort -t: -k3 -nr users.txt | head -2
choi:x:1004:1004::/home/choi:/bin/bash
park:x:1003:1003::/home/park:/bin/bash
$ echo "Hello Linux" | tr 'a-z' 'A-Z'
HELLO LINUX
$ echo "a  b   c" | tr -s ' '
a b c

PART 3 · 기타 필수 명령어

8. 날짜 · 달력 · 화면 · 시스템 정보

명령뜻
date현재 날짜·시간, +형식으로 출력 형식 지정 (%Y 연, %m 월, %d 일, %H 시, %M 분, %S 초, %A 요일, %j 연중 일수)
date MMDDhhmm[[CC]YY][.ss](root) 시스템 시각 설정
cal이번 달 달력, cal 월 연도, cal 연도(1년치), -j 연중 일수
clear화면 지우기 (Ctrl+L)
uname시스템 정보, -a 전부, -r 커널 버전, -s 커널 이름, -m 하드웨어, -n 호스트 이름
hostname호스트 이름 확인·설정
history명령 기록 (6편에서 자세히)
$ date
Fri Oct 30 17:21:33 UTC 2026
$ date '+%Y-%m-%d %H:%M:%S'
2026-10-30 17:21:33
$ cal 10 2026
    October 2026
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
$ uname -r
6.18.44-fc-v185

9. 도움말 — man · info · whatis · apropos

명령뜻
man 명령매뉴얼 페이지 (less로 열림, / 검색, q 종료)
man 섹션 이름특정 섹션 — man 5 passwd는 /etc/passwd 파일 형식
man -k 키워드 = apropos키워드가 들어간 매뉴얼 목록 검색
man -f 이름 = whatis그 이름의 한 줄 설명
info 명령GNU info 문서 (노드 단위, 하이퍼링크 이동)
명령 --help짧은 사용법
섹션내용
1일반 사용자 명령 (ls, passwd)
2시스템 콜 (open, fork)
3C 라이브러리 함수 (printf)
4장치 파일 (/dev)
5파일 형식·설정 파일 (/etc/passwd, fstab)
6게임
7기타 (규약, 매크로)
8시스템 관리자 명령 (useradd, mount)

10. 시스템 종료와 재부팅

명령뜻
shutdown -h now지금 종료(전원 끄기)
shutdown -r now지금 재부팅
shutdown -h +1010분 뒤 종료
shutdown -r 22:00 "점검"22시에 재부팅, 접속자에게 메시지
shutdown -c예약된 종료 취소
shutdown -k +5실제로 끄지 않고 경고 메시지만 보냄
halt / poweroff시스템 정지 / 전원 끄기
reboot재부팅
init 0 / init 6런레벨 0(종료) / 6(재부팅)
systemctl poweroff / systemctl rebootsystemd 방식
sync메모리 버퍼의 내용을 디스크에 즉시 기록

PART 4 · 기출 유형 연습

하드 링크와 심볼릭 링크에 대한 설명으로 옳지 않은 것은?

보기를 선택해 주세요.
힌트 1 보기

아이노드 번호는 파일 시스템 안에서만 의미가 있다.

정답·해설 보기

C. 하드 링크는 같은 파일 시스템 안의 일반 파일에만 만들 수 있다. 디렉터리나 다른 파일 시스템(파티션)을 가리키려면 심볼릭 링크를 쓴다.

명령의 실행 결과는 화면에 보이게 두고, 에러 메시지만 /dev/null로 버리는 명령은?

보기를 선택해 주세요.
힌트 1 보기

표준 에러의 번호는 2다.

정답·해설 보기

B. A·D는 정상 결과를 버리고 에러를 화면에 남긴다. C는 둘 다 버린다.

현재 디렉터리 아래에서 7일 이내에 수정된 일반 파일을 찾는 명령으로 옳은 것은?

보기를 선택해 주세요.
힌트 1 보기

-는 "이내", +는 "초과(그보다 오래 전)"다.

정답·해설 보기

C. -type f(일반 파일) + -mtime -7(수정 7일 이내). A는 7일보다 오래된 파일, B는 디렉터리, D는 접근 시간 기준이다.

다음 명령의 결과로 출력되는 숫자는?

$ printf 'apple\nbanana\napple\ncherry\nbanana\napple\n' | sort | uniq | wc -l
보기를 선택해 주세요.
힌트 1 보기

sort로 같은 줄을 붙여 놓은 뒤 uniq가 중복을 지운다.

정답·해설 보기

C. 정렬 후 중복을 지우면 apple, banana, cherry 세 줄. sort 없이 uniq만 썼다면 인접 중복이 없어 6줄이 그대로 나온다.

/etc/passwd에서 사용자 이름과 로그인 셸만 출력하는 명령으로 옳은 것은?

보기를 선택해 주세요.
힌트 1 보기

passwd는 콜론으로 구분된 7개 필드다. cut의 기본 구분자는 탭이다.

정답·해설 보기

A. -d로 구분자 콜론을, -f로 1·7번째 필드를 지정한다. B는 1·7번째 "글자", C는 탭 기준이라 구분이 안 되고, D의 tr은 필드를 자르는 명령이 아니다.

다음 중 명령어와 설명의 연결이 옳지 않은 것은?

보기를 선택해 주세요.
힌트 1 보기

키워드 검색은 apropos(man -k), 한 줄 설명은 whatis(man -f)다.

정답·해설 보기

D. whatis는 정확히 그 이름의 한 줄 설명을 보여 준다. 키워드 검색은 apropos 또는 man -k.

사용자에게 경고 메시지만 보내고 시스템은 실제로 종료하지 않는 명령은?

보기를 선택해 주세요.
힌트 1 보기

네 옵션 c·k·h·r의 뜻을 각각 떠올린다.

정답·해설 보기

B. -k는 경고만 보낸다. -c는 예약 취소, -h는 종료, -r은 재부팅.

단원 마무리

주제꼭 외울 것
이동·목록cd - 직전 디렉터리, ls -a -l -d -i -R -h -F
만들기·삭제mkdir -p, rmdir(빈 디렉터리만), cp -r -p -a -i, mv(이동·이름 변경), rm -r -f -i, touch -t
링크하드: 같은 아이노드, 원본 삭제 후에도 유지, 디렉터리·타 FS 불가 / 심볼릭: ln -s, 경로 저장, 원본 삭제 시 깨짐
보기cat -n, more(앞으로만), less(앞뒤·검색), head/tail -n, tail -f
찾기find -name -type -user -perm -size -mtime -exec, locate+updatedb, which(PATH), whereis(실행·소스·매뉴얼)
재지정> 덮어쓰기, >> 추가, 2> 에러, 2>&1, << here doc, | 파이프, tee
가공grep -i -v -n -c -l -r -E, wc -l -w -c, sort -n -r -t -k -u, uniq -c -d -u, cut -d -f -c, tr -d -s
도움말man 1·5·8 섹션, man -k = apropos, man -f = whatis, info
종료shutdown -h -r -c -k +분, halt, poweroff, reboot, init 0/6

책을 덮고 꺼내 보기

  • 직전 작업 디렉터리로 돌아가는 명령은 다.
  • 하드 링크는 원본과 가 같다.
  • 심볼릭 링크를 만드는 명령은 다.
  • 표준 출력과 표준 에러를 모두 한 파일로 보내려면 > 파일 뒤에 을 붙인다.
  • uniq는 중복 줄만 제거하므로 보통 sort와 함께 쓴다.
  • 키워드로 매뉴얼을 검색하는 명령은 또는 다.
하드 링크와 심볼릭 링크의 차이 네 가지는?

아이노드(같음/다름), 원본 삭제 시(유지/깨짐), 디렉터리 대상(불가/가능), 다른 파일 시스템(불가/가능).

find -perm 644와 -perm -4000의 차이는?

644는 권한이 정확히 644인 것, -4000은 SetUID 비트를 포함한 모든 것(나머지 비트는 상관없음).

which, whereis, locate의 차이는?

which는 PATH에서 실행 파일 위치, whereis는 실행 파일·소스·매뉴얼 위치, locate는 updatedb로 만든 DB에서 이름으로 빠르게 검색.

표준 입력·출력·에러의 번호와 리다이렉션 기호는?

0 stdin(<), 1 stdout(>, >>), 2 stderr(2>, 2>>). 둘 다는 > f 2>&1 또는 &> f.

wc를 옵션 없이 실행하면 어떤 순서로 출력하는가?

줄 수, 단어 수, 바이트 수, 파일 이름.

man 섹션 1, 5, 8은 각각 무엇인가?

1 일반 사용자 명령, 5 파일 형식·설정 파일, 8 시스템 관리 명령.

shutdown의 -h, -r, -c, -k는?

-h 종료, -r 재부팅, -c 예약 취소, -k 경고 메시지만(실제 종료 안 함).

다음으로 갈 기준: 파이프로 이어진 명령 한 줄을 보고 결과를 예측하고, 링크 두 종류의 차이를 아이노드로 설명할 수 있으면 다음 편으로 간다: 5편 · 파일 시스템 명령어와 물리 구조.

정답과 해설

  1. mkdir -p a/b/c — 없는 부모 디렉터리(a, a/b)까지 함께 만든다.
  2. 아이노드 번호가 같다. 원본을 지워도 같은 아이노드를 가리키는 이름이 남아 있으므로 내용이 그대로 출력된다(링크 수만 1 줄어든다).
  3. find /home -user lee -type f
  4. whereis (예: whereis passwd).
  5. 2>> — 예: 명령 2>> err.log.
  6. 3 — 입력 b, a, b는 인접한 중복이 없으므로 uniq 후에도 세 줄 그대로다.
  7. man -k partition, apropos partition.
  8. 예약: shutdown -r +30, 취소: shutdown -c.
오늘도 한 걸음 앞으로.

내용을 이해했다면 학습 완료를 체크해 주세요.

학습 기록은 현재 브라우저에 저장됩니다.
HJS / STUDY한지석