...

๋ฆฌ๋ ์ค ํ์ผ ๋ช ๋ น์ด
๋ฆฌ๋ ์ค์ ๋๋ ํ ๋ฆฌ ๋ํ ์ผ์ข ์ ํ์ผ์ด๊ธฐ ๋๋ฌธ์, ๋๋ ํ ๋ฆฌ ๋ช ๋ น์ด์ ํ์ผ ๋ช ๋ น์ด๊ฐ ๊ฐ์ด ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
ํ์ผ ๊ด๋ฆฌ ๋ช ๋ น์ด ์ข ๋ฅ
ํ์ผ ์ ๋ณด ์ถ๋ ฅ (ls)
$ ls -al # : ํ์ผ์ ์์ธ์ ๋ณด
$ ls -t # : ํ์ผ๋ค์ ์์ฑ์๊ฐ์(์ ์ผ ์ต์ ๊ฒ๋ถํฐ)์ผ๋ก ํ์
$ ls -F # : ํ์ผ ํ์ ์ ๋ง์ง๋ง ์ ํ์ ๋ํ๋ด๋ ํ์ผ๋ช
์ ๋์ ํ์ ('/' : ๋๋ ํฐ๋ฆฌ, '*' : ์คํํ์ผ, '@' : ๋งํฌ ๋ฑ๋ฑ,,,)


