Linux cat ๋ช ๋ น์ด๋ ํ์ผ ๋ด์ฉ ์ถ๋ ฅ, ์ฌ๋ฌ ํ์ผ ๋ณํฉ, ๋ฆฌ๋ค์ด๋ ์ ์ ํตํ ์๋ก์ด ํ์ผ ์์ฑ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ค์ ์์ ์ ์ต์ ์ ๋ชจ๋ ์ ๋ฆฌํ๋ค.
“Linux ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ฒฐ๊ตญ cat ์์์ ๋ฉ์ถฐ ์๊ฒ ๋ฉ๋๋ค.
ํ์ผ์ ํ์ธํ๊ณ , ์ด์ด ๋ถ์ด๊ณ , ์คํฌ๋ฆฝํธ ์์์ ํ ์คํธ๋ฅผ ๋ง๋ค๊ณ …
์ฒ์์ ๋จ์ํ์ง๋ง ๊น์ด๊ฐ ์๋ ๋ช ๋ น์ด๊ฐ ๋ฐ๋ก cat์ ๋๋ค.”
Linux์์ ํ๋ฃจ๋ผ๋ ํฐ๋ฏธ๋์ ์ด์ด๋ณธ ๊ฐ๋ฐ์๋ผ๋ฉด cat์ ๋ชจ๋ฅผ ์ ์์ต๋๋ค.
ํ์ผ ๋ด์ฉ์ ๋ณด๋ ๋ฐ์ ๊ทธ์น์ง ์๊ณ , ์ฌ๋ฌ ํ์ผ์ ํฉ์น๊ฑฐ๋ ์๋ก์ด ํ์ผ์ ๋ง๋ค๊ณ , ํ์ดํ๋ผ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ตฌ์ฑํ ๋๋ ๋น ์ง์ง ์๋ ๋ช
๋ น์ด์ฃ .
ํนํ OpenWrt·์๋ฒ ๋๋ Linux·์๋ฒ ์ด์ ํ๊ฒฝ์์๋ cat์ด ๊ฑฐ์ ‘๋ฐ์ฌ์ ์ผ๋ก’ ๋์ฌ ๋งํผ ์์ฃผ ๋ฑ์ฅํฉ๋๋ค. ์ด ๊ธ์์๋ ์ค๋ฌด ๊ธฐ์ค์ผ๋ก cat์ ์ด๋ป๊ฒ ์ฐ๋์ง, ์ด๋ค ์ค์์ ์ฃผ์ํด์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ cat์ด Linux ํ๋ฆ์ ์ดํดํ๋ ํต์ฌ์ธ์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
1. cat ๋ช ๋ น์ด๊ฐ ์ค์ํ ์ด์

Linux์์ ํ์ผ์ ๋ค๋ฃจ๋ค ๋ณด๋ฉด ๋ค์ ๊ฐ์ ์ํฉ์ด ๊ณ์ ๋ํ๋ฉ๋๋ค.
- ์ค์ ํ์ผ์ ๋น ๋ฅด๊ฒ ํ์ธํด์ผ ํ ๋
- ์ฌ๋ฌ ๋ก๊ทธ ํ์ผ์ ํ๋๋ก ํฉ์ณ์ผ ํ ๋
- ์คํฌ๋ฆฝํธ์์ ์ฌ๋ฌ ์ค ํ ์คํธ๋ฅผ ์ฆ์์์ ๋ง๋ค์ด์ผ ํ ๋
- ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๋ช ๋ น์ด๋ก ๋๊ฒจ ๋ถ์ํด์ผ ํ ๋
์ด๋ด ๋ ๊ฐ์ฅ ๋จผ์ ์์ด ๊ฐ๋ ๋ช ๋ น์ด๊ฐ cat์ ๋๋ค.
cat์ ์๋ ์๋ฏธ์ธ concatenate(์ฐ๊ฒฐํ๋ค)์ฒ๋ผ,
Linux์์๋ “ํ ์คํธ ํ๋ฆ์ ์ฐ๊ฒฐํด ๋ณด์ฌ์ฃผ๋ ๋๊ตฌ”๋ผ๋ ์ฒ ํ์ผ๋ก ๋์ํฉ๋๋ค.
2. cat ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
cat [์ต์
] ํ์ผ๋ช
cat file.txt
๋จ์ํ์ง๋ง ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํํ์
๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฑด “์ฝ์ด์ ์ถ๋ ฅํ๋ค”๊ฐ ์๋๋ผ ์
๋ ฅ(stdin)์ ๋ฐ์์ ์ถ๋ ฅ(stdout)์ผ๋ก ์ ๋ฌํ๋ค๋ ํ๋ฆ์
๋๋ค.
3. cat ์ค์ ํ์ฉ

