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 df(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]