ํ์ผ/๋๋ ํ ๋ฆฌ ๋ณต์ฌ (cp)
# ํ์ผ์ ๋ณต์ฌํด ์๋ก์ด ํ์ผ ์์ฑ ๊ฐ๋ฅ
$ cp [๋ณต์ฌ๋์] [์ํ์ผ๋ช
]
# ํ์ผ์ ๋๋ ํ ๋ฆฌ ์์ ๋ณต์ฌ ๊ฐ๋ฅ
$ cp [๋ณต์ฌ๋์] [๋๋ ํ ๋ฆฌ๋ช
]
$ cp file1 file2 #: file1์ file2๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณต์ฌ
$ cp -f file1 file2 #: ๊ฐ์ ๋ณต์ฌ(file2๋ผ๋ ํ์ผ์ด ์ด๋ฏธ ์์ ๊ฒฝ์ฐ ๊ฐ์ ๋ก ๊ธฐ์กด file2๋ฅผ ์ง์ฐ๊ณ ๋ณต์ฌ ์งํ)
$ cp -r dir1 dir2 #: ๋๋ ํฐ๋ฆฌ ๋ณต์ฌ. ํด๋ ์์ ๋ชจ๋ ํ์ ๊ฒฝ๋ก์ ํ์ผ๋ค์ ๋ณต์ฌ
์ต์ | ์ค๋ช |
-r, -R, --recursive | ๋๋ ํฐ๋ฆฌ ๋ด ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ ๋ณต์ฌ (๋๋ ํ ๋ฆฌ ํ์ ํ์ผ๋ค ์น ๋ณต์ฌ) |
-i,--interactive | ์กด์ฌ ํ์ผ ๋ฎ์ด์ฐ๊ธฐ์ ์ ์ฌ์ฉ์ ํ์ธ๋ฐ์. |
-f,--force | ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ์ ๋ฎ์ด์ธ์ ์๋๊ฒฝ์ฐ ํด๋นํ์ผ ์ญ์ ํ ๋ค์ ์๋ |
-b | ๋์ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ ๋ ๊ธฐ์กด ํ์ผ๋ช ๋ค์ ~๋ถ์ฌ ๋ฐฑ์ |
-s,--symbolic-link | ํ์ผ ๋ณต์ฌํ๋ ๋์ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ. |
-p | ํ๊ฐ๊ถ ์์ ๊ถ๋ฑ์ ๋ณด์กดํ์ฌ ๋ณต์ฌ |
-v,--verbose | ํญ๋ชฉ ์ ๋ณด ์์ธ ์ถ๋ ฅ |
-d | ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฒด ๋ณต์ฌ |
-a,--archive | ๋ณต์ฌํ ๋ ์๋ณธํ์ผ์ด ๊ฐ๊ณ ์๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์งํ์ฌ ๋ณต์ฌ |
-l,--link | ํ์ผ์ ๋ณต์ฌํ์ง์๊ณ ํ๋๋งํฌ ์์ฑ |
-u,--update | ์๋ณธํ์ผ์ด ๋์ํ์ผ๋ณด๋ค ์ต์ ์ด๊ฑฐ๋ ๋์ํ์ผ์กด์ฌํ์ง ์์๋ ๋ณต์ฌ |
ํ์ผ/๋๋ ํ ๋ฆฌ ์ญ์ (rm)
rmdir๊ณผ ๋ค๋ฅด๊ฒ ๋๋ ํ ๋ฆฌ ์ญ์ ์ ์์ ํ์ผ์ด ์กด์ฌํด๋ ์ญ์ ๊ฐ๋ฅ
$ rm file1 # : file1์ ์ญ์
$ rm -f file1 # : file1์ ๊ฐ์ ์ญ์
$ rm -i file1 # : ์ญ์ ํ๊ธฐ์ ์ ์ฌ์ฉ์ ํ์ธ
$ rm -r dir # : dir ๋๋ ํฐ๋ฆฌ ์ญ์ (๋๋ ํฐ๋ฆฌ๋ -r ์ต์
์์ด ์ญ์ ๋ถ๊ฐ)
$ rm *[๊ณตํต์ผ๋ก ๋๋๋ ํ์ฅ์] # : ๊ณตํต์ผ๋ก ๋๋๋ ํ์ฅ์๋ก ๋๋๋ ํ์ผ ๋ชจ๋ ์ญ์
$ rm * # : ๋ชจ๋ ํ์ผ ์ญ์
ํ์ผ/๋๋ ํ ๋ฆฌ ์ด๋ (mv)
- ๊ธฐ๋ณธ์ ์ผ๋ก mv๋ ํ์ผ/๋๋ ํ ๋ฆฌ ์ด๋
$ mv file1 /dir # : file1 ํ์ผ์ dir ๋๋ ํฐ๋ฆฌ๋ก ์ด๋
$ mv file1 file2 file3 /dir # : ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ dir ๋๋ ํฐ๋ฆฌ๋ก ์ด๋
ํ์ผ/๋๋ ํ ๋ฆฌ ์ด๋ฆ๋ณ๊ฒฝ (mv)
- ๋จ, ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ด์์, ํ์ผ ์ด๋์ ์ด๋ฆ ๋ณ๊ฒฝ ํจ๊ณผ
# [๊ฐ์ ํด๋์์ ํ์ผ/๋๋ ํ ๋ฆฌ ์ด๋์ ์ด๋ฆ ๋ณ๊ฒฝ ํจ๊ณผ]
$ mv file1 file2 # : file1 ํ์ผ์ file2 ํ์ผ๋ก ์ด๋ฆ ๋ณ๊ฒฝ
$ mv /dir1 /dir2 # : dir1 ๋๋ ํฐ๋ฆฌ๋ฅผ dir2 ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ฆ ๋ณ๊ฒฝ
๋น ํ์ผ ์์ฑ & ์์ ๋ ์ง ๋ณ๊ฒฝ (touch)
- ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๋ ์ง ๋ณ๊ฒฝํ ๋ ์ฐ์ด๋ ๋ช ๋ น์ด
- ๋จ, ์กด์ฌํ์ง ์๋ ํ์ผ์ด๋ฉด, ํ์ผํฌ๊ธฐ๊ฐ 0์ธ ๋น ์ ํ์ผ ์์ฑ
- ๋๋ ํ ๋ฆฌ ์์ฑ : $ mkdir
- ํ์ผ ์์ฑ : $ touch / cat
- ๋ง์ผ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ์ด๋ผ๋ฉด, ์ต์ข ์์ ๊ธฐ๊ฐ ๋ณ๊ฒฝ
$ touch [option] filename
# -a : atime๋ง ๋ณ๊ฒฝ
# -m : mtime๋ง ๋ณ๊ฒฝ
# -t : ์ง์ ํ ํ์์คํฌํ ์ค์
# -r, --reference : ํ์ฌ์๊ฐ์ด ์๋ ์ง์ ํ ํ์ผ์ ํ์์คํฌํ๋ก ๋ณ๊ฒฝ
# -c, --no-create : ํ์ผ์ ์์ฑํ์ง์์.
$ touch filename # : filename์ ํ์ผ์ ์์ฑ
$ touch -c filename # : filename์ ์๊ฐ์ ํ์ฌ์๊ฐ์ผ๋ก ๊ฐฑ์
$ touch -t 202110291608 filename # : filename์ ์๊ฐ์ ๋ ์ง ์ ๋ณด(YYYYMMDDhhmm)๋ก ๊ฐฑ์ (20211029160 => 2021.10.29.16:08)
$ touch -r oldfile newfile # : newfile์ ๋ ์ง ์ ๋ณด๋ฅผ oldfile์ ๋ ์ง ์ ๋ณด์ ๋์ผํ๊ฒ ๋ณ๊ฒฝ
ํ์ผ ์ ํ ํ์ธ (file)
- ํด๋นํ์ผ์ด ์ด๋ค ํ์ผ์ธ์ง ํ์, ํ ์คํธ ํ์ผ (ASCII) ์ธ์ง ์คํ ํ์ผ (Executable) ์ธ์ง ..๋ฑ
$ file [ํ์ผ๋ช
]
# -b,--brief : ํ์ผ๋ช
์ ์ถ๋ ฅํ์ง์๊ณ ํ์ผ ์ ํ๋ง ์ถ๋ ฅ
$ file test.txt
$ file /usr/bin/gzip