1) ์ฌ๋ฌ ํ์ผ ๋ด์ฉ์ ํ ๋ฒ์ ์ถ๋ ฅ
cat file1 file2 file3
์ถ๋ ฅ์ file1 → file2 → file3 ์์ ๊ทธ๋๋ก ๋ํ๋ฉ๋๋ค.
2) ํ์ผ์ ์ ํ์ผ๋ก ์ ์ฅํ๊ธฐ (๋ฆฌ๋ค์ด๋ ์ )
cat file1 > copy.txt
- copy.txt๊ฐ ์์ผ๋ฉด ์๋ก ๋ง๋ฆ
- copy.txt๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๋ฎ์ด์ด๋ค(overwrite)
3) ๊ธฐ์กด ํ์ผ์ ๋ด์ฉ์ ๋ง๋ถ์ด๊ธฐ(append)
cat file1 >> result.log
>>๋ ๊ธฐ์กด ํ์ผ ๋์ ๋ด์ฉ์ ์ด์ด ๋ถ์ธ๋ค.
4) ์ฌ๋ฌ ํ์ผ์ ๋ณํฉํด์ ํ๋๋ก ๋ง๋ค๊ธฐ
cat a.txt b.txt c.txt > merged.txt
๋ณํฉ ์์๋ ์
๋ ฅํ ํ์ผ ์์์ ๋์ผํ๋ค.
์ค์ ํ๊ฒฝ์์๋ config ์กฐํฉ, ๋ก๊ทธ ํฉ์ฐ ๋ชฉ์ ์ด ๋ง์ต๋๋ค.
5) cat์ผ๋ก ์๋ก์ด ํ์ผ ์์ฑํ๊ธฐ (์ ๋ ฅ๋ฐ์ ํ ์คํธ ์ ์ฅ)
cat > memo.txt
Hello world
This is memo.
^D
Ctrl + D๋ก ์
๋ ฅ์ ์ข
๋ฃํ๋ฉด memo.txt๋ก ์ ์ฅ๋๋ค.
SSH ํ๊ฒฝ์์ ์์ ์ค์ ํ์ผ ์์ฑ ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
6) cat์ ํ์ฉํ here-document

