๐ ฤeลกtina โ Deutsch โ ฮฮปฮปฮทฮฝฮนฮบฮฌ โ English โ Espaรฑol โ Franรงais โ Indonesia โ Italiano โ ๆฅๆฌ่ช โ ํ๊ตญ์ด โ Portuguรชs โ Romรขnฤ โ ะ ัััะบะธะน โ Slovenลกฤina โ ะฃะบัะฐัะฝััะบะฐ โ ็ฎไฝไธญๆ โ ็น้ซไธญๆ
์ปค๋งจ๋ ๋ผ์ธ์ ๋ฅ์ํ๊ฒ ๋ค๋ฃจ๋ ๊ฒ์ ๋์ธ์๋๊ฑฐ๋ ์ ๋น์ค๋ฝ๊ฒ ์ฌ๊ฒจ์ง๋๋ค. ํ์ง๋ง ์ปค๋งจ๋ ๋ผ์ธ์ ๋ช ๋ฐฑํ๊ณ ๋ ๋ฏธ๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ์์ง๋์ด๊ฐ ํ๋ ์์ ์ ์ ์ฐ์ฑ๊ณผ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค. ์ด ๋ฌธ์๋ ๋ฆฌ๋ ์ค์์ ์์ ์ ํ๋ฉด์ ์ฐพ์ ๋ ธํธ์ ํ๋ค์ ๋ชจ์์ ๋๋ค. ๋ช ๊ฐ์ง๋ ๊ธฐ์ด์ ์ด๊ณ , ๋ช ๊ฐ์ง๋ ์๋นํ ๊ตฌ์ฒด์ ์ด๋ฉฐ, ์ธ๋ จ๋๊ณ , ์ ์๋ ค์ง์ง ์์ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์๋ ๊ทธ๋ฆฌ ๊ธธ์ง ์์ง๋ง, ์ฌ๊ธฐ ์๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๊ณ , ๊ธฐ์ตํด๋ผ ์ ์๊ฒ ๋๋ค๋ฉด, ๋ง์ ๊ฒ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์๋ ๋ง์ ์๊ฐ์ ๋ฒ์ญ๊ฐ๊ฐ ์ฐธ์ฌํ์ต๋๋ค. ์ฌ๊ธฐ ์ค ์ผ๋ถ ๊ฒ์ ์๋ Quora์ ์ฌ๋ผ์จ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๊ฑฐ๊ธฐ์ ๊ด์ฌ์ ๊ฐ์ง๊ธฐ๋ณด๋ค, Github๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๋ ๊ฐ์น ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฌ๊ธฐ์ ๋ ์ฌ๋ฅ ์๋ ์ฌ๋๋ค์ด ์์ฝ๊ฒ ๊ฐ์ ์์ ์ ์ํ ์ ์๋ ๊ณณ์ด์ฃ . ๋งจ๋ ๋์ด์ ๊ดํ ์ง๋ฌธ์ด ์์ผ๋ฉด ์ง๋ฌธํด ์ฃผ์ธ์. ์ค๋ฅ๊ฐ ์๊ฑฐ๋, ๋ ๋์์ง ์ ์๋ ๋ด์ฉ์ด ๋ณด์ธ๋ค๋ฉด, ๊ธฐ์ฌ ํด ์ฃผ์ธ์!
๋ฒ์:
๋ ธํธ:
apt-get
, yum
, dnf
, pacman
, pip
, brew
(ํน์ ์ ์ ํ ๋ค๋ฅธ ๊ฒ)์ ์ด์ฉํด ์ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ธ์.๊ธฐ๋ณธ Bash๋ฅผ ๋ฐฐ์ฐ์ธ์. ๋งํ์๋ฉด, ์ต์ํ man bash
๋ฅผ ์คํํ๊ณ , ์ ๋ถ๋ฅผ ํ์ด๋ณด์ธ์. ๋งค๋ด์ผ์ ๋ด์ฉ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ฌ์ฐ๋ฉฐ ๊ทธ๋ฆฌ ๊ธธ์ง ์์ต๋๋ค. ๋ค๋ฅธ ์๋ค ๋ํ ์ข์ต๋๋ค๋ง, Bash๋ ๊ฐ๋ ฅํ๊ณ ์ธ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค(zsh, fish, ๊ทธ ์ธ์ ์*๋ง*์ ๋ฐฐ์ฐ๋ ๊ฒ์, ๋
ธํธ๋ถ์์๋ ์ข๊ฒ ์ง๋ง, ๋ง์ ๊ฒฝ์ฐ ์ ํ์ด ์๊ธธ ๊ฒ์
๋๋ค. ์ด๋ฏธ ์กด์ฌํ๋ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ฑ์ ์ผ์์ ๋ง์ด์ฃ ).
ํ
์คํธ ๊ธฐ๋ฐ ์๋ํฐ๋ฅผ ์ต์ํ ํ๋ ์ ๋ ๋ค๋ฃฐ ์ ์๊ฒ ๋ฐฐ์ฐ์ธ์. Vim(Vi
)๊ฐ ์ด์์ ์
๋๋ค. ํฐ๋ฏธ๋์์ ์จ๊ฐ ์์
์ ํ๋๋ฐ ๋ค๋ฅธ ์ค์ง์ ์ธ ๊ฒฝ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ด์ฃ (Emacs, ๋ํ IDE ๋๋ ๋ชจ๋ ํ์คํฐ์ค๋ฌ์ด ์๋ํฐ๋ฅผ ๋๋ถ๋ถ์ ์์
์ ์ฌ์ฉํ๋ค๊ณ ํด๋ ๋ง์ด์ฃ ).
man
์ ์ด์ฉํด์ ๋ฌธ์๋ฅผ ์ฝ๋ ๋ฒ์ ๋ฐฐ์ฐ์ธ์(ํธ๊ธฐ์ฌ ๋ง์ ์ฌ๋์ ์ํด์ ํ๋ ์๊ธฐ์
๋๋ค๋ง, man man
์ ์น์
๋ฒํธ๋ค์ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1์ "regular" ์ปค๋งจ๋, 5๋ files/conventions, ๊ทธ๋ฆฌ๊ณ 8์ administration์ด์ฃ ). apropos
๋ฅผ ์ด์ฉํด์ man ํ์ด์ง๋ฅผ ์ฐพ์ผ์ธ์. ๋ช๋ช ์ปค๋งจ๋๋ ์คํ ๊ฐ๋ฅํ ์ปค๋งจ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ ์์๋์ธ์. ํ์ง๋ง Bash ๋นํธ์ธ ํจ์๋ค์ help
์ help -d
๋ฅผ ์ด์ฉํด์ ๋์๋ง์ ๋ณผ ์ ์์ต๋๋ค.
>
์ <
, |
๋ฅผ ์ด์ฉํ ํ์ดํ๋ฅผ ์ฌ์ฉํด์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ฆฌ๋ค์ด๋ ์
์ ๋ฐฐ์ฐ์ธ์. >
๋ ์ถ๋ ฅ ํ์ผ์ ๋ฎ์ด ์์ฐ๊ณ , >>
๋ ๋ง๋ถ์ด๋ ๊ฑธ ์์๋์ธ์. stdout(์ญ์ฃผ: ํ์ค ์ถ๋ ฅ)๊ณผ stderr(์ญ์ฃผ: ํ์ค ์๋ฌ ์ถ๋ ฅ)์ ๋ํด์ ๋ฐฐ์ฐ์ธ์.
*
(๊ทธ๋ฆฌ๊ณ ์๋ง๋ ?
๊ณผ [
...]
)์ ์ด์ฉํ๋ ํ์ผ ๊ธ๋กญ(glob) ํ์ฅ์ ๋ฐฐ์ฐ์ธ์. ๊ทธ๋ฆฌ๊ณ ์๋ฐ์ดํ"
์ ํ๋ฐ์ดํ'
์ ์ฐจ์ด๋ฅผ ๋ฐฐ์ฐ์ธ์. (๋ณ์ ํ์ฅ์ ๋ํด์ ๋ ๋ณด๋ ค๋ฉด ์๋๋ฅผ ์ฐธ์กฐํ์ธ์)
Bash ์์
๊ด๋ฆฌ์ ์ต์ํด์ง์ธ์. &
, ctrl-z, ctrl-c, jobs
, fg
, bg
, kill
๋ฑ๋ฑ.
ssh
๋ฅผ ๋ฐฐ์ฐ๊ณ , ssh-agent
, ssh-add
๋ฅผ ํตํด์ ๋น๋ฐ๋ฒํธ ์๋ ์ธ์ฆ ๋ฐฉ์์ ๊ธฐ๋ณธ์ ๋ฐฐ์ฐ์ธ์.
๊ธฐ๋ณธ ํ์ผ ๊ด๋ฆฌ: ls
์ ls -l
(ํน๋ณํ, ls -l
์์ ๊ฐ๊ฐ์ ์ด์ด ๋ฌด์จ ์๋ฏธ์ธ์ง ๋ฐฐ์ฐ์ธ์), less
, head
, tail
๊ทธ๋ฆฌ๊ณ tail -f
(๋๋ ๋ ์ข์ less +F
), ln
๊ณผ ln -s
(ํ๋ ๋งํฌ์ ์ํํธ ๋งํฌ์ ์ฐจ์ด์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๋ฐฐ์ฐ์ธ์), chown
, chmod
, du
( ๋์คํฌ ์ฌ์ฉ๋์ ๋น ๋ฅธ ์์ฝ์ ๋ณด๋ ค๋ฉด du -hs *
). ํ์ผ ์์คํ
๊ด๋ฆฌ๋ฅผ ์ํด์๋ df
, mount
, fdisk
, mkfs
, lsblk
. inode๊ฐ ๋ฌด์์ธ์ง ๋ฐฐ์ฐ์ธ์.(ls -i
๋๋ df -i
)
๊ธฐ๋ณธ ๋คํธ์ํฌ ๊ด๋ฆฌ: ip
๋๋ ifconfig
, dig
.
git
๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ์ธ์.
์ ๊ท ํํ์(regular expression)์ ์ ์์๋์ธ์. ๊ทธ๋ฆฌ๊ณ grep
/egrep
์ ๋ค์ํ ํ๋๊ทธ๋ ์์๋์ธ์. -i
, -o
, -v
,-A
, -B
์ -C
์ต์
์ ์์๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
apt-get
, yum
, dnf
๋๋ pacman
(๋ฐฐํฌํ๋ง๋ค ๋ค๋ฆ
๋๋ค)์ ์ด์ฉํ์ฌ ํจํค์ง๋ฅผ ์ฐพ๊ณ ์ค์นํ๋ ๋ฒ์ ๋ฐฐ์ฐ์ธ์. ๊ทธ๋ฆฌ๊ณ pip
๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํด์, ํ์ด์ ๊ธฐ๋ฐ์ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ค์นํ ์ ์๋๋ก ํ์ธ์(๋ฐ์ ์ค๋ช
๋ ๊ฒ ์ค ๋ช ๊ฐ์ง๋ pip
๋ฅผ ์ด์ฉํด ์ค์นํ๋ ๊ฒ ์ ์ผ ์ฝ์ต๋๋ค.
Bash ์์ Tab์ ์ฐ๋ฉด argument๋ฅผ ์์ฑํ๊ณ , ctrl-r์ ์ฐ๋ฉด ์ปค๋งจ๋ ํ์คํ ๋ฆฌ์์ ๊ฒ์ํฉ๋๋ค(๋๋ฅธ ๋ค์, ๊ฒ์ํ ๊ฒ์ ์ ๋ ฅํ๊ณ , ctrl-r๋ฅผ ๊ณ์ ๋๋ฌ ์ข ๋ ๋ง๋ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค. Enter๋ฅผ ๋๋ฌ ์ฐพ์ ์ปค๋งจ๋๋ฅผ ์คํํ๊ณ ์ค๋ฅธ์ชฝ ํ์ดํ ํค๋ฅผ ๋๋ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ฌ ๋ผ์ธ์ ๋ณต์ฌํด ์์ ํ ์ ์์ต๋๋ค).
Bash์์ ctrl-w๋ ๋ง์ง๋ง ๋จ์ด๋ฅผ ์ง์๋๋ค. ctrl-u๋ ๋ผ์ธ์ ์ฒ์๊น์ง ์ ๋ถ๋ค ์ง์๋๋ค. alt-b์ alt-f๋ฅผ ์ด์ฉํด์ ๋จ์ด ๋จ์๋ก ์ด๋ํ ์ ์์ต๋๋ค. ctrl-a๋ก ๋ผ์ธ์ ์์์ ์ผ๋ก ์ด๋ํ ์ ์๊ณ ctrl-e๋ก ๋ผ์ธ์ ๋์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. ctrl-k๋ ์ปค์ ์์น๋ถํฐ ๋ผ์ธ์ ๋๊น์ง ์ง์๋๋ค. ctrl-l์ ํ๋ฉด์ ๊นจ๋ํ๊ฒ ํฉ๋๋ค. man readline
์ ์ด์ฉํด์ Bash์ ๊ธฐ๋ณธ ํค ์กฐํฉ์ ์ดํด๋ณด์ธ์. ๋ง์ ๊ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด alt-.๊ฐ์ ๊ฒฝ์ฐ, ์ด๊ฑด argument๋ฅผ ๋์๊ฐ๋ฉด์ ๋ํ๋ด๊ณ alt-*๋ ๊ธ๋กญ์ ํ์ฅํฉ๋๋ค.
vi ์คํ์ผ์ ํค ์กฐํฉ์ ์ฌ๋ํ๋ค๋ฉด, set -o vi
๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค(set -o emacs
๋ก ๋๋๋ฆด ์ ์์ต๋๋ค).
๊ธด ๋ช
๋ น์ ์์ ํ๋ ค๋ฉด ์๋ํฐ๋ฅผ ์ค์ ํ ๋ค์(์๋ฅผ ๋ค๋ฉด, export EDITOR=vim
) ctrl-x ctrl-e๋ฅผ ๋๋ฌ ํ์ฌ ๋ช
๋ น์ ์๋ํฐ์์ ์ด์ด ์ฌ๋ฌ์ค ํธ์ง์ ํ ์ ์์ต๋๋ค. vi ์คํ์ผ์์๋ escape-v๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต๊ทผ ์ฌ์ฉํ ์ปค๋งจ๋๋ฅผ ๋ณด๋ ค๋ฉด history
๋ฅผ ์
๋ ฅํ์ธ์. ๊ทธ ํ !n
์ผ๋ก(์ฌ๊ธฐ์ n
์ ์ปค๋งจ๋ ๋ฒํธ๋ฅผ ๋ปํฉ๋๋ค) ๋ค์ ์คํํ ์ ์์ต๋๋ค. !$
(๋ง์ง๋ง argument), !!
(๋ง์ง๋ง ์ปค๋งจ๋)์ ๊ฐ์ ์ฝ์ด๋ค์ด ๋งค์ฐ ๋ง์ต๋๋ค. ๋น๋ก ์ด๋ฐ ๊ฒ๋ค์ด ctrl-r์ด๋ alt-.๋ช
๋ น์ด๋ก ์์ฃผ ๋์ฒด๋๊ธฐ ์ฝ์ง๋ง์.
cd
๋ก ํ ๋๋ ํฐ๋ฆฌ๋ก ๊ฐ ์ ์์ต๋๋ค. ํ ๋๋ ํฐ๋ฆฌ์์ ์๋์ ์ผ๋ก ํ์ผ์ ์ ๊ทผํ๋ ค๋ฉด ~
์ ๋์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค(์: ~/.bashrc
). sh
์คํฌ๋ฆฝํธ์์๋ $HOME
๋ก ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์ด์ ์ ์์
ํ๋ ๋๋ ํฐ๋ฆฌ๋ก ๋์๊ฐ๋ ค๋ฉด cd -
๋ฅผ ์ฌ์ฉํ์ธ์.
์ปค๋งจ๋๋ฅผ ํ์ดํํ๋ ๋์ค์ ๋ง์์ด ๋ฐ๋์๋ค๋ฉด, alt-#์ ์ณ์ ์์์ ์ #
์ ์ฝ์
ํ๊ณ , ์ํฐ๋ฅผ ์ณ์ ์ฝ๋ฉํธ๋ก ์ฌ๊ฒจ์ง๊ฒ ํ์ธ์(๋๋ ctrl-a, #, enter). ๋์ค์ ์ปค๋งจ๋ ํ์คํ ๋ฆฌ์์ ์ฐพ์์ ํ์ดํ ์ค์ด์๋ ์ปค๋งจ๋๋ก ๋์์ฌ ์ ์์ต๋๋ค.
xargs
(ํน์ parallel
)๋ฅผ ์ฌ์ฉํ์ธ์. ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. ๋ผ์ธ๋น ๋ช ๊ฐ์ ์์ดํ
์ด ์คํ๋๊ฒ ํ ๊ฒ์ธ์ง(-L
) ๊ทธ๊ฑธ ๋ณ๋ ฌ๋ก ํ ๊ฒ์ธ์ง(-P
)๋ฅผ ์ ์ดํ ์ ์๋ค๋ ๊ฑธ ๊ธฐ์ตํ์ธ์. ์ ๋๋ก ํ๊ณ ์๋์ง ํ์ ํ ์ ์๋ค๋ฉด xargs echo
๋ฅผ ๋จผ์ ์คํํด๋ณด์ธ์. ๋ -I{}
๋ ํธ๋ฆฌํฉ๋๋ค. ์์:
find . -name '*.py' | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
pstree -p
๋ ํ๋ก์ธ์ค ํธ๋ฆฌ๋ฅผ ํ์ํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
pgrep
๊ณผ pkill
์ ์ฌ์ฉํด์ ํ๋ก์ธ์ค๋ฅผ ์ฐพ๊ฑฐ๋ ์๊ทธ๋์ ๋ณด๋ด์ธ์(-f
๊ฐ ์ ์ฉํฉ๋๋ค).
ํ๋ก์ธ์ค์ ๋ณด๋ผ ์ ์๋ ๋ค์ํ ์๊ทธ๋์ ์์๋์ธ์. ์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค๋ฅผ ์ผ์ ์ค์ง ํ ๋๋ kill -STOP [pid]
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ man 7 signal
์์ ๋ณผ ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๋์๊ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, nohup
์ด๋ disown
์ ์ฌ์ฉํ์ธ์.
์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋ฆฌ์ค๋(์ญ์ฃผ: ํน์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท ๋ฆฌ์ค๋)์ ํ๊ณ ์๋์ง ์๋ ค๋ฉด netstat -lntp
๋ ss -plat
์ ์ฌ์ฉํด์ ์ ์ ์์ต๋๋ค(TCP ์ผ ๊ฒฝ์ฐ์
๋๋ค. UDP์ ๊ฒฝ์ฐ -u
์ต์
์ ์ถ๊ฐํ์ธ์).
lsof
๋ฅผ ์ด์ฉํด์ ์ด๋ ค์๋ ์์ผ๊ณผ ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค.
uptime
์ด๋ w
๋ฅผ ์ด์ฉํด์ ์์คํ
์ด ์ผ๋ง๋ ์ค๋ ์คํ ์ค์ธ์ง ์ ์ ์์ต๋๋ค.
์์ฃผ ์ฌ์ฉ๋๋ ์ปค๋งจ๋์ ๋ํด์ alias
๋ฅผ ์ด์ฉํด์ ์์ปท์ ๋ง๋์ธ์. ์๋ฅผ๋ค์ด, alias ll='ls -latr'
์ ์ ๋จ์ถ ๋ช
๋ น ll
์ ๋ง๋ญ๋๋ค.
์์ฃผ ์ฌ์ฉํ๋ ๋จ์ถ, ์ค์ , ํจ์๋ ~/.bashrc
์ ์ ์ฅํ๊ณ , ๊ทธ๊ฒ์ ์ฐธ์กฐํ๋ ๋ก๊ทธ์ธ ์
ธ์ ๊ณ ์ณ๋ณด์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ค์ ์ ๋ชจ๋ ์
ธ ์ธ์
์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์ ์ค์ ์ด๋ ๋ก๊ทธ์ธํ ๋ ์คํํด์ผ ํ ๋ช
๋ น์ ~/.bash_profile
์ ๋ฃ์ผ์ธ์. ๊ทธ๋ํฝ ํ๊ฒฝ์ ๋ก๊ทธ์ธ์ ์
ธ๊ณผ cron
์ก์ ์
ธ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ค์ ์ ๋ถ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.
Git์ผ๋ก ์ฌ๋ฌ ์ปดํจํฐ์์ ๊ฐ์ ์ค์ ํ์ผ์ ์ฌ์ฉํ์ธ์(์ .bashrc
, .bash_profile
).
๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ ๋ณ์๋ช
์ด๋ ํ์ผ๋ช
์ ์ฃผ์ํ ํ์๊ฐ ์์ต๋๋ค. Bash ๋ณ์๋ฅผ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ธ์(์: "$FOO"
). ํ์ผ ์ด๋ฆ์ ๊ฒฝ๊ณ์ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ํ์ฉํ๋ ค๋ฉด -0
์ด๋ -print0
์ต์
์ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค๋ฉด, locate -0 pattern | xargs -0 ls -al
, find / -print0 -type d | xargs -0 ls -al
. for ๋ฌธ์์ ๊ณต๋ฐฑ๋ฌธ์๊ฐ ํฌํจ๋ ํ์ผ ์ด๋ฆ์ ๋ฐ๋ณตํ๋ ค๋ฉด, IFS=$'\n'
๋ก IFS๋ฅผ ๊ฐํ ๋ฌธ์๋ง์ผ๋ก ์ค์ ํ์๋ฉด ๋ฉ๋๋ค.
Bash ์คํฌ๋ฆฝํธ์์ set -x
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฒ๊น
์ฉ ์ถ๋ ฅ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค(์๋๋ฉด ๋ค๋ฅธ ์ต์
set -v
๊ฐ ์์ต๋๋ค. ํ์ฅ๋์ง ์์ ๋ณ์์ ์ฃผ์์ ํฌํจํ ๋ก์ฐ ์
๋ ฅ์ ๋ก๊น
ํฉ๋๋ค). ์คํธ๋ฆญํธ ๋ชจ๋(strict mode)๊ฐ ๊ฐ๋ฅํ ๋๋ฉด ์ฌ์ฉํ์ธ์. set -e
๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฌ์ ๋ ์ค๋จ์ํค๊ฒ ๋ฉ๋๋ค. set -u
์ ์ฌ์ฉํ๋ฉด ์ค์ ๋์ง ์์ ๋ณ์๋ฅผ ์ฐพ์ ์ค๋๋ค. set -o pipefail
์ ์ฌ์ฉํ๋ฉด ์๋ฌ์ ๋ํด์ ๊ฐ๊ฒฝํ ๊ธฐ์ค์ ์ ์ฉํฉ๋๋ค(์ด ์ฃผ์ ๊ฐ ์กฐ๊ธ ๋ฏธ๋ฌํ์ง๋ง ๋ง์ด์ฃ ). ๋ ๋ณต์กํ ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ EXIT๋ ERR์ trap
๋ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ๋ ์ต๊ด์ ์ ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, ์ผ๋ฐ์ ์ธ ์๋ฌ๋ฅผ ์ฐพ๊ณ ์ค๋จํ๊ณ , ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด ์ค๋๋ค.
set -euo pipefail
trap "echo 'error: Script failed: see failed command above'" ERR
Bash ์คํฌ๋ฆฝํธ์์ (๊ดํธ๋ก ๋๋ฌ์ธ์ฌ ์์ฑ๋) ์๋ธ ์ ธ์ ์ปค๋งจ๋๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์๋ก, ์์๋ก ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์ฌ ์์ ํ๋ ๊ฒ์ด ์์ต๋๋ค.
# do something in current dir
(cd /some/other/dir && other-command)
# continue in original dir
Bash ์๋ ๋ค์ํ ๋ณ์ ํ์ฅ์ด ์๋ค๋ ๊ฒ์ ์์๋์ธ์. ๋ณ์๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ค๋ฉด ${name:?error message}
๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด Bash ์คํฌ๋ฆฝํธ๊ฐ ํ๋์ argument๋ฅผ ์๊ตฌํ๋ค๋ฉด, input_file=${1:?usage: $0 input_file}
๋ฅผ ์ฌ์ฉํ์ธ์. ๋ณ์๊ฐ ๋น์ด์์ ๋๋ฅผ ๋๋นํด ๊ธฐ๋ณธ ๊ฐ์ ์ฌ์ฉํ์ธ์. ${name:-default}
์ด์ ์์ ์ ์ ํ์ ์ธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ๊ธธ ์ํ๋ค๋ฉด output_file=${2:-logfile}
๋ก ํ ์ ์์ต๋๋ค. $2๊ฐ ์๋ต๋์ด ๋น์ด์๋ค๋ฉด, output_file
์ logfile
๋ก ์ค์ ๋ฉ๋๋ค. ์ฐ์ ํ์ฅ์ i=$(( (i + 1) % 5 ))
์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค. ์์ด์ {1...10}
์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์์ด ํธ๋ฆฌ๋ฐ(trimmin)์ ${var%suffix}
์ด๋ ${var#prefix}
์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด var=foo.pdf
๋ผ๋ฉด, echo ${var$.pdf}.txt
๋ foo.txt
๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
{
...}
๋ฅผ ์ฌ์ฉํ ๊ดํธ ํ์ฅ์ ๋น์ทํ ํ
์คํธ์ ์ฌ์
๋ ฅ์ ์ค์ด๊ณ , ์์ดํ
์ ์กฐํฉ์ ์๋ํํ ์ ์์ต๋๋ค. mv foo.{txt,pdf} some-dir
(์์ชฝ ํ์ผ๋ค์ ์ฎ๊น), cp somefile{,.bak}
(cp somefile somefile.bak
๋ก ํ์ฅ), mkdir -p test-{a,b,c}/subtest-{1,2,3}
(๋ชจ๋ ๊ฐ๋ฅํ ์กฐํฉ์ผ๋ก ํ์ฅํด ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ฑ) ๊ฐ์ ์์ ๋ค์ ์ ์ฉํฉ๋๋ค.
์ปค๋งจ๋์ ์คํ ๊ฒฐ๊ณผ ์ถ๋ ฅ๋ฌผ์ <(some command)
์ฒ๋ผ ์ด์ฉํด์ ํ์ผ์ฒ๋ผ ๋ค๋ค์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ก์ปฌ์ /etc/hosts
๋ฅผ ๋ฆฌ๋ชจํธ์ ๊ฒ๊ณผ ๋น๊ตํ๋ ค๋ฉด ๋ค์์ฒ๋ผ ํ๋ฉด ๋ฉ๋๋ค.
diff /etc/hosts <(ssh somehost cat /etc/hosts)
์คํฌ๋ฆฝํธ๋ฅผ ์ ์ ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ๋๊ดํธ ์์ ๋ฃ์ ์ ์์ต๋๋ค. ๋ซ๋ ๊ดํธ๊ฐ ์์ผ๋ฉด ์คํฌ๋ฆฝํธ๋ ๊ตฌ๋ฌธ ์๋ฌ๊ฐ ๋์ด ์คํ์ด ๋ฐฉ์ง๋ฉ๋๋ค. ์ด๋ ์คํฌ๋ฆฝํธ๊ฐ ์น์ผ๋ก๋ถํฐ ๋ค์ด๋ก๋ํ ์์ ์ด๋ผ ํ ๋ ๋์ค๊น์ง๋ง ๋ค์ด๋ก๋๋ ํ์ผ์ด ์คํ ๋๋ ๊ฑธ ์๋ฐฉํด ์ค๋๋ค.
{
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ๋ฃ์ผ์ธ์
}
cat << EOF...
๊ฐ์ "here documents"์ ๋ํด์ ์์๋์ธ์.
Bash์์ ํ์ค ์ถ๋ ฅ(standard output)๊ณผ ํ์ค ์๋ฌ(standard error) ๋ ๋ค some-command > logfile 2>&1
๊ฐ์ ๋ช
๋ น์ด๋ก ๋ฆฌ๋ค์ด๋ ํธํ ์ ์์ต๋๋ค. ์ข
์ข
, ์ปค๋งจ๋๊ฐ ์ด๋ฆฐ ํ์ผ ํธ๋ค์ ๋จ๊ธฐ์ง ์๋ ๊ฒ์ ํ์คํ ํ๊ธฐ ์ํด, ํ์ฌ ์์
์ค์ธ ํฐ๋ฏธ๋์์ ๋ช
๋ น์ด์ </dev/null
์ ๋ง๋ถ์ด๋ ๊ฒ์ ์ข์ ์ต๊ด์
๋๋ค.
man ascii
๋ฅผ ์ฌ์ฉํด์ ํฅ์ค ๊ฐ๊ณผ 10์ง ๊ฐ์ด ๊ฐ์ด ์๋ ํ๋ฅญํ ASCII ํ
์ด๋ธ์ ๋ณผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ธ์ฝ๋ฉ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด man unicode
, man utf-8
๊ทธ๋ฆฌ๊ณ man latin1
์ ์ด์ฉํ ์ ์์ต๋๋ค.
screen
์ ์ด์ฉํ๊ฑฐ๋ tmux
๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ๋ค์ค ๋ถํ ํ ์ ์์ต๋๋ค. ํนํ ๋ฆฌ๋ชจํธ ssh ์ธ์
์ ๋ผ์ด๋ด๊ณ (detach) ๋ค์ ๋ถ์ด๋๋ฐ(re-attach) ์ ์ฉํฉ๋๋ค. byobu
์ ์คํฌ๋ฆฐ์ด๋ tmux๋ณด๋ค ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ด๋ฆฌ๋ฅผ ํธํฉ๋๋ค. ์ธ์
์ ์๊ตฌํ ์ ์งํ๋ ์ต์ํ์ ๋์์ ์ค์ง dtach
๋ฐ์ ์์ต๋๋ค.
ssh์์ -L
์ด๋ -D
(๊ฐ๋ -R
)๋ฅผ ์ด์ฉํด์ ํฌํธ ํฐ๋๋ง ํ๋ ๊ฒ์ ์์๋์๋ฉด ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌ๋ชจํธ ์๋ฒ๋ฅผ ๊ฒฝ์ ํด์ ์น์ฌ์ดํธ์ ์ ์ํ๋ค๊ฑฐ๋ ํ ๋ ๋ง์ด์ฃ .
๋ช ๊ฐ์ง ssh ์ค์ ์ ์ต์ ํํ๋ ๊ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ~/.ssh/config
๋ ํน์ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ๊ฒ์ ํํผํ๊ธฐ ์ํด ์์ถ์ ์ฌ์ฉํ๋ ์ค์ ๋ค์ ๋ด๊ณ ์์ต๋๋ค(ํนํ scp ๋ช
๋ น์ด๋ฅผ ๋ฎ์ ๋์ญํญ ์ฐ๊ฒฐ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก์ปฌ ์ ์ด ํ์ผ์์ ๊ฐ์ ์๋ฒ๋ก ์ฐ๊ฒฐํ๋ ์ฑ๋์ ๋ค์คํํ ์ ์์ต๋๋ค.
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes
ssh์ ๋ช ๊ฐ์ง ์ต์
๋ค์ ๋ณด์์ ๋ฏผ๊ฐํ ์ต์
์ด๋ฉฐ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ธ๋ท, ํธ์คํธ ๋๋ ์ ๋ขฐ๋๋ ๋คํธ์ํฌ์์ StrictHostKeyChecking=no
, ForwardAgent=yes
์ ์ฌ์ฉํ๋ ๊ฒ ๋ฑ์
๋๋ค.
UDP์ ์ฌ์ฉํ๋ ssh์ ๋์์ผ๋ก mosh
๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์. ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๊ธธ์ ํธ๋ฆฌํจ์ด ๋ํด์ง๋๋ค.(์๋ฒ ์ฌ์ด๋ ์ค์ ํ์)
์์คํ
์ค์ ์ ์ ์ฉํ์ง๋ง ls
๋ก ์ป์ ์ ์๊ณ ์ฝ๊ฒ ์๋ง์ด ๋๊ธฐ ์ฌ์ด ํ์ผ์ ๊ถํ์ 8์ง๋ฒ ํํ๋ก ์ป์ผ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ์ธ์.
stat -c '%A %a %n' /etc/timezone
๋ค๋ฅธ ์ปค๋งจ๋์ ์ถ๋ ฅ๊ณผ ์ํธ์์ฉํ๋ฉด์ ๊ฐ์ ์ ํํ๋ ค๋ฉด percol
์ด๋ fzf
๋ฅผ ์ฌ์ฉํ์ธ์.
๋ค๋ฅธ ์ปค๋งจ๋(์๋ฅผ ๋ค๋ฉด git
)์ ์ถ๋ ฅ์ผ๋ก ํ์ผ๊ณผ ์ํธ์์ฉํ๋ ค๋ฉด, fpp
(PathPicker)๋ฅผ ์ฌ์ฉํ์ธ์.
ํ์ฌ ๋คํธ์ํฌ์ ์๋ ์ฌ์ฉ์๋ค์๊ฒ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ(๊ณผ ํ์ ๋๋ ํฐ๋ฆฌ)๋ฅผ ์ํ ๋จ์ํ ์น์๋ฒ๋ฅผ ์ํ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์:
python -m SimpleHTTPServer 7777
(7777ํฌํธ, Python 2) ๊ทธ๋ฆฌ๊ณ python -m http.server 7777
(7777ํฌํธ, Python 3).
๊ถํ์ ๊ฐ์ง๊ณ ์ปค๋งจ๋๋ฅผ ์คํํ๋ ค๋ฉด, sudo
๋ฅผ ์ฌ์ฉํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ root ์คํํ๋ฉฐ sudo -u
๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. -i
๋ฅผ ์ด์ฉํด ๋ค๋ฅธ ์ฌ๋์ผ๋ก ๋ก๊ทธ์ธ ํ ์ ์์ต๋๋ค.(๋น์ ์ ํจ์ค์๋๋ฅผ ๋ฌผ์ด๋ณผ ๊ฒ์
๋๋ค)
์
ธ์ ๋ค๋ฅธ ์ ์ ๋ก ์ ํํ๋ ค๋ฉด su username
๋ su - username
๋ฅผ ์ฌ์ฉํ์ธ์. -
๋ฅผ ๋ฃ์ผ๋ฉด ๊ทธ ์ ์ ๊ฐ ๋ฐฉ๊ธ ๋ก๊ทธ์ธํ ๊ฒ ๊ฐ์ ํ๊ฒฝ์ ์ป์ ์ ์์ต๋๋ค. ์ ์ ์ด๋ฆ์ ์๋ตํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ root๊ฐ ๋ฉ๋๋ค. ๋น์ ์ด ์ ํํ๋ คํ๋ ์ ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌผ์ด๋ณผ ๊ฒ์
๋๋ค.
์ปค๋งจ๋ ๋ผ์ธ์ 128K ์ ํ์ ์์ ๋์ธ์. "Argument list too long" ์๋ฌ๋ ๋ง์ ํ์ผ์ ์์ผ๋์นด๋ ๋งค์นญํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ผ์ด๋ฉ๋๋ค. (์ด๋ฐ ์ผ์ด ์ผ์ด๋ฌ์ ๋์๋ find
, xargs
๊ฐ์ ๊ฒ์ด ๋์ ๋ฉ๋๋ค.)
๋จ์ํ ๊ณ์ฐ์๋(๋ฌผ๋ก ์ผ๋ฐ์ ์ผ๋ก๋ Python์ ์ ๊ทผํ๊ธฐ ์ํด) python
์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
>>> 2+3
5
ํ์ฌ ๋๋ ํฐ๋ฆฌ์์ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์ฐพ์ผ๋ ค๋ฉด find . -iname '*something*'
(๋๋ ๋น์ทํ๊ฒ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๊ณณ์ ์๋ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์ฐพ์ผ๋ ค๋ฉด locate something
์ ์ฌ์ฉํ์ธ์(ํ์ง๋ง ์ธ๋ด๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค. updatedb
๊ฐ ์ต๊ทผ์ ์์ฑ๋ ํ์ผ์ ์ธ๋ฑ์ฑํ์ง ์์์ ์ ์์ต๋๋ค).
์์ค๋ ๋ฐ์ดํฐ ํ์ผ๋ค์์ ์ผ๋ฐ์ ์ธ ๊ฒ์์ ํ ๋๋(grep -r
๋ณด๋ค ๋ ๋ณต์กํ ๋), ag
๋ฅผ ์ฌ์ฉํ์ธ์.
HTML์ ํ
์คํธ๋ก ๋ณํํ ๋๋ lynx -dump -stdin
๋ฅผ ์ฌ์ฉํ์ธ์.
๋งํฌ๋ค์ด, HTML, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ข
๋ฅ์ ๋ฌธ์ ๋ณํ์๋ pandoc
์ ์๋ํด๋ณด์ธ์.
XML์ ๋ฐ๋์ ๋ค๋ค์ผํ๋ค๋ฉด, xmlstarlet
์ ์ฌ์ฉํ์ธ์. ์ค๋๋์์ง๋ง ์ข์ต๋๋ค.
JSON์๋ jq
๋ฅผ ์ฌ์ฉํ์ธ์.
YAML์๋ shyaml
๋ฅผ ์ฌ์ฉํ์ธ์.
Excel์ด๋ CSVํ์ผ์๋ csvkit๊ฐ in2csv
, csvcut
, csvjoin
, csvgrep
์ธ ๋ค๋ฅธ ๋๊ตฌ๋ค์ ์ ๊ณตํฉ๋๋ค.
Amazon S3๋ฅผ ๋ค๋ฃฐ ๋๋ s3cmd
๊ฐ ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ s4cmd
๋ ๋น ๋ฆ
๋๋ค. Amazon์ aws
๋ ๋ค๋ฅธ AWS ๊ด๋ จ ์์
์ ํต์ฌ์ ์ธ ๋๊ตฌ์
๋๋ค.
sort
์ uniq
์ ๋ํด์ ์์๋์ธ์. uniq์ -u
, -d
์ต์
์ ํฌํจํด์ ๋ง์ด์ฃ . ํ๋จ์ one-liner๋ฅผ ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ comm
๋ ๋ณด์ธ์.
ํ
์คํธ ํ์ผ๋ค์ ๋ค๋ฃจ๋ cut
, paste
๊ทธ๋ฆฌ๊ณ join
์ ๋ํด์ ์์๋์ธ์. ๋ง์ ์ฌ๋๋ค์ด cut
์ ์ฌ์ฉํ์ง๋ง join
์ ๋ํด์๋ ์๊ณ ์์ต๋๋ค.
wc
๋ฅผ ์ด์ฉํด์ ํ(-l
), ์บ๋ฆญํฐ(-m
), ๋จ์ด(-w
) ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํธ(-c
)๋ฅผ ์ธ๋ ๊ฒ์ ์์๋์ธ์.
tee
๋ฅผ ์ด์ฉํด์ ls -al | tee file.txt
์ฒ๋ผ, ํ์ค ์
๋ ฅ(stdin)์์ ๋ณต์ฌํด์ ํ์ผ๋ก ๋ณด๋ด๊ฑฐ๋, ํ์ค ์ถ๋ ฅ(stdout)์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ์์๋์ธ์.
๊ทธ๋ฃน, ํ๋ ๋ค์ง๊ธฐ, ํต๊ณ์ ์ธ ๊ณ์ฐ ๊ฐ์ ์ข ๋ ๋ณต์กํ ๊ณ์ฐ์ datamash
๋ฅผ ๊ณ ๋ คํด๋ณด์ธ์.
๋ก์ผ์ผ์ด ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ์ ์ ๋ ฌ ์์(collation)์ ํผํฌ๋จผ์ค๋ฅผ ํฌํจํด์ ๋ฏธ๋ฌํ๊ฒ ์ํฅ์ ๋ผ์น๋ ๊ฒ์ ์์๋์ธ์. ๋๋ถ๋ถ์ ๋ฆฌ๋
์ค ์ค์น๋ LANG
์ด๋ ๋ค๋ฅธ ๋ก์ผ์ผ ๋ณ์๋ฅผ US English์ ๊ฐ์ ๋ก์ปฌ ์ธํ
์ผ๋ก ์ค์ ํฉ๋๋ค. ํ์ง๋ง ๋ก์ผ์ผ์ ๋ฐ๊ฟ ๊ฒฝ์ฐ ์ ๋ ฌ๋ ๋ฐ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ฃผ์ํ์ธ์. ๊ทธ๋ฆฌ๊ณ i18n ๋ฃจํด๋ค๋ ์ ๋ ฌ์ด๋ ๋ค๋ฅธ ์ปค๋งจ๋๋ค์ ๋ช ๋ฐฐ ๋๋ฆฌ๊ฒ ํ ์ ์์ต๋๋ค. export LC_ALL=C
๋ฅผ ์ฌ์ฉํ์ฌ, ์ด๋ค ์ํฉ์์๋( ๋ฐ์ ์๋ ์งํฉ(set) ์์
์ด๋, ์ ์ผ์ฑ ์์
๋ฑ) i18n์ ๋๋ฆฐ ๋ฃจํด๋ค์ ํต์งธ๋ก ์์ ํ๊ฒ ๋ฌด์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํต์ ์ธ ๋ฐ์ดํธ ๊ธฐ๋ฐ์ ์ ๋ ฌ ์์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
TZ=Pacific/Fiji date
์ฒ๋ผ ํน์ ๋ช
๋ น์ ํ๊ฒฝ ๋ณ์๋ฅผ ์คํ ์์ ๋ถ์ฌ ์ค์ ํ ์ ์์ต๋๋ค.
๊ฐ๋จํ ๋ฐ์ดํฐ ์กฐ์์ ํ ๋ awk
์ sed
๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ์์๋์ธ์. ์๋ฅผ ๋ค์ด ํ
์คํธ ํ์ผ์ ์ธ ๋ฒ์งธ ์ด์ ์ซ์๋ค์ ๋ชจ๋ ๊ฐ์ ๋ํ๋ ๊ฒ์ ์ด๋ ๊ฒ ํฉ๋๋ค: awk '{ x += $3 } END { print x }'
. ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ ์ผ์ ํ๋ ํ์ด์ฌ ์ฝ๋๋ณด๋ค 3๋ฐฐ ์ ๋ ๋น ๋ฅด๊ณ , 1/3 ์ ๋์ ๊ธธ์ด๋ฐ์ ์๋ฉ๋๋ค.
์ฌ๋ฌ ํ์ผ ์์ ๋ฌธ์์ด์ ๋ฐ๊พธ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ธ์.
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
์ฌ๋ฌ ํ์ผ์ ์ด๋ฆ์ ๋ฐ๊พธ๊ฑฐ๋ ๊ฒ์ํ๊ฑฐ๋ ๋ฌธ์์ด์ ๋ฐ๊ฟ ๋์๋ repren
๋ฅผ ์จ๋ณด์ธ์. (์ด๋ค ๊ฒฝ์ฐ์๋ rename
๋ช
๋ น์ ์ฌ์ฉํด์ ์ฌ๋ฌ ํ์ผ์ ์ด๋ฆ์ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค. ํ์ง๋ง, ๋ชจ๋ ๋ฆฌ๋
์ค ๋ฐฐํฌํ์์ ๊ฐ์ ๋์์ ํ์ง ์๋ ๊ฒ์ ์ฃผ์ํ์ธ์.)
# ํ์ผ ์ด๋ฆ, ๋๋ ํฐ, ์ปจํ
์ธ ๋ชจ๋ foo์์ bar๋ก ๋ณ๊ฒฝ
repren --full --preserve-case --from foo --to bar .
# ๋ฐฑ์
ํ์ผ์ whatever.bak์์ whatever๋ก ๋ณต์
repren --renames --from '(.*)\.bak' --to '\1' *.bak
# ๊ฐ๋ฅํ๋ค๋ฉด rename์ผ๋ก ์์ ๊ฐ์ ์ผ์ ํ ์ ์์
rename 's/\.bak$//' *.bak
man ํ์ด์ง๊ฐ ์ด์ผ๊ธฐํ๋ฏ, rsync
๋ ์ ๋ง ๋น ๋ฅด๊ณ ๋ค์ฌ๋ค๋ฅํ ํ์ผ ๋ณต์ฌ ๋๊ตฌ์
๋๋ค. ๊ธฐ๊ธฐ ๊ฐ์ ๋๊ธฐํ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ง๋ง, ๋ก์ปฌ์์๋ ์ถฉ๋ถํ ์ ์ฉํฉ๋๋ค. ๋ณด์ ๊ท์ ์ด ํ์ฉํ๋ค๋ฉด, scp
๋์ rsync
๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์๋ถํฐ ์ ์กํ๋ ๋์ ์ค๋จ๋ ์ง์ ๋ถํฐ ์ฌ์ ์กํ ์ ์์ต๋๋ค. ๋ ๋ง์ ์์ ํ์ผ์ ์ญ์ ํ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
shuf
๋ฅผ ์ฌ์ฉํด์ ํ์ผ ์์ ์์์ ํ์ ์ ํํ๊ฑฐ๋, ์์ ์ ์์ต๋๋ค.
sort
์ ์ต์
์ ์์๋์ธ์. -n
์ ์ซ์๋ฅผ ์ ๋ ฌํ ๋, -h
๋ ์ฌ๋์ด ์ฝ์ ์ ์๊ฒ ์์ฑํ ์ซ์์ ๊ฒฝ์ฐ(du -h
์ ๊ฐ์ ํํ). ํค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋์ธ์(-t
์ -k
). ํน๋ณํ, ์ฒซ ๋ฒ์งธ ํ๋๋ก๋ง ์ ๋ ฌํด์ผ ํ๋ค๋ฉด -k1,1
์ ์ ์ด์ผ ํ๋ค๋ ๊ฑธ ์ฃผ์ํ์ธ์. -k1
์ ๋ชจ๋ ํ์ ๋ํด์ ์ ๋ ฌํ๋ผ๋ ๋ป์
๋๋ค. ์์ ์ ์ธ ์ ๋ ฌ(sort -s
)๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋จผ์ 2๋ฒ ํ๋๋ก ์ ๋ ฌํ๊ณ , ๊ทธ๋ค์์ 1๋ฒ ํ๋๋ก ์ ๋ ฌํ ๊ฒฝ์ฐ, sort -k1,1 | sort -s -k2,2
์ฒ๋ผ ํ ์ ์์ต๋๋ค.
๋ง์ฝ ํญ(tab)๋ฌธ์๋ฅผ Bash ์ปค๋งจ๋ ๋ผ์ธ์ ์ฌ์ฉํด์ผ ํ ํ์๊ฐ ์๊ธธ ๊ฒฝ์ฐ(์๋ฅผ ๋ค๋ฉด -t argument๋ฅผ ์ด์ฉํด ์ ๋ ฌ ํ ๋), ctrl-v [Tab]ํค๋ฅผ ๋๋ฅด๊ฑฐ๋, $'\t'
๋ฅผ ์ฐ์ธ์(๋ฌธ์์ชฝ์ด ๋ณต์ฌ๋ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์์ด ๋ ๋ซ์ต๋๋ค.).
์์ค ์ฝ๋๋ฅผ ํจ์นํ๋ ๊ธฐ๋ณธ ๋๊ตฌ๋ diff
์ patch
์
๋๋ค. diff์ sdiff
(์๋ก diff)์ ํต๊ณ ์์ฝ์ ๋ณด๋ ค๋ฉด diffstat
๋ฅผ ๋ณด์ธ์. diff -r
์ ๋ชจ๋ ๋๋ ํฐ๋ฆฌ์ ๋ํด ์์
์ ์ํํ๋ ๊ฑธ ์์๋์ธ์. diff -r tree1 tree2 | diffstat
์ผ๋ก ๋ณ๊ฒฝ ๋ด์ญ์ ์์ฝ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๊ฐ๋จํ๊ฒ hex ๋คํ๋ฅผ ๋จ๊ณ ์ถ์ ๋๋ hd
, hexdump
, xxd
๋ฅผ ์ฐ์ธ์. ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์์ ํ ๋๋ bvi
, biew
๋ฅผ ์ฌ์ฉํ์ธ์.
strings
(๊ทธ๋ฆฌ๊ณ grep
, ๋ฑ) ์ ์ฌ์ฉํด์ ๋ฐ์ด๋๋ฆฌ ํ์ผ ์์์ ๋ฌธ์์ด ๋นํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ ํ์ผ์ diffํ๋ ค๋ฉด(๋ธํ ์์ถ), xdelta3
๋ฅผ ์ฌ์ฉํ์ธ์.
ํ
์คํธ ํ์ผ ์ธ์ฝ๋ฉ์ ๋ณ๊ฒฝํ๋ ค๋ฉด iconv
๋ฅผ ์๋ํด๋ณด์ธ์. ๋๋ uconv
๋ ๋ ๋ณต์กํ ๋ชฉ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. uconv
๋ ๋ช ๊ฐ์ง ๋ณต์กํ ์ ๋์ฝ๋๋ฅผ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ฌธ์ํํ๊ณ ๋ชจ๋ ์
์ผํธ๋ฅผ ์ ๊ฑฐํ๋(ํ์ฅํ๊ณ , ๋จ์ดํธ๋ฆฌ๋ ๊ฒ์ ์ด์ฉํด์) ์ปค๋งจ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
ํ์ผ์ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋๋ ค๋ฉด split
(ํ์ผ์ ์ฌ์ด์ฆ๋ก ๋๋)์ด๋ csplit
(ํ์ผ์ ํจํด์ผ๋ก ๋๋)์ ๋ณด์ธ์.
๋ ์ง ์๊ฐ ํํ์์ ์ ์ดํ๋ ค๋ฉด dateutils
์ dateadd
, datediff
, strptime
๋ฑ์ ์ฌ์ฉํ์ธ์.
zless
, zmore
, zcat
๊ทธ๋ฆฌ๊ณ zgrep
์ ์ด์ฉํด์ ์์ถ๋ ํ์ผ์ ๋ํด ์์
ํ์ธ์.
ํ์ผ ์์ฑ์ chattr
๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ผ ๊ถํ์ ๋ํ ์ ๋ ๋ฒจ ๋์์
๋๋ค. ์๋ฅผ ๋ค์ด sudo chattr +i /critical/directory/or/file
๋ก ๋ถ๋ณ ํ๋๊ทธ๋ฅผ ๋ถ์ฌ ์ค์๋ก ํ์ผ์ ์ง์ฐ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
getfacl
, setfacl
๋ฅผ ์ฌ์ฉํด ํ์ผ ๊ถํ์ ์ ์ฅํ๊ณ ๋ณต์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
getfacl -R /some/path > permissions.txt
setfacl --restore=permissions.txt
์น ๋๋ฒ๊น
์ ์ํด์๋ curl
์ curl -I
๊ฐ ๋์์ด ๋๊ณ , wget
๋ ๊ฝค ๋์์ด ๋ฉ๋๋ค. ๊ทธ ์ธ์ ๋ณด๋ค ํ๋์ ์ธ ๋ฐฉ์์ผ๋ก๋ httpie
์ด ์์ต๋๋ค.
cpu/๋์คํฌ์ ์ํ๋ฅผ ์๊ธฐ ์ํด์๋ top
(ํน์ ๋ ๋์ ๋ช
๋ น์ด์ธ htop
), iostat
, iotop
์ ์ฌ์ฉํ์ธ์. iostat -mxz 15
๋ฅผ ์ฌ์ฉํด ๊ธฐ๋ณธ CPU์ ํํฐ์
๋์คํฌ๋ณ ์ ๋ณด์ ์ฑ๋ฅ ์ ๋ณด๋ฅผ ์ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ์ํ๋ฅผ ์์ธํ ์๋ ค๋ฉด netstat
, ss
๋ฅผ ์ฌ์ฉํ์ธ์.
์์คํ
์ ์ด๋ค ์ผ์ด ์ผ์ด๋ฌ๋์ง ๋ณด๋ ค๋ฉด dstat
๊ฐ ํนํ ์ ์ฉํฉ๋๋ค. ๋ณด๋ค ์์คํ
์ ์ฌ์ธต์ ์ธ ๋ฉด๋ค์ ๋ณด๋ ค๋ฉด glances
๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.
๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ฅผ ์์๋ณด๋ ค๋ฉด free
์ vmstat
๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด์ํด๋ณด์ธ์. ํนํ, "cached" ๊ฐ์ Linux kernel์ ์ํด file cache๋ก ์กํ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ด์ผ ํ๊ณ ๊ทธ๋์ "free"๊ฐ์ ๋ํด์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ณ์ฐํ ์ ์์ต๋๋ค.
Java ์์คํ
์ ๋๋ฒ๊น
์ ์กฐ๊ธ ๋ค๋ฅธ ์ํฉ์
๋๋ค. ํ์ง๋ง Oracle๊ณผ ๊ทธ ์ธ์ ํ์ฌ์์ ๋ง๋ ๋ค๋ฅธ JVM๋ค์์๋ kill -3 <pid>
๋ฅผ ์คํํ๋ฉด ์ ์ฒด stack trace ์ ๋ณด์ heap์ ์ ๋ณด(์๊ธฐ๋ณ๋ก ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ธ๋ถ์ ์ธ ๋ด์ฉ ๊ฐ์ ๋งค์ฐ ์ ์ฉํ ์ ๋ณด)๋ฅผ ์์ฝํ์ฌ stderr๋ ๋ก๊ทธ๋ก ์ถ๋ ฅํด์ฃผ๋ฏ๋ก ๊ฐ๋จํ๊ฒ ์ ๋ณด๋ฅผ ์ป์ด์ฌ ์ ์์ต๋๋ค. JDK์ jps
, jstat
, jstack
, jmap
๋ช
๋ น์ ์ ์ฉํฉ๋๋ค. SJK tools์ ๋ ๊ณ ๊ธ ์ ๋ณด๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ์ด์๋ค์ ์์๋ณด๊ธฐ ์ํด์๋ traceroute๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ๋ ์ข์ mtr
๋ฅผ ์ฌ์ฉํ์ธ์.
๋์คํฌ๊ฐ ์ ๊ฐ๋ ์ฐผ๋์ง ์์๋ณด๊ธฐ ์ํด์ ncdu
๋ฅผ ์ฌ์ฉํด๋ณด์ธ์. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ du -sh *
์ ๊ฐ์ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
์ด๋ ํ ์์ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋์ญํญ(bandwidth)๋ฅผ ์ฐพ์๋ณด๋ ค๋ฉด iftop
๋ nethogs
๋ฅผ ์ฌ์ฉํ์ธ์.
ab
๋ผ๋ ํด(Apache์ ๋ธ๋ ค์๋)์ ์ ์ํ๊ณ ๊ฐ๋จํ๊ฒ(quick-and-dirty) ์น์๋ฒ์ ์ฑ๋ฅ์ ์ฒดํฌํ๋๋ฐ ์ ์ฉํฉ๋๋ค. ๋ณด๋ค ๋ณต์กํ ๋ถํ ํ
์คํธ๋ฅผ ํ ๋๋ siege
๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.
๋ณด๋ค ์ฌ๊ฐํ ๊ฒฝ์ฐ์ ๋คํธ์ํฌ ๋๋ฒ๊น
์ ์ํด์๋ wireshark
, tshark
, ngrep
๋ฅผ ์ฌ์ฉํ์ธ์.
strace
์ ltrace
์ ๋ํด์ ์์๋ณด์ธ์. ์ด ์ปค๋งจ๋๋ค์ ๋ง์ผ ์ด๋ค ํ๋ก๊ทธ๋จ์์ failing, hanging ํน์ crashing์ด ์ผ์ด๋๊ฑฐ๋ ๊ทธ ์ธ์ ์ฌ๋ฌ๋ถ์ด ๋ฌด์จ ์ด์ ์ธ์ง ์์ง ๋ชปํ๋ ์ํฉ์ด๋ ์ฑ๋ฅ์ ๋ํ ๋๋ต์ ์ธ ๋ด์ฉ์ ์ป๊ณ ์ ํ ๋ ์ ์ฉํ ๊ฒ์
๋๋ค. ํนํ ํ๋กํ์ผ๋ง์ ์ํ ์ต์
(-c
)๊ณผ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ถ์ด๊ธฐ ์ํ ์ต์
(-p
)์ ๊ธฐ์ตํ์ธ์.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(shared libraries) ๋ฑ์ ์ฒดํฌํ๊ธฐ ์ํด์๋ ldd
์ ๋ํด ์์๋ณด์ธ์.
gdb
๋ฅผ ๊ฐ์ง๊ณ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ฐ๊ฒฐํ๊ณ ๊ทธ ํ๋ก์ธ์ค์ stack trace๋ค์ ์ป๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
/proc
๋ฅผ ์ฌ์ฉํ์ธ์. ์ด๊ฒ์ ํ์ฌ ๋ฐ์ํ๊ณ ์๋ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ ๋ ์ข
์ข
๋๋๋๋ก ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค. ์์:/proc/cpuinfo
, /proc/meminfo
, /proc/cmdline
, /proc/xxx/cwd
, /proc/xxx/exe
, /proc/xxx/fd/
, /proc/xxx/smaps
(xxx
๋ ํ๋ก์ธ์ค id๋ pid์
๋๋ค).
๊ณผ๊ฑฐ์ ์ ๋ฌด์์ธ๊ฐ๊ฐ ์๋ชป๋์๋์ง๋ฅผ ๋๋ฒ๊น
ํ ๋์๋ sar
๊ฐ ๋งค์ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. ์ด ์ปค๋งจ๋๋ CPU, memory, network ๋ฑ์ ํต๊ณ ๋ด์ญ์ ๋ณด์ฌ์ค๋๋ค.
์์คํ
์ ๋ณด๋ค ๊น์ ๊ณณ์ ๋ณด๊ฑฐ๋ ํผํฌ๋จผ์ค๋ฅผ ๋ถ์ํ๊ธฐ ์ํด์๋, stap
(SystemTap), perf
, sysdig
๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.
์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ๋ Linux์ ๋ฐฐํฌํ์ด ๋ฌด์์ธ์ง ํ์ธ(๋๋ถ๋ถ์ ๋ฐฐํฌํ์์ ์๋ํฉ๋๋ค)ํ๋ ค๋ฉด uname
์ด๋ uname -a
๋๋ lsb_release -a
๋ฅผ ์ฌ์ฉํ์ธ์.
์ธ์ ๋ ์ง ๋ฌด์ธ๊ฐ๊ฐ ์ ๋ง๋ก ์ฌ๋ฏธ์๋ ๋ฐ์์ ๋ณด์ธ๋ค๋ฉด dmesg
๋ฅผ ์ฌ์ฉํด๋ณด์ธ์(์๋ง๋ ํ๋์จ์ด๋ ๋๋ผ์ด๋ฒ์ ๋ฌธ์ ์ผ ๊ฒ์
๋๋ค).
ํ์ผ์ ์ญ์ ํ๋๋ฐ du
๋ก ํ์ธํด ์์ํ ๋์คํฌ ๊ณต๊ฐ์ ํ๋ณดํ์ง ๋ชปํ๋ค๋ฉด, ํ์ผ์ด ํ๋ก์ธ์ค์ ์ํด ์ฌ์ฉ ์ค์ธ์ง ํ์ธํด๋ณด์ธ์.
lsof | grep deleted | grep "filename-of-my-big-file"
์ปค๋งจ๋๋ค์ ํ๋ฐ ๋ฌถ์ด์ ์ฌ์ฉํ๋ ์์ ๋ค
sort
/uniq
๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ ํ์ผ์ ๊ต์ฐจ์ , ์กฐํฉ, ์ฐจ์ด์ ์ ํ์ธ์ด ํ์ํ ๋ ์๋นํ ๋์์ด ๋ ๊ฒ๋๋ค. ๊ฐ๋ น a
์ b
๊ฐ ์ ์ผํ ๊ฐ๋ค๋ง์ ๊ฐ์ง ํ
์คํธ ํ์ผ์ด๋ผ ํฉ์๋ค. ์ด๊ฒ์ด ์์์ ํฌ๊ธฐ์ธ ํ์ผ์(๊ทธ๊ฒ ๊ธฐ๊ฐ๋ฐ์ดํธ๋ผ๊ณ ํด๋) ๋น ๋ฅด๊ฒ ์์
ํ ์ ์์ต๋๋ค. (Sort๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค๋ง, ๋ง์ฝ ๋ฃจํธ ํํฐ์
์ด ์์ ๊ฒฝ์ฐ, /tmp
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด -T
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.) ์์ LC_ALL
์๋ํ ๋ด์ฉ์ sort
์ -u
์ต์
์ ํ์ธํ์ญ์์ค. (์๋ ์์ ์ ์ง์คํ๊ธฐ ์ํด์ ์๋ต)
cat a b | sort | uniq > c # c is a union b
cat a b | sort | uniq -d > c # c is a intersect b
cat a b b | sort | uniq -u > c # c is set difference a - b
grep . *
์ ์ฌ์ฉํด์ ๋๋ ํฐ๋ฆฌ ์์ ๋ชจ๋ ํ์ผ์ ๋น์ฃผ์ผํ๊ฒ ์ดํด๋ณผ ์ ์์ต๋๋ค.(r๊ฐ ์ค์ ํ์ผ ์ด๋ฆ๊ณผ ๊ฐ์ด ๋์ต๋๋ค) ์๋๋ฉด head -100 *
๋ฅผ ์ด์ฉํ ์๋ ์์ต๋๋ค.(๊ฐ ํ์ผ์ ํด๋๋ง ๋ณผ ์ ์์ต๋๋ค.) ์ด๋ /sys
, /proc
, /etc
๊ฐ์ด ์ค์ ๊ฐ๋ค๋ก ๊ฐ๋ํ ๋๋ ํฐ๋ฆฌ์์ ์ ์ฉํฉ๋๋ค.
ํ ์คํธ ํ์ผ์ ์ธ ๋ฒ์งธ ์ด์ ์ซ์๋ค์ ๋ชจ๋ ๊ฐ์ ๋ํ๋ ๊ฒ์ ์ด๋ ๊ฒ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ ์ผ์ ํ๋ ํ์ด์ฌ ์ฝ๋๋ณด๋ค 3๋ฐฐ ์ ๋ ๋น ๋ฅด๊ณ , 1/3 ์ ๋์ ๊ธธ์ด๋ฐ์ ์๋ฉ๋๋ค.
awk '{ x += $3 } END { print x }' myfile
ํ์ผ ํธ๋ฆฌ์์ ํฌ๊ธฐ์ ๋ ์ง๋ฅผ ๋ณด๋ ค๋ฉด ์ด๋ ๊ฒ ํ์ธ์. ์ด ๋ช
๋ น์ด๋ ls -l
์ ์ฌ๊ท์ ์ผ๋ก ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ง๋ง, ls -lR
๋ณด๋ค ๋ ์ฝ๊ธฐ ์ฝ์ต๋๋ค.
find . -type f -ls
์น์๋ฒ ๋ก๊ทธ ๊ฐ์ ํ
์คํธ ํ์ผ์ด ์๋ค๊ณ ํฉ์๋ค. ๊ทธ๋ฆฌ๊ณ URL ํ๋ผ๋ฏธํฐ์ ๋ํ๋๋ acct_id
๊ฐ์ ํน์ ๊ฐ์ด ๋ช๋ช ํ์ ๋ํ๋๋ค๊ณ ํด๋ณด์ฃ . ๊ฐ๊ฐ์ acct_id
์ ๋ํด ์ผ๋ง๋ ๋ง์ ์์ฒญ์ด ์์๋์ง ์๊ณ ์ถ๋ค๋ฉด ๋ค์์ฒ๋ผ ํ ์ ์์ต๋๋ค.
cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
๋ณ๊ฒฝ์ ๊ณ์ ๋ชจ๋ํฐ๋งํ๋ ค๋ฉด watch
๋ฅผ ์ด์ฉํ์ธ์. ์๋ฅผ ๋ค์ด watch -d -n 2 'ls -rtlh | tail'
๋ก ํ ๋๋ ํฐ๋ฆฌ ๋ด์ ํ์ผ ๋ณ๊ฒฝ์ ํ์ธํ๊ฑฐ๋, watch -d -n 2 ifconfig
๋ก ์์ดํ์ด ์ค์ ์ ๊ณ ์น ๋ ๋คํธ์ํฌ ์ค์ ๋ณ๊ฒฝ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ํจ์๋ฅผ ์คํํ๋ฉด ์ด ๋ฌธ์์ ์๋ ํ ์ค ์์์ ๊ฒ์ ์ป์ ์ ์์ต๋๋ค(๋งํฌ๋ค์ด์ ํ์ฑํ๊ณ ํญ๋ชฉ์ ์ถ์ถํฉ๋๋ค).
function taocl() {
curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
pandoc -f markdown -t html |
xmlstarlet fo --html --dropdtd |
xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
xmlstarlet unesc | fmt -80
}
expr
: ์ฐ์ ์ ์ด๊ฑฐ๋ ๋
ผ๋ฆฌ์ ์ธ ์์
์ ์ํํ๊ฑฐ๋ ์ ๊ทํํ์์ ๊ฒ์ฆํ ๋ ์ฌ์ฉํฉ๋๋ค
m4
: ๊ฐ๋จํ ๋ฉํฌ๋ก ์ํ๊ธฐ๋ฅผ ์คํํฉ๋๋ค
yes
: ์ด๋ ํ ํ ๋ฌธ์ฅ์ ๋งค์ฐ ๋ง์ด ์ถ๋ ฅํฉ๋๋ค
cal
: ๊ฐ๋จํ ๋ฌ๋ ฅ์ ๋ณด์ฌ์ค๋๋ค
env
: ์ด๋ค ํ ์ปค๋งจ๋๋ฅผ ์คํํฉ๋๋ค(์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ์ ์ฉํฉ๋๋ค)
printenv
: ํ๊ฒฝ ๋ณ์๋ค์ ์ถ๋ ฅํฉ๋๋ค(๋๋ฒ๊น
์ ํ ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ์ ์ฉํฉ๋๋ค)
look
: ์ด๋ค ๋ฌธ์์ด๋ก ์์ํ๋ ์๋จ์ด(ํน์ ํ์ผ์ ์ด๋ค ํ ์ค)์ ์ฐพ์ต๋๋ค
cut
, paste
, join
: ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์ฌ์ฉํฉ๋๋ค
fmt
: ๋ฌธ๋จ์ ์์์ ์ง์ ํฉ๋๋ค
pr
: ๋ฌธ์์ ํ์ด์ง๋ ์ปฌ๋ผ ์์์ ์ง์ ํฉ๋๋ค
fold
: ๋ฌธ์์ ๊ฐ ๋ผ์ธ๋ค์ ํน์ ํ ๊ธธ์ด์ ๋ง๊ฒ ์์ ํฉ๋๋ค
column
: ๋ฌธ์์ ์ปฌ๋ผ์ด๋ ํ
์ด๋ธ์ ์์์ ์ง์ ํฉ๋๋ค
expand
, unexpand
: ํญ์ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊พธ์ด์ฃผ๊ฑฐ๋ ๊ณต๋ฐฑ์ ํญ์ผ๋ก ๋ฐ๊พธ์ด์ค๋๋ค
nl
: ์ค ๋ฒํธ๋ฅผ ์ถ๊ฐํด์ค๋๋ค
seq
: ์ซ์๋ค์ ์ถ๋ ฅํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
bc
: ๊ฐ๋จํ ๊ณ์ฐ๊ธฐ๋ฅผ ์คํํฉ๋๋ค
factor
: ์ ์๋ค์ ์ธ์๋ถํดํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
gpg
: ํ์ผ๋ค์ ์ํธํํ๊ณ ์๋ช
ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
toe
: terminfo ์ํธ๋ฆฌ๋ค์ ํ
์ด๋ธ(table of terminfo entries)
nc
: ๋คํธ์ํฌ๋ฅผ ๋๋ฒ๊น
ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉํฉ๋๋ค
socat
: ์์ผ ๋ฆด๋ ์ด๋ TCP ํฌํธ๋ก ๋ด์ฉ์ ์ ๋ฌํ ๋ ์ฌ์ฉํฉ๋๋ค(netcat
๊ณผ ๋น์ทํฉ๋๋ค)
slurm
: ๋คํธ์ํฌ ์ํฉ์ ์๊ฐํํ์ฌ ๋ณด์ฌ์ค๋๋ค
dd
: ํ์ผ๋ค์ด๋ ๋๋ฐ์ด์ค๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ๋ ์ฌ์ฉํฉ๋๋ค
file
: ํ์ผ์ ์ข
๋ฅ๋ฅผ ์์๋ด๋๋ฐ ์ฌ์ฉํฉ๋๋ค
tree
: ๋๋ ํฐ๋ฆฌ๋ค๊ณผ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง์น ls๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์
๋ ฅํ ๊ฒ์ฒ๋ผ ํธ๋ฆฌ์ ํํ๋ก ๋ณด์ฌ์ค๋๋ค
stat
: ํ์ผ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
time
: ๋ช
๋ น์ ์คํํ๊ณ ์๊ฐ์ ์ฝ๋๋ค
timeout
: ํน์ ์๊ฐ๋งํผ ๋ช
๋ น์ ์คํํ๊ณ ์๊ฐ์ด ๋๋๋ฉด ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํฉ๋๋ค.
lockfile
: rm -f
๋ก๋ง ์ง์ธ ์ ์๋ ์ธ๋งํฌ์ด ํ์ผ์ ์์ฑํฉ๋๋ค
logrotate
: ๋ก๊ทธ๋ฅผ ๋กํ
์ดํธ, ์์ถ, ๋ฉ์ผ๋ก ๋ณด๋
๋๋ค
watch
: ๋ช
๋ น์ ๋ฐ๋ณต์ ์ผ๋ก ์คํํด ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ๋ณ๊ฒฝ์ ํ์ผ๋ผ์ดํธํฉ๋๋ค
tac
: ํ์ผ์ ๋ด์ฉ์ ์ญ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค
shuf
: ํ์ผ์ ๊ฐ ์ค๋ค์ ์์์ ์์๋ก ์ถ๋ ฅํฉ๋๋ค
comm
: ์ ๋ ฌ๋ ํ์ผ๋ค์ ๊ฐ ๋ผ์ธ๋ณ๋ก ๋น๊ตํฉ๋๋ค
pv
: ํ์ดํ๋ฅผ ํตํด์ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๋ชจ๋ํฐ๋งํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
hd
and bvi
: ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์์ ํ๊ฑฐ๋ ๋คํ๋ฅผ ์ป์ด์ค๋๋ฐ ์ฌ์ฉํฉ๋๋ค
strings
: ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ค์์ ํน์ ๋ฌธ์ฅ์ ์ถ์ถํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
tr
: ๋ฌธ์๋ฅผ ๋ณํํ๊ฑฐ๋ ์กฐ์ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
iconv
or uconv
: ๋ฌธ์์ ์ธ์ฝ๋ฉ๋ฐฉ์์ ๋ณํํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
split
and csplit
: ํ์ผ๋ค์ ์ชผ๊ฐ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
sponge
: ์ฐ๊ธฐ ์ ์ ๋ชจ๋ ์
๋ ฅ์ ์ฝ์ต๋๋ค. ๊ฐ์ ํ์ผ์์ ์ฝ์ ํ์ ์ฐ๊ธฐ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด grep -v something some-file | sponge some-file
์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
units
: ๋จ์๋ฅผ ๋ณํํ๊ฑฐ๋ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค ์๋ฅผ๋ค์ด furlongs/fortnight ๋จ์๋ฅผ twips/blink๋ก ๋ณํํฉ๋๋ค (/usr/share/units/definitions.units
๋ฅผ ์ฐธ๊ณ ํ์ธ์)
apg
: ๋ ๋ค ํจ์ค์๋๋ฅผ ์์ฑํฉ๋๋ค
xz
: ๊ณ ํจ์จ์ ํ์ผ ์์ถํ๋ก๊ทธ๋จ์
๋๋ค
ldd
: ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
nm
: ์ค๋ธ์ ํธ ํ์ผ๋ค์ ํฌํจ๋ ์ฌ๋ณผ์ ๋ณด๋ฅผ ์ป์ด์ต๋๋ค
ab
: ์น ์๋ฒ๋ฅผ ๋ฒค์น ๋งํนํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
strace
: ์์คํ
์ฝ์ ๋๋ฒ๊น
ํ ๋ ์ฌ์ฉํฉ๋๋ค
mtr
: ๋คํธ์ํฌ ๋๋ฒ๊น
์์ traceroute๋ณด๋ค ๋ ๋ซ์ต๋๋ค
cssh
: ์์ ๋์์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ ๋ ์ฌ์ฉํฉ๋๋ค
rsync
: SSH๋ฅผ ์ด์ฉํด ์๊ฒฉ ํ์ผ ์์คํ
์ด๋, ๋ก์ปฌ ํ์ผ์์คํ
์ ํ์ผ๊ณผ ํด๋๋ค์ ๋๊ธฐํ ํ ๋ ์ฌ์ฉํฉ๋๋ค
wireshark
, tshark
: ํจํท์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ ๋คํธ์ํน์ ๋๋ฒ๊น
ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
ngrep
: ๋คํธ์ํฌ ํ๊ฒฝ์์ grep๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค
host
, dig
: DNS ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
lsof
: ํ๋ก์ธ์ค ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ์์ผ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
dstat
: ์ ์ฉํ ์์คํ
์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
glances
: ๋ณด๋ค ๊ณ ์ฐจ์์ ์ฌ๋ฌ ์๋ธ์์คํ
๋ค์ ์ ๋ณด๋ฅผ ํ๋ฒ์ ๋ณด์ฌ์ค๋๋ค
iostat
: ๋์คํฌ์ ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
mpstat
: CPU ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
vmstat
: ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
htop
: ๋ณด๋ค ๊ฐ์ ๋ ํํ์ top์ ๋ณด์ฌ์ค๋๋ค
last
: ๋ก๊ทธ์ธ ํ๋ ์ ๋ณด๋ค์ ๋ณด์ฌ์ค๋๋ค
w
: ํ์ฌ ๋๊ฐ ๋ก๊ทธ์ธํ๋์ง ๋ณด์ฌ์ค๋๋ค
id
: ํ์ฌ ์ ์ ๋ ๊ทธ๋ฃน์ ๋ํ ์๋ณ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
sar
: ์์คํ
์ํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
iftop
, nethogs
: ์์ผ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ด์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
ss
: ์์ผ์ ๊ดํ ํต๊ณ์๋ฃ๋ค์ ๋ณด์ฌ์ค๋๋ค
dmesg
: ๋ถํ
๋ฉ์์ง์ ์์คํ
์๋ฌ ๋ฉ์์ง๋ค์ ๋ณด์ฌ์ค๋๋ค
sysctl
: ์คํ ์์ ๋ฆฌ๋
์ค ์ปค๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์ค์ ํฉ๋๋ค
hdparm
: SATA/ATA disk๋ค์ ์ ๋ณด๋ฅผ ์์ ํ๊ฑฐ๋ ๊ทธ๊ฒ๋ค์ด ์๋ํ๋๋ก ํฉ๋๋ค
lsblk
: ๋ธ๋ก ๋๋ฐ์ด์ค๋ค์ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค : ์ฌ๋ฌ๋ถ์ ๋์คํฌ๋ค์ด๋ ๋์คํฌํํฐ์
๋ค์ ํธ๋ฆฌ์ ํํ๋ก ๋ณด์ฌ์ค๋๋ค
lshw
, lscpu
, lspci
, lsusb
, dmidecode
: CPU, BIOS, RAID, graphics, devices ๋ฑ์ ํ๋์จ์ด ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
lsmod
, modifno
: ์ปค๋ ๋ชจ๋์ ์์ธ์ ๋ณด๋ฅผ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
fortune
, ddate
, sl
: ์... ์ฆ๊ธฐ๊ธฐ๊ด์ฐจ๋ฅผ ์๊ฐํ๊ณ ์๊ณ ๊ทธ๊ฒ์ ์ธ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ด๊ฒ์ "์ ์ฉ"ํฉ๋๋ค
OS X์์๋ง ํด๋น๋๋ ํญ๋ชฉ์ ๋๋ค.
brew
(Homebrew)๋ port
(MacPorts)๋ฅผ ํจํค์ง ๋งค๋์ ๋ก ์ฌ์ฉํฉ๋๋ค. ์์ ๋ง์ ๋ช
๋ น์ด๋ฅผ OS X์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
pbcopy
๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ช
๋ น์ด ์ถ๋ ฅ๋ฌผ์ ๋ณต์ฌํ๊ฑฐ๋ pbpaste
๋ฅผ ์ด์ฉํด ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์์ต๋๋ค.
OS X ํฐ๋ฏธ๋์์ ์ต์ ํค๋ฅผ ์ํธ ํค(alt-b, alt-f ๊ฐ์ ์์ ๋์จ ๋ช ๋ น)๋ก ์ฌ์ฉํ๋ ค๋ฉด Preferences -> Profiles -> Keyboard๋ฅผ ์ด์ด "Use Option as Meta key"๋ฅผ ์ ํํ์ธ์.
๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
์์ ํ์ผ์ ์ด๊ธฐ์ํด, open
๋๋ open -a /Applications/Whatever.app
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
Spotlight: mdfind
๋ฅผ ์ด์ฉํด ํ์ผ์ ์ฐพ๊ณ , mdls
๋ฅผ ์ด์ฉํด ๋ฉํ๋ฐ์ดํ (์ฌ์ง EXIF ์ ๋ณด์ ๊ฐ์) ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
OS X๋ BSD Unix ๊ธฐ๋ฐ์ด๋ฉฐ ๋ง์ ๋ช
๋ น์ด๋ค์ (์๋ก ps
, ls
, tail
, awk
, sed
) ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๊ฒ๋ค์ Linux ๋ฒ์ ๋ค๊ณผ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํฌ๊ฒ๋ System V-style Unix์ GNU ๋๊ตฌ๋ค์ ๋ง์ ์ํฅ์ ๋ฐ์์ต๋๋ค. ์ด๋ฐ ๋ด์ฉ๋ค์ man ํ์ด์ง ์๋จ์ "BSD General Commands Manual." ๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ํตํด ์ ์ ์์ต๋๋ค. ๊ฐ๋์ GNU ๋ฒ์ ์ด ์ค์น๋๊ธฐ๋ ํฉ๋๋ค. (์๋ก, GNU awk์ sed์ธ gawk
์ gsed
์์). ๋ง์ฝ ์ด์ข
ํ๋ซํผ ๊ฐ Bash ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ค๋ฉด, ๋์ผํ ๋ช
๋ น์ด (์๋ก, ํ์ด์ฌ์ด๋ perl
๊ณผ ๊ฐ์)๋ ํ
์คํธ์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
OS X ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ์ป์ผ์๋ ค๋ฉด, sw_vers
๋ฅผ ์ฌ์ฉํ์ธ์.
Windows์์๋ง ํด๋น๋๋ ํญ๋ชฉ์ ๋๋ค.
Windows 10์์๋ Bash on Ubuntu on Windows๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ ๋์ค ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ์ ํจ๊ป ์น์ํ Bash ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ข์ ์ ์, ๋ฆฌ๋ ์ค ํ๋ก๊ทธ๋จ์ Windows์์ ์ฌ์ฉํ ์์๊ฒ ํฉ๋๋ค. ํ์ง๋ง Bash์์ Windows ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
Cygwin๋ฅผ ์ค์นํด Microsoft Windows์์ ์ ๋์ค ์ ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์ ๊ธฐ์ ๋ ๋๋ถ๋ถ์ ๊ฒ๋ค์ ๊ทธ๋๋ก ๋์ํ ๊ฒ์ ๋๋ค.
Cygwin์ ํจํค์ง ๋งค๋์ ๋ก ์ ๋์ค ํ๋ก๊ทธ๋จ์ ๋ ์ค์นํ ์ ์์ต๋๋ค.
์ปค๋งจ๋ ๋ผ์ธ ์ฐฝ์ผ๋ก mintty
๋ฅผ ์ฌ์ฉํ์ธ์.
Windows์ ํด๋ฆฝ๋ณด๋๋ฅผ /dev/clipboard
๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
cygstart
์ ์คํํด ๋ฑ๋ก๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํด ์์์ ํ์ผ์ ์ด ์ ์์ต๋๋ค.
Windows ๋ ์ง์คํธ๋ฆฌ๋ regtool
๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
C:\\
Windows ๋๋ผ์ด๋ธ ๊ฒฝ๋ก๋ Cygwin์์๋ /cygdrive/c
๊ฐ ๋๊ณ , Cygwin์ /
Windows์์ C:\cygwin
๊ฐ ๋๋๊ฒ์ ์์ ๋์ธ์. Cygwin๊ณผ Windows ์คํ์ผ์ ํ์ผ ํจ์ค๋ cygpath
๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ Windows ํ๋ก๊ทธ๋จ์ ์คํํ๋ ํ๋ก๊ทธ๋จ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
You can perform and script most Windows system administration tasks from the command line by learning and using wmic
.
Windows์์ ์ ๋์ค ๋ฃฉ์ํ์ ์ป๋ ๋ค๋ฅธ ๋์์ Cash์ ๋๋ค. ์ด ํ๊ฒฝ์๋ ๋งค์ฐ ์ ์ ์ ๋์ค ๋ช ๋ น๊ณผ ์ปค๋งจ๋ ๋ผ์ธ ์ต์ ๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ ์ฃผ์ํ์ธ์.
Windows์์ GNU ๊ฐ๋ฐ์ ํด(GCC๊ฐ์)์ ์ป๋ ๋ค๋ฅธ ๋์์ผ๋ก MinGW์ ๊ฑฐ๊ธฐ์ ํฌํจ๋ MSYS ํจํค์ง๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ bash, gawk, make, grep๊ฐ์ ๋๊ตฌ๊ฐ ํฌํจ๋ฉ๋๋ค. MSYS๋ Cygwin์ ๋น๊ตํ๋ฉด ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ต๋๋ค. MinGW๋ ์ ๋์ค ํด์ ๋ค์ดํฐ๋ธ Windows๋ก ํฌํ ํ ๋ ๋ถ๋ถ์ ์ผ๋ก ์ ์ฉํฉ๋๋ค.
๋งค์ฐ ์์ ์์ ์ ์ ์ธํ ์ฝ๋๋ค์ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ์ ์ ์๋๋ก ์์ฑ๋ฉ๋๋ค. ํฐ ํ์๋ ์ฑ ์์ด ๋ฐ๋ฆ ๋๋ค. Bash์์ ๋ญ๊ฐ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ Bash๋ก ํด์ผ ๋๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค! ;)
์ด ์ ์๋ฌผ์ Creative Commons Attribution-ShareAlike 4.0 International License์ ๋ฐ๋ผ ์ด์ฉํ ์ ์์ต๋๋ค.