ํ์ผ/๋๋ ํ ๋ฆฌ ๊ฒ์ (find)
$ find [๊ฒฝ๋ก] [์ต์
] [ํํ์]
$ find [PATH] [OPTION] [EXPRESSION]
[OPTION]
-P : ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์๊ณ , ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฒด ์ ๋ณด ์ฌ์ฉ.
-L : ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ์ฐ๊ฒฐ๋ ํ์ผ ์ ๋ณด ์ฌ์ฉ.
-H : ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์์ผ๋, Command Line Argument๋ฅผ ์ฒ๋ฆฌํ ๋ ์์ธ.
-D : ๋๋ฒ๊ทธ ๋ฉ์์ง ์ถ๋ ฅ.
[EXPRESSION]
-name : ์ง์ ๋ ๋ฌธ์์ด ํจํด์ ํด๋นํ๋ ํ์ผ ๊ฒ์.
-empty : ๋น ๋๋ ํ ๋ฆฌ ๋๋ ํฌ๊ธฐ๊ฐ 0์ธ ํ์ผ ๊ฒ์.
-delete : ๊ฒ์๋ ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ์ญ์ .
-exec : ๊ฒ์๋ ํ์ผ์ ๋ํด ์ง์ ๋ ๋ช
๋ น ์คํ.
-path : ์ง์ ๋ ๋ฌธ์์ด ํจํด์ ํด๋นํ๋ ๊ฒฝ๋ก์์ ๊ฒ์.
-print : ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ. ๊ฒ์ ํญ๋ชฉ์ newline์ผ๋ก ๊ตฌ๋ถ. (๊ธฐ๋ณธ ๊ฐ)
-print0 : ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ. ๊ฒ์ ํญ๋ชฉ์ null๋ก ๊ตฌ๋ถ.
-size : ํ์ผ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๊ฒ์.
-type : ์ง์ ๋ ํ์ผ ํ์
์ ํด๋นํ๋ ํ์ผ ๊ฒ์.
-mindepth : ๊ฒ์์ ์์ํ ํ์ ๋๋ ํ ๋ฆฌ ์ต์ ๊น์ด ์ง์ .
-maxdepth : ๊ฒ์ํ ํ์ ๋๋ ํ ๋ฆฌ์ ์ต๋ ๊น์ด ์ง์ .
-atime : ํ์ผ ์ ๊ทผ(access) ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ผ ๊ฒ์.
-ctime : ํ์ผ ๋ด์ฉ ๋ฐ ์์ฑ ๋ณ๊ฒฝ(change) ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ผ ๊ฒ์.
-mtime : ํ์ผ์ ๋ฐ์ดํฐ ์์ (modify) ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ผ ๊ฒ์.
# ํ์ฌ ๊ฒฝ๋ก ํ์ ํ์ผ/๋๋ ํฐ๋ฆฌ์์ [NAME]๊ฒ์
$ find . -name [NAME]
# abc๊ฐ ๋ค์ด๊ฐ๋ ๋๋ ํฐ๋ฆฌ ๋ชจ๋ ์ถ๋ ฅ
$ find . -name '*abc*' -type d
# ๋๋ ํฐ๋ฆฌ์ ์๋ c๋ก ๋๋๋ ํ์ฅ์ ํ์ผ์ 10๊ฐ๋ง ๋จผ์ ์ถ๋ ฅ
$ find /mollang '*.c' | head -10
# ์์ ํ์ง 10์ผ ์ด์๋ ํ์ผ๋ง ๋ฝ์์ ์์ธํ ์ถ๋ ฅ
$ find . -mtime +10 -type f -ls
# ์ค๋๋ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํด์ค ๋ ์ ์ฌ์ฉ๋๋ ๋ช
๋ น์ด
# ์์ ํ์ง 10์ผ์ด ์ง๋ ์ค๋๋ tarํ์ผ๋ค๋ง ๊ณจ๋ผ์ ์ญ์
$ find . -name "*.tar" -mtime +10 -delete
# ํ์ผ ํฌ๊ธฐ๊ฐ 300KB ์ด์๋๋ ํ์ผ๋ง ์ถ๋ ฅ
$ find . -size +300k
[LINUX] ๐ find ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ [ํ์ผ ๊ฒ์]
ํ์ผ/๋๋ ํ ๋ฆฌ ๊ฒ์ find๋ ๋ฆฌ๋ ์ค์์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค. $ find [๊ฒฝ๋ก] [์ต์ ] [ํํ์] $ find [PATH] [OPTION] [EXPRESSION] find ๋ช ๋ น์๋ ๋ช ๊ฐ์ง ์ต์ ๊ณผ ๋ง์ ์์ ํํ์.
inpa.tistory.com
ํ์ผ ๋ด์ฉ(ํ ์คํธ) ๊ด๋ จ ๋ช ๋ น์ด
ํ์ผ ๋ด์ฉ ์ ์ฒด ์ถ๋ ฅ (cat)
- ctrl + D ๋ก ์ข ๋ฃ
$ cat file1 # : file1์ ๋ด์ฉ์ ์ถ๋ ฅ
$ cat file1 file2 # : file1๊ณผ file2์ ๋ด์ฉ์ ์ถ๋ ฅ
$ cat file1 file2 | more # : file1๊ณผ file2์ ๋ด์ฉ์ ํ์ด์ง๋ณ๋ก ์ถ๋ ฅ
$ cat file1 file2 | head # : file1๊ณผ file2์ ๋ด์ฉ์ ์ฒ์๋ถํฐ 10๋ฒ์งธ ์ค๊น์ง๋ง ์ถ๋ ฅ
$ cat file1 file2 | tail # : file1๊ณผ file2์ ๋ด์ฉ์ ๋์์๋ถํฐ 10๋ฒ์งธ ์ค๊น์ง๋ง ์ถ๋ ฅ
ํ์ผ ๋ด์ฉ ์๋ถ๋ถ ์ถ๋ ฅ (head)
- ์ง์ ํ ํ์ผ์ ์๋ถ๋ถ์ ์ถ๋ ฅ.
- ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ฒซ 10์ค ์ถ๋ ฅ
$ head [option] file
# -n,--lines : ์ถ๋ ฅํ ์ค ์๋ฅผ ์ง์
# -c,--byte : ์ถ๋ ฅํ ๋ฐ์ดํธ์๋ฅผ ์ง์
$ head -5 anaconda-ks.cfg # ์์์ 5ํ๋ง ์ถ๋ ฅ
ํ์ผ ๋ด์ฉ ๋ท๋ถ๋ถ ์ถ๋ ฅ (tail)
- ์ง์ ํ ํ์ผ์ ๋ ๋ถ๋ถ์ ์ถ๋ ฅ.
- ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ท 10์ค ์ถ๋ ฅ
$ tail [option] file
# -n,--lines : ํ์ผ์ ๋ง์ง๋ง์์ ์ง์ ํ ์ค๋งํผ ์ถ๋ ฅ
# -c,--bytes : ํ์ผ์ ๋ง์ง๋ง์์ ์ง์ ํ ๋ฐ์ดํธ ์๋งํผ ์ถ๋ ฅ
# -f,--follow : ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ๋๊น์ง ๋ชจ๋ํฐ๋ง
$ tail -5 anaconda-ks.cfg # ๋ค์์ 5ํ๋ง ์ถ๋ ฅ
ํ์ผ ๋ด์ฉ ํ์ด์ง ๋จ์๋ก ์ถ๋ ฅ (more)
- ํ ์คํธ ํ์์ ํ์ผ์ ํ์ด์ง ๋จ์๋ก ์ถ๋ ฅ
- space ๋๋ฅด๋ฉด ๋ค์ํ์ด์ง
- q ์ข ๋ฃ
๋จ์ถํค |
์ค๋ช
|
Space |
๋ค์ ํ์ด์ง๋ก ์ด๋
|
์ซ์ + z
|
์ซ์์ค ๋งํผ ๋ค์์ผ๋ก ์ด๋ |
q ๋๋Q
|
more ๋ช
๋ น์ด ์ข
๋ฃ
|
f |
๋ค์ ํ์ด์ง๋ก ์ด๋
|
b
|
์ด์ ํ์ด์ง๋ก ์ด๋
|
=
|
ํ์ฌ ์ค ๋ฒํธ ํ์
|
v |
vi ์๋ํฐ๋ก ์คํ
|
$ more [option] file
# -num : ์คํฌ๋ฆฐ์ ํ๋ฒ์ ๋ณด์ฌ์ค ์ค์๋ฅผ ์ค์ .
$ more +100 anaconda-ks.cfg # -> 100ํ๋ถํฐ ์ถ๋ ฅ
ํ์ผ ๋ด์ฉ ํ์ด์ง ๋จ์๋ก ์ถ๋ ฅ (less)
- more ์ pgUp pgDn ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฒ์ ผ
$ less [option] file
# -c,--clear-screen : ํ๋ฉด์ ์ง์ฐ๊ณ ์ต์๋จ๋ถํฐ ๊ฒฐ๊ณผ ์ถ๋ ฅ
# -s--squeeze-blank-lines : ์ฐ์๋ ๋น์ค์ ํฉ์ณ ํ๋์ ๋น์ค๋ก ๋ง๋ฌ.
# -e : ํ์ผ ๋์์ ํ๋ฒ ๋ ํ์ผ ๋์ผ๋ก ์ด๋ํ๋ฉด ์๋์ผ๋ก ํ๋ก๊ทธ๋จ ์ข
๋ฃ.
# -N : ๊ฐ์ค๋ง๋ค ํ ๋ฒํธ๋ฅผ ํจ๊ป ์ถ๋ ฅ
ํ์ผ ํจํด ๊ฒ์ (grep)
- ํ ์คํธ ํ์ผ์ ํ์ค์ฉ ์ฝ์ด์ ์ง์ ํ ํจํด๊ณผ ์ผ์นํ๋ ๋ฌธ์์ด ๋ณด์ฌ์ฃผ๋ ๋ช ๋ น์ด
$ grep [OPTION] PATTERN [FILE]
-E : PATTERN์ ํ์ฅ ์ ๊ท ํํ์(Extended RegEx)์ผ๋ก ํด์.
-F : PATTERN์ ์ ๊ท ํํ์(RegEx)์ด ์๋ ์ผ๋ฐ ๋ฌธ์์ด๋ก ํด์.
-G : PATTERN์ ๊ธฐ๋ณธ ์ ๊ท ํํ์(Basic RegEx)์ผ๋ก ํด์.
-P : PATTERN์ Perl ์ ๊ท ํํ์(Perl RegEx)์ผ๋ก ํด์.
-e : ๋งค์นญ์ ์ํ PATTERN ์ ๋ฌ.
-f : ํ์ผ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ PATTERN์ผ๋ก ์ฌ์ฉ.
-i : ๋/์๋ฌธ์ ๋ฌด์.
-v : ๋งค์นญ๋๋ PATTERN์ด ์กด์ฌํ์ง ์๋ ๋ผ์ธ ์ ํ.
-w : ๋จ์ด(word) ๋จ์๋ก ๋งค์นญ.
-x : ๋ผ์ธ(line) ๋จ์๋ก ๋งค์นญ.
-z : ๋ผ์ธ์ newline(\n)์ด ์๋ NULL(\0)๋ก ๊ตฌ๋ถ.
-m : ์ต๋ ๊ฒ์ ๊ฒฐ๊ณผ ๊ฐฏ์ ์ ํ.
-b : ํจํด์ด ๋งค์น๋ ๊ฐ ๋ผ์ธ(-o ์ฌ์ฉ ์ ๋ฌธ์์ด)์ ๋ฐ์ดํธ ์ต์
์ถ๋ ฅ.
-n : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ผ์ธ ์์ ๋ผ์ธ ๋ฒํธ ์ถ๋ ฅ.
-H : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ผ์ธ ์์ ํ์ผ ์ด๋ฆ ํ์.
-h : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ์, ํ์ผ ์ด๋ฆ ๋ฌด์.
-o : ๋งค์น๋๋ ๋ฌธ์์ด๋ง ํ์.
-q : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅํ์ง ์์.
-a : ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ํ
์คํธ ํ์ผ์ฒ๋ผ ์ฒ๋ฆฌ.
-I : ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๊ฒ์ฌํ์ง ์์.
-d : ๋๋ ํ ๋ฆฌ ์ฒ๋ฆฌ ๋ฐฉ์ ์ง์ . (read, recurse, skip)
-D : ์ฅ์น ํ์ผ ์ฒ๋ฆฌ ๋ฐฉ์ ์ง์ . (read, skip)
-r : ํ์ ๋๋ ํ ๋ฆฌ ํ์.
-R : ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋ชจ๋ ํ์ ๋๋ ํ ๋ฆฌ ํ์.
-L : PATTERN์ด ์กด์ฌํ์ง ์๋ ํ์ผ ์ด๋ฆ๋ง ํ์.
-l : ํจํด์ด ์กด์ฌํ๋ ํ์ผ ์ด๋ฆ๋ง ํ์.
-c : ํ์ผ ๋น ํจํด์ด ์ผ์นํ๋ ๋ผ์ธ์ ๊ฐฏ์ ์ถ๋ ฅ.
# ํน์ ํ์ผ์์ 'error' ๋ฌธ์์ด ์ฐพ๊ธฐ
$ grep 'error' ํ์ผ๋ช
# ํ์ฌ ๋๋ ํ ๋ฆฌ๋ด์ ์๋ ๋ชจ๋ ํ์ผ์์ 'error' ๋ฌธ์์ด ์ฐพ๊ธฐ
$ grep 'error' *
# ํน์ ํ์ฅ์๋ฅผ ๊ฐ์ง ๋ชจ๋ ํ์ผ์์ 'error' ๋ฌธ์์ด ์ฐพ๊ธฐ
$ grep 'error' *.log
# ํน์ ํ์ผ์์ a,b,c๋ก ์์ํ๋ ๋จ์ด๋ฅผ ๋ชจ๋ ์ฐพ๋๋ค.
$ grep [a-c] ํ์ผ๋ช
# ํน์ ํ์ผ์์ a๋ b๋ก ์์๋๋ ๋ชจ๋ ํ์ ์ฐพ๋๋ค.
$ grep '^[ab]' ํ์ผ๋ช
# ํน์ ํ์ผ์์ ์ฌ๋ฌ๊ฐ ๋ฌธ์์ด
$ cat mylog.txt | grep 'Apple' | grep 'Banana'
# ์ค์๊ฐ ๋ก๊ทธ ๋ณด๊ธฐ (tail + grep)
$ tail -f mylog.log | grep 192.168.15.86
[LINUX] ๐ ์ ๊ทํํ์ ๊ณผ grep ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ [ํจํด ๊ฒ์] [ํ์ฅ๋ธ๋ํท]
ํ์ผ/๋๋ ํ ๋ฆฌ ํจํด ๊ฒ์ ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ก๊ทธํ์ผ์ด๋, ํ ์คํธ ํ์ผ์์ ํน์ ๋ฌธ์์ด์ ์ฐพ์ ๋, ํน์ ๋๋ ํฐ๋ฆฌ ๋ด์์ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ๋ ํ์ผ์ ์ฐพ์ ๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
inpa.tistory.com
ํ์ผ ๋ด์ฉ ์ ๋ณด ์ถ๋ ฅ (wc)
- ์ง์ ํ ํ์ผ์ ๋ํด ๋จ์ด, ๊ฐํ๋ฌธ์, ๋ฌธ์์ ๊ฐ์ ๋ฑ์ ์ถ๋ ฅ
- ์ต์ ์๋ต ์ ์ค, ๋จ์ด, Bytes ์๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ถ๋ ฅ
$ wc [option] file
# -l,--lines : ์ค์๋ฅผ ์
# -w,--words : ๋จ์ด์ ๊ฐ์๋ฅผ ์
# -c,--bytes : ๋ฐ์ดํธ ์๋ฅผ ์
# -L,--max-line-length : ๊ฐ์ฅ ๊ธด์ค์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅ

