Unix Command line tools
BSD UNIX
- ์ปค๋งจ๋ ๋ผ์ธ ํด์ ๋๋ถ๋ถ ๋๊ฐ์ง ๋ฒ์ ์ด ์๋ค:
- BSD ๋ฒ์ (BSDs & MacOS)
- GNU ๋ฒ์ (Linux)
- MacOS์์
brew install coreutils
๋ช ๋ น์ ์ด์ฉํด GNU ๋ฒ์ ํด์ ์ค์นํ ์ ์๋ค.
grep
ํ์ผ์์ ๋ฌธ์์ด์ ๊ฒ์ํ๋ค.
grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color[=when]]
[--colour[=when]] [--context[=num]] [--label] [--line-buffered]
[--null] [pattern] [file ...]
$ grep bananas foo.txt
-A [NUM]
(after) - ์ผ์นํ๋ ๋ผ์ธ์ ์ดํ ๋ผ์ธ์ ๋ณด์ฌ์ค๋ค.-B [NUM]
(before) - ์ผ์นํ๋ ๋ผ์ธ์ ์ด์ ๋ผ์ธ์ ๋ณด์ฌ์ค๋ค.-C [NUM]
(current) - ์ผ์นํ๋ ๋ผ์ธ์ ์ ํ ๋ผ์ธ์ ๋ณด์ฌ์ค๋ค.-i
(case Insensitive) - ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.-l
(fiLenames) - ์ผ์นํ๋ ํ์ผ์ ํ์ผ ์ด๋ฆ๋ง ๋ณด์ฌ์ค๋ค.-v
(inVert match) - ์ผ์นํ์ง ์๋ ๋ชจ๋ ๋ผ์ธ์ ์ฐพ๋๋ค.-r
(Recursive) - ๋๋ ํ ๋ฆฌ ์์ ๋ชจ๋ ํ์ผ์ ๋ํด ๊ฒ์ํ๋ค.-o
(Only) - ๋ผ์ธ์์ ์ผ์นํ๋ ๋ถ๋ถ๋ง ๋ณด์ฌ์ค๋ค.-E
(Egrep) - ์ก๊ทํํ์์ ์ด์ฉํด ๊ฒ์ํ๋ค.-F
(Fgrep) - ์ ๊ทํํ์์ ์ด์ฉํ์ง ์๊ณ ๊ฒ์ํ๋ค.
find
๋๋ ํ ๋ฆฌ์์ ํ์ผ์ ์ฐพ๋๋ค.
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
$ find /tmp -type d -print
-name
- ์ด๋ฆ์ผ๋ก ์ฐพ๋๋ค. eg.-name '*.txt'
-path
- ํ์ผ ๊ฒฝ๋ก๋ก ์ฐพ๋๋ค. eg.-path '/home/*/*.go'
-type [TYPE]
- ํ์ ์ผ๋ก ์ฐพ๋๋ค. eg.-type d
f
(File) - ์ผ๋ฐ ํ์ผl
(symLink) - ์ฌ๋ณผ๋ฆญ ๋งํฌd
(Directory) - ๋๋ ํ ๋ฆฌ
-size0
- ๋น ํ์ผ(ํฌ๊ธฐ๊ฐ 0์ธ ํ์ผ)์ ์ฐพ๋๋ค.-exec [COMMAND]
- ํ์ผ์ ์ฐพ์ ๋๋ง๋ค ๋ช ๋ น์ ์คํํ๋ค.-delete
- ์ฐพ์ ํ์ผ์ ์ญ์ ํ๋ค.
xargs
์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ ๋ฐ์ ๋ช ๋ น์ ์ธ์๋ก ๋ณํํ๋ค.
xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
$ echo "/home/tmp" | xargs ls
- ํ์ผ ๋ฆฌ์คํธ์ ๋ํด ๊ฐ์ ๋ช
๋ น์ ์คํํ ๋ ์ ์ฉํ๋ค:
xargs rm
- deletexargs cat
- combinexargs grep
- searchxargs sed
- replace
find . -name '*.txt' | xargs sed -i s/foo/bar/g
- ๋ชจ๋ .txt ํ์ผ์ ์๋ ๋จ์ด "foo"๋ฅผ ๋ชจ๋ "bar"๋ก ๋ฐ๊พผ๋ค:- ํ์ผ๋ช ์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ๋ถ๋ฆฌ๋ ์ธ์๋ก ๊ฐ์ฃผํ๋ค.
-n 1
- ๊ฐ ์ ๋ ฅ์ ๋ํด xargs๊ฐ ๋ถ๋ฆฌ๋ ํ๋ก์ธ์ค๋ก ๋์ํ๋ค.-P
- ๋ณ๋ ฌ ํ๋ก์ธ์ค์ ์ต๋ ๊ฐ์๋ฅผ ์ค์ ํ๋ค.
awk
๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค.
awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ... ]
- awk ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค:
BEGIN { ... }
CONDITION { action }
CONDITION { action }
END { ... }
- ํ
์คํธ์ ์ปฌ๋ผ์ ์ถ์ถํ๋ค:
,
- column separator{print $5}
- print the 5th column
$ awk -F, '{print $5}'
- ์ธ๋ฒ์งธ ์ปฌ๋ผ์ ์ซ์๋ค์ ๋ชจ๋ ๋ํด ์ถ๋ ฅํ๋ค:
$ awk '{s += $3};END{print s}'
bash tricks
- magical braces
convert file.{jpg.png}
expands toconvert file.jpg file.png
{1...5}
expands to1 2 3 4 5
!!
- ๋ง์ง๋ง ๋ช ๋ น ($ sudo !!
)- ๋ฐ๋ณต๋ฌธ:
for i in *.png do convert $i $i.jpg done
$(...)
- ๋ช ๋ น์ ์ถ๋ ฅ (touch file@$(date -I)
create a file named file@2019-10-26)cd -
- ์ด์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋bg
(BackGround) - ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก๊ทธ๋จ ์์fg
(ForeGround) - ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก๊ทธ๋จ์ ํฌ๊ทธ๋ผ์ด๋๋ก ์ ํ
disk usage
du
(Disk Usage) - ๋์คํฌ ๊ณต๊ฐ์ ์ผ๋ง๋ ์ฌ์ฉํ๊ณ ์๋์ง ๋ณด์ฌ์ค๋ค.-s
(Summary)-h
(Human-readable sizes)
df
(Disk Filesystem) - ๊ฐ ํํฐ์ ์ ๋์คํฌ ๊ณต๊ฐ์ ๋ณด์ฌ์ค๋ค.-h
(Human-readable sizes)-i
(disk Inodes)
tar
.tar (Tape ARchiver) ํ์ผ ํ์์ ์ฌ๋ฌ ํ์ผ์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ ํ์์ด๋ค. .tar ํ์ผ ์์ฒด๋ก๋ ์์ถ์ ํ์ง ๋ชปํ๋ค. ์์ถ์๋ ์ผ๋ฐ์ ์ผ๋ก .tar.gz๋ .tgz ํ์์ ์ฌ์ฉํ๋ค.
tar [bundled-flags <args>] [<file> | <pattern> ...]
tar {-c} [options] [files | directories]
tar {-r | -u} -f archive-file [options] [files | directories]
tar {-t | -x} [options] [patterns]
tar
๋ช ๋ น์ ๋ณดํต tar.gz ํ์ผ์ ์์ถ ํด์ ํ ๋ ์ฌ์ฉํ๋ค. (tar -xzf file.tar.gz
)-x
(eXtract) - ํ์ฌ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ถ์ถํ๋ค.-c
(Create) - ์๋ก์ด tar ํ์ผ์ ๋ง๋ ๋ค.-t
(lisT) - tar ํ์ผ์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ค.-f
(File) - ํน์ tar ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ์์ถ ํด์ ํ๋ค.- tar๋ ํ์ผ์ ์ฌ๋ฌ ํ์์ผ๋ก ์์ถํ๊ฑฐ๋ ์์ถ ํด์ ํ ์ ์๋ค.
-z
- gzip (.gz)-j
- bzip2 (.bz2)-J
- xz (.xz)
ps
์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฌ์ค๋ค.
ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]] [-g grp[,grp...]] [-u uid[,uid...]] [-p pid[,pid...]]
[-t tty[,tty...]] [-U user[,user...]]
ps [-L]