๋ฉํฐ๋ผ์ธ ํ ์คํธ๋ฅผ ํ์ผ๋ก ์ ์ฅํ ๋ ์ ์ฉํ๋ค.
cat <<EOF > config.txt
line 1
line 2
line 3
EOF
์๋ํ ์คํฌ๋ฆฝํธ, Makefile, OpenWrt ๋น๋ ์คํฌ๋ฆฝํธ์์ ๋งค์ฐ ์์ฃผ ๋ฑ์ฅํฉ๋๋ค.
7) cat + ํ์ดํ
์:
cat /proc/cpuinfo | grep model
ํ์ดํ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ์คํฌ๋ฆฝํธ ๊ฐ๋ ์ฑ์ ๋์ผ ๋ ์ ์ฉํฉ๋๋ค.
4. cat ์ฃผ์ ์ต์ ์ ๋ฆฌ
cat -n file.txt # ๋ชจ๋ ์ค ๋ฒํธ
cat -b file.txt # ๋น ์ค ์ ์ธ ๋ฒํธ
cat -s file.txt # ๋น ์ค ์์ถ
cat -A file.txt # ๋ณด์ด์ง ์๋ ๋ฌธ์ ํ์ธ
ํนํ -A ์ต์ ์ JSON/YAML ๊ณต๋ฐฑ ์ค๋ฅ ๋๋ฒ๊น ์ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
5. cat ์ฌ์ฉ ์ ๋ฐ์ํ๋ ์ค๋ฅ์ ํด๊ฒฐ๋ฒ
1) No such file or directory
ํด๋น ํ์ผ์ด ์์ ๋ ๋ฐ์ํ๋ค.
cat unknown.log
ํด๊ฒฐ:
ls
๋จผ์ ํ์ผ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํด์ผ ํ๋ค.
2) Permission denied
๊ถํ์ด ์์ ๊ฒฝ์ฐ:
sudo cat /var/log/syslog
๋ก๊ทธ ํ์ผ์ด๋ ์์คํ ํ์ผ์ ์ด ๋ ์์ฃผ ๋ฐ์ํ๋ค.
3) ํฐ๋ฏธ๋์ ๋๋ฌด ๋ง์ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋ ๋ฌธ์
๊ธด ํ์ผ์ cat์ผ๋ก ์ด๋ฉด ์คํฌ๋กค์ด ๋งค์ฐ ๊ธธ์ด์ง ์ ์๋ค.
๋์ :
cat file | less
cat file | more
๋๋ ์ง์ less ์ฌ์ฉ:
less file
6. cat์ ํ์ฉํ ๊ฐ๋ฐ ์ค์ ์๋๋ฆฌ์ค
Linux ๊ฐ๋ฐ์์ cat์ ๋จ์ ํ์ผ ์ถ๋ ฅ ์ด์์ ์ญํ ์ ํ๋ค.
์๋๋ ์ค์ ์ด์/๊ฐ๋ฐ ํ๊ฒฝ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ฌ๋ก๋ค์ด๋ค.
1) ๋ก๊ทธ ํ์ธ
cat /var/log/messages
cat /tmp/debug.log
ํนํ OpenWrt ๊ฐ๋ฐ ์:
cat /tmp/system.log
2) ์ค์ ํ์ผ ํ์ธ
cat /etc/config/network
cat /etc/shadow
3) ๋๋ฒ๊น ์ํ ์ฅ์น ํ์ผ ๋ด์ฉ ํ์ธ
cat /proc/meminfo
cat /proc/cpuinfo
cat /sys/class/net/eth0/statistics/tx_bytes
ํ๋ก์ธ์ค ์ํ, CPU ์ ๋ณด, ๋คํธ์ํฌ ํธ๋ํฝ ๋ฑ์ ๋ก์ฐ๋ ๋ฒจ์์ ์ง์ ํ์ธํ ์ ์๋ค.
4) ๋น๋ ๋ก๊ทธ ํ์ธ ๋ฐ ๋ณํฉ
cat build.log.* > total.log
5) OpenWrt init ์คํฌ๋ฆฝํธ ๋๋ฒ๊น
cat /etc/init.d/myservice
6) ํ ์คํธ ํจํด ์ฐ์ ์ถ๋ ฅ
์ฌ๋ฌ ์ฅ๋น์ ์ค์ ์ ๋ณด๋ฅผ ํ๋๋ก ๋ชจ์ ๋ ์ ์ฉํ๋ค.
cat *.conf > full_config.txt
7. cat๊ณผ grep, awk, sed์ ๊ด๊ณ
- cat → ์ถ๋ ฅ
- grep → ์ฐพ๊ธฐ
- awk → ๊ฐ๊ณต
- sed → ์์
์กฐํฉํ๋ฉด ํจ์ฌ ๊ฐ๋ ฅํฉ๋๋ค.
์์ฃผ ์ฐ๋ ์กฐํฉ:
cat file | grep foo
cat conf | awk '{print $1}'
cat log | sed 's/error/ERR/g'
ํ์ง๋ง, cat์ ์๋ตํ๊ณ ๋ฐ๋ก ๋ค์ ๋ช ๋ น์ด๋ก ์ฃผ๋ ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ค.
8. cat์ ๋ฐ๋์ ํ์ํ๊ฐ? (UUOC ๋ ผ์)
Linux ์ปค๋ฎค๋ํฐ์์๋ “UUOC(Useless Use of Cat)” ๋ ผ์์ด ์๋ค.
์)
cat file | grep foo
๋ ๋ค์๊ณผ ๋์ผํ๋ค.
grep foo file
ํ์ง๋ง cat์ ์ฌ์ฉํ๋ฉด ๋ค์ ์ฅ์ ์ด ์๋ค:
- ํ์ดํ ํ๋ฆ์ ๋ช ํํ๊ฒ ํํ
- ์ฌ๋ฌ ํ์ผ์์ stdin ์ฒ๋ฆฌ ๊ฐํธ
- multi-process ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ๊ฐ๋ ์ฑ ์ฆ๊ฐ
์ฆ, ๋ถํ์ํ ๋๋ ์์ง๋ง
์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ cat์ ์ฐ๋ ๊ฒ์ด ๋ ์ง๊ด์ ์ผ ๋๋ ๋ง๋ค.
9. cat ๋ช ๋ น์ด ํต์ฌ ์์ฝ
- cat = concatenate → ํ์ผ์ “์ฐ๊ฒฐํ์ฌ ์ถ๋ ฅ”
- ํ์ผ ๋ด์ฉ ์ถ๋ ฅ, ๋ณํฉ, ํ์ผ ์์ฑ๊น์ง ๊ฐ๋ฅ
- ๋ฆฌ๋ค์ด๋ ์ ๊ณผ ํจ๊ป ์ฐ๋ฉด ๊ฐ๋ ฅํ ํ์ผ ์์ฑ ๋๊ตฌ
- ์ต์ -n, -b, -s, -A๊ฐ ์ค์ ์์ ๋งค์ฐ ์ ์ฉ
- ์คํฌ๋ฆฝํธ ์๋ํ์์ here-document์ ํจ๊ป ์์ฃผ ์ฌ์ฉ
- grep/awk/sed์ ํจ๊ป ์ฐ๋ฉด ๋์ฑ ๊ฐ๋ ฅํด์ง๋ค
10. ์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
Q1. cat์ผ๋ก ํ์ผ์ ์์ฑํ ์ ์๋์?
๋ค. ๊ฐ๋ฅํ๋ค.
๋ค๋ง ์ผ๋ฐ์ ์ผ๋ก๋ ๋ฆฌ๋ค์ด๋ ์
์ ์ด์ฉํ๋ค.
์:
cat > file.txt
Ctrl+D๋ก ์ข ๋ฃ ์ ์ ํ์ผ ์์ฑ.
Q2. cat์ผ๋ก ํ์ผ ๋์ ๋ด์ฉ ์ถ๊ฐํ๋ ค๋ฉด?
cat text.txt >> out.log
Q3. cat์ ์ฌ์ฉํด ํ์ผ ๋ณํฉ์ด ๊ฐ๋ฅํ๊ฐ์?
๋ค.
cat f1 f2 f3 > merged.txt
์ ๋ ฅํ ์์๋๋ก ํ์ผ์ด ํฉ์ณ์ง๋ค.
Q4. cat์ผ๋ก ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์ด์ด๋ ๋๋์?
๊ฐ๋ฅํ์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๊ฐ ํฐ๋ฏธ๋์ ๊นจ๊ฑฐ๋, ์ ์ด ๋ฌธ์๊ฐ ์คํ๋ ์ ์๋ค.
๋์ xxd, hexdump, strings ๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
Q5. cat์ด ๋๋ฌด ๊ธธ๊ฒ ์ถ๋ ฅํด์ ํ๋ฉด์ด ๋ฐ๋ฆด ๋๋?
cat file | less
๋๋:
less file
Q6. cat์ ์ "์ ์ฉํ cat"๊ณผ "์ธ๋ชจ์๋ cat" ๋ ผ์์ด ์๋์?
๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ ๋ฐฉ์ ๋๋ฌธ์ด๋ค.
๋ถํ์ํ cat:
cat file | grep foo
ํ์ํ cat:
cat file1 file2 | grep foo
์ฆ, “์ฌ๋ฌ ํ์ผ ์ฒ๋ฆฌ + ํ์ดํ ์กฐํฉ”์์๋ cat์ด ํจ์ฌ ๋ช ํํ๋ค.
Q7. cat๊ณผ tac์ ์ฐจ์ด๋?
- cat: ์์์ ์๋๋ก ์ถ๋ ฅ
- tac: ์๋์์ ์๋ก(์ญ์) ์ถ๋ ฅ
Q8. cat์ผ๋ก ์ค ๋ฒํธ๋ฅผ ํ์ํ๋ ค๋ฉด?
cat -n file.txt
cat์ด ๊ฐ๋ฐ์์๊ฒ ์ฃผ๋ ์ค์ง์ ํจ๊ณผ
“ํ์ผ ํ๋ฆ์ ์ดํดํ๋ฉด Linux๊ฐ ๋ณด์ธ๋ค.”
cat์ ์ ๋๋ก ์ดํดํ๋ฉด Linux์ stdin, stdout, redirection ๊ฐ๋
์ด ๋ช
ํํด์ง๋ฉฐ
ํ
์คํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ์ ์ ์ฒด ํ๋ฆ์ ํ์
ํ ์ ์๊ฒ ๋๋ค.
์ฆ, cat์ ๋จ์ํ ๋ช
๋ น์ด๊ฐ ์๋๋ผ
Linux ํ
์คํธ ์ฒ๋ฆฌ์ ์ถ๋ฐ์ ์ด๋ค.