ํ์ผ ๋ด์ฉ ์ ๋ ฌ (sort)
- ํ ์คํธ ํ์ผ์ ํ์ค ์ฉ ์ฝ์ด์ ํ์ค ์ฉ ์ ๋ ฌ
$ sort [์ต์
] [ํ์ผ๋ช
]
# -r: ์ญ์(๋ด๋ฆผ์ฐจ์) ์ ๋ ฌ / ๊ธฐ๋ณธ์ ์ค๋ฆ์ฐจ์
# -f: ๋์๋ฌธ์ ๊ตฌ๋ณ์ํจ
# -n: ์ซ์๋ก ์ ๋ ฌ
# -k์ซ์: k1 -> 1๋ฒ์งธ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
# -u: ์ ๋ ฌ ํ ์ค๋ณต๋ ๋ด์ฉ์ ์ ๊ฑฐ
# -b: ์ ํ ๊ณต๋ฐฑ ๋ฌด์
# -R: ํด์์ ํค๊ฐ ๊ธฐ์ค, ๋๋ค ์ ๋ ฌ
# -h: --human(2K, 1G)
# -c: ์ ๋ ฌ๋์ด ์๋์ง ๊ฒ์ฌ
# -m: ์ด๋ฏธ ์ ๋ ฌ๋ ํ์ผ๋ค์ ๋ณํฉ
# -o: ํ์ผ์ถ๋ ฅ
# -t: ํ๋ ๊ตฌ๋ถ์๋ฅผ ์ง์
# sort ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
$ sort sort.txt
# ๋ค์๊ณผ ๊ฐ์ด cat ๋ช
๋ น์ด๋ฅผ ํตํด ํ์ผ์ ์ด๊ณ ํ์ดํ๋ฅผ ํตํด sort ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.
# ์์ ๊ฐ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ
$ cat sort.txt | sort
# -r ์ต์
์ผ๋ก ์ญ์์ผ๋ก ์ ๋ ฌ
$ sort -r sort.txt
$ cat sort.txt | sort -r
# -u ์ต์
์ผ๋ก ์ ๋ ฌ ํ ์ค๋ณต๊ฐ ์ ๊ฑฐ
$ sort -u sort3.txt
# -f ์ต์
์ผ๋ก ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ์ ๋ ฌ
# ๋๋ฌธ์๊ฐ ๋จผ์ ์์ผ๋ก ์จ๋ค
$ sort -f sort5.txt
# ํ์ผ์ด ์ ๋ ฌ๋์ด ์๋์ง ๊ฒ์ฌ
$ cat /etc/passwd | sort -c
# ์ ๋ ฌ ํ ํ์ผ๋ก ์ ์ฅ
$ sort /etc/passwd -o output.txt
# ls -l ํ ๋๋ ํ ๋ฆฌ ์ ๋ณด ๊ฒฐ๊ณผ ์ถ๋ ฅ๋ด์ฉ์ ํ์ดํ๋ฅผ ํตํด ์ ๋ ฌํ๋๋ฐ 2๋ฒ์งธ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์ ์ ๋ ฌ
$ ll | sort -k2 -r

ํ์ผ ๋ด์ฉ ์๋ฅด๊ธฐ (cut)
- ํ์ผ์์ ํ๋๋ฅผ ๋ฝ์๋ธ๋ค.
- ํ๋๋ ๊ตฌ๋ถ์๋ก ๊ตฌ๋ถํ ์ ์๋ค.
$ cut [option] file ...
# -c ๋ฌธ์์์น :์๋ผ๋ผ ๊ณณ์ ๊ธ์ ์์น๋ฅผ ์ง์ ํ๋ค. ์ฝค๋ง๋ ํ์ดํ์ ์ฌ์ฉํ์ฌ ๋ฒ์๋ฅผ ์ ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ฐ ํํ๋ค์ ํผํฉํ์ฌ ์ฌ์ฉํ ์๋ ์๋ค.
# -f ํ๋ : ์๋ผ๋ผ ํ๋๋ฅผ ์ ํ๋ค.
# -d ๊ตฌ๋ถ์ : ํ๋๋ฅผ ๊ตฌ๋ถํ๋ ๋ฌธ์๋ฅผ ์ง์ ํ๋ค. ๋ํดํธ๋ ํญ ๋ฌธ์๋ค.
# -s : ํ๋ ๊ตฌ๋ถ์๋ฅผ ํฌํจํ ์ ์๋ค๋ฉด ๊ทธ ํ์ ํ์ง ์๋๋ค.
# /etc/passwd ๋ด์ฉ ๊ฐ ๋ผ์ธ ๋ฌธ์์ด๋ค์ ":" ๊ธฐ์ค์ผ๋ก ๋๋๊ณ ๊ทธ์ค ์ฒซ๋ฒ์งธ ํ๋๋ง ๊ฐ์ ธ์๋ผ (5์ค๋ง ์ถ๋ ฅ)
cut -f1 -d ":" /etc/passwd | head -5
# 1 ~ 3 ๋ฒ์งธ ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ผ
cut -f1-3 -d ":" /etc/passwd | head -5

# ๊ทธ๋ฅ ๋ฌธ์์ด ํ๋ 1์์ 4๋ฒ์งธ๊น์ง ๋ฌธ์๋ง ๊ณจ๋ผ ์ถ๋ ฅ (๊ตฌ๋ถ์ ์ด๋ฐ๊ฑฐ ์ํ๊ณ )
$ cut -c1-4 /etc/passed | head -5

ํ์ผ ๋๋๊ธฐ (split)
- ํฐ ํ์ผ์ ์ฌ๋ฌ ์์ ํ์ผ๋ก ๋๋๋ ์ฌ์ฉ
- ์๋ฅผ๋ค์ด ๋ก๊ทธ ํ์ผ์ด ์์ฒญ ํด๋, split์ผ๋ก ํ์ผ์ ๋ถํ ํ ํ ๋ง์ง๋ง ํ์ผ์์ ๋ง ๊ฒ์
$ split [option] file [file_name]
# -l : ๋ผ์ธ์ ๊ธฐ์ค์ผ๋ก ํ์ผ์ ๋ถํ
# -b : ๋ถํ ๋๋ ๊ธฐ์ค์ ๋ฐ์ดํธ ํฌ๊ธฐ๋ก ๋ถํ
# -a : ๋ถํ ๋๋ ํ์ผ๋ค์ ๋ถ์ ๊ธธ์ด๋ฅผ ์ง์
# -d : ๋ถํ ํ์ผ ์ด๋ฆ๋ค์ ์๋ฌธ์ด ์๋ ์ซ์๋ก ์ง์ (0๋ถํฐ ์์)
# -n : ํ์ผ์ ๊ท ๋ฑํ๊ฒ 1/N ๋๋์ด ๋ถํ
# -C : ๋ผ์ธ์ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ฐ์ดํธ๊ฐ ๋์ง ์๋๋ก ํ์ผ์ ๋ถํ
# ๊ธฐ๋ณธ 1000์ค์ฉ ๋ถํ ํ์ฌ ํ์ผ ๋ถํ
$ split /etc/passwd # > ํ์ผ๋ด์ฉ์ด xaa, xab, xac ... ์์ผ๋ก ์์ฑ
# 10์ค์ฉ ๋ถํ ํ์ฌ 2.txt์ ์ ์ฅ
$ split -l 10 /etc/passwd pass_ # > ํ์ผ๋ด์ฉ์ด pass_aa, pass_ab, pass_ac ... ์์ผ๋ก ์์ฑ
# 10์ค์ฉ ๋ถํ ํ์ฌ 2.txt์ ์ ์ฅ
$ split -d -l 10 /etc/passwd pass_ # > ํ์ผ๋ด์ฉ์ด pass_00, pass_01, pass_02 ... ์์ผ๋ก ์์ฑ

ํ์ผ ํฉ์น๊ธฐ (cat)
- split์ผ๋ก ๋๋์๋ ์ฌ๋ฌ ํ์ผ๋ค์ ๋ค์ ํ๋๋ก ํฉ์น๊ธฐ
- cat์ผ๋ก ๊ฐ๋จํ๊ฒ ํฉ์น๊ธฐ ๊ฐ๋ฅ
# pass_00, 01 .. ๋ก ๋๋์ด์ง ํ์ผ๋ค์ pass.copyํ๋์ ํ์ผ๋ก ํฉ์น๊ธฐ (์ค๋๊ฑธ๋ ค์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์์
๋๋ฆฌ๊ธฐ)
$ cat pass_* > pass.copy &

ํ์ผ ๋น๊ต (cmp)
- ๋ํ์ผ์ด ๋ค๋ฅด๋ฉด, ๋ด์ฉ์ด ๋ฌ๋ผ์ง๊ธฐ ์์ํ๋ ์์น (๋ฌธ์์, ์ค์) ์ถ๋ ฅ
- ์๋ฒฝํ ๋๊ฐ๊ฐ ๊ฐ์ผ๋ฉด no ์ถ๋ ฅ
์ต์ | ์ค๋ช |
-b | ๋ ํ์ผ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํธ๋ค์ ์ถ๋ ฅ |
-i | ์ ๋ ฅ์ด์ ์ต์ด SKIP ๋ฐ์ดํธ๋ค์ ๊ฑด๋๋ด๋ค. |
-l | ํ๋ฆฐ ๋ฌธ์์ ๊ฐฏ์๋ฅผ ์ถ๋ ฅ |
-s | ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๊ณ ์ข
๋ฃ ์ฝ๋๋ง์ ์ถ๋ ฅ 0:ํ์ผ์ด ๊ฐ์, 1:ํ์ผ์ด ๋ค๋ฆ, 2:ํ์ผ์ ์ ๊ทผ ๋ถ๊ฐ |
-v | ๋ฒ์ ์ ๋ณด ์ถ๋ ฅ |
$ cmp [ํ์ผ1] [ํ์ผ2]

ํ์ผ ๋น๊ต (diff)
- cmp์๋ ๋ฌ๋ฆฌ ๋ ํ์ผ์ ๋น๊ตํ์ฌ ๊ฐ์์ง๋ ์กฐ๊ฑด ๋ฐฉ์นจ์ ์๋ ค์ค๋ค.
์ต์ | ์ค๋ช |
-c | ๋ ํ์ผ๊ฐ์ ์ฐจ์ด์ ์ถ๋ ฅ |
-d | ๋ ํ์ผ๊ฐ์ ์ฐจ์ด์ ์ ์์ธํ๊ฒ ์ถ๋ ฅ |
-r | ๋ ๋๋ ํฐ๋ฆฌ๊ฐ์ ์ฐจ์ด์ ์ถ๋ ฅ, ์๋ธ๋๋ ํฐ๋ฆฌ๊น์ง ๋น๊ต |
-i | ๋์๋ฌธ์์ ์ฐจ์ด ๋ฌด์ |
-w | ๋ชจ๋ ๊ณต๋ฐฑ ์ฐจ์ด ๋ฌด์ |
-s | ๋ ํ์ผ์ด ๊ฐ์ ๋ ์๋ฆผ |
$ diff [ํ์ผ1] [ํ์ผ2]
$ diff3 [ํ์ผ1] [ํ์ผ2] [ํ์ผ3] # 3๊ฐ ํ์ผ ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค

diff๋น๊ต ํด์
1,10a1,10 > [ํ์ผ1] 1~10์ค์ [ํ์ผ2] 1~10๋ฒ์งธ ์ค์ ์ถ๊ฐ(add) ํ๋ฉด ๋ ํ์ผ์ ๊ฐ์์ง๋ค.
10,13d9 > [ํ์ผ1] 10~13์ค์ ์ญ์ (delete) ํ๋ฉด, [ํ์ผ2] 9์ค ์ดํ์ ๊ฐ์์ง๋ค.
3,4c5,6 > [ํ์ผ1] 3~4์ค์, [ํ์ผ2] 5~6;์ค๋ก ๋์ฒด(change) ํ๋ฉด ๋ ํ์ผ์ด ๊ฐ์์ง๋ค.
# ์ฐธ๊ณ ์๋ฃ
http://hansworld.co.kr/Instant_Backup/1261
https://www.putorius.net/linux-wc-command.html
https://laughcryrepeat.tistory.com/60
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.