2016-01-10 01:40:55 +00:00
๐
2016-02-01 02:06:48 +00:00
*[ฤeลกtina](README-cs.md) โ [ฮฮปฮปฮทฮฝฮนฮบฮฌ ](README-el.md ) โ [English ](README.md ) โ [Espaรฑol ](README-es.md ) โ [Franรงais ](README-fr.md ) โ [Italiano ](README-it.md ) โ [ๆฅๆฌ่ช ](README-ja.md ) โ [ํ๊ตญ์ด ](README-ko.md ) โ [Portuguรชs ](README-pt.md ) โ [ะ ัััะบะธะน ](README-ru.md ) โ [Slovenลกฤina ](README-sl.md ) โ [ะฃะบัะฐัะฝััะบะฐ ](README-uk.md ) โ [ไธญๆ ](README-zh.md ) โ [็น้ซไธญๆ ](README-zh-Hant.md )*
2015-07-04 06:17:01 +00:00
# The Art of Command Line
[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line ](https://badges.gitter.im/Join%20Chat.svg )](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge& utm_content=badge)
2015-07-10 00:36:09 +00:00
- [Meta ](#meta )
- [Basics ](#basics )
- [Everyday use ](#everyday-use )
- [Processing files and data ](#processing-files-and-data )
- [System debugging ](#system-debugging )
- [One-liners ](#one-liners )
- [Obscure but useful ](#obscure-but-useful )
2015-12-30 16:47:03 +00:00
- [OS X only ](#os-x-only )
2015-07-10 00:36:09 +00:00
- [More resources ](#more-resources )
- [Disclaimer ](#disclaimer )
2015-07-04 06:17:01 +00:00
![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50 ](cowsay.png )
2015-12-03 03:00:08 +00:00
์ปค๋งจ๋๋ผ์ธ์ ๋ฅ์ํ๊ฒ ๋ค๋ฃจ๋๊ฒ์ ๋์ธ์๋๊ฑฐ๋ ์ ๋น์ค๋ฝ๊ฒ ์ฌ๊ฒจ์ง๋๋ค. ํ์ง๋ง ์ปค๋งจ๋๋ผ์ธ์ ๋ช
๋ฐฑํ๊ณ ๋ ๋ฏธ๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ์์ง๋์ด๊ฐ ํ๋ ์์
์ ์ ์ฐ์ฑ๊ณผ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค. ์ด ๋ฌธ์๋ ๋ฆฌ๋
์ค์์ ์์
์ ํ๋ฉด์ ์ฐพ์ ๋
ธํธ์ ํ๋ค์ ๋ชจ์์
๋๋ค. ๋ช ๊ฐ์ง๋ ๊ธฐ์ด์ ์ด๊ณ , ๋ช๊ฐ์ง๋ ์๋นํ ๊ตฌ์ฒด์ ์ด๋ฉฐ, ์ธ๋ จ๋๊ณ , ์ ์๋ ค์ง์ง ์์ ๊ฒ์
๋๋ค. ์ด ๋ฌธ์๋ ๊ทธ๋ฆฌ ๊ธธ์ง ์์ง๋ง, ์ฌ๊ธฐ ์๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๊ณ , ๊ธฐ์ตํด๋ผ ์ ์๊ฒ ๋๋ค๋ฉด, ๋ง์ ๊ฒ์ ์๊ฒ๋๋ ๊ฒ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
์ฌ๊ธฐ์๋ ๋๋ถ๋ถ์ ๊ฒ์
[์๋ ](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands )
[Quora์ ](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix )
2015-07-14 04:45:24 +00:00
[์ฌ๋ผ์จ ](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know ) ๊ฒ์
๋๋ค.
2015-07-10 00:36:09 +00:00
ํ์ง๋ง ๊ฑฐ๊ธฐ์ ๊ด์ฌ์ ๊ฐ์ง๊ธฐ๋ณด๋ค, Github๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๋ ๊ฐ์น์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ์ฌ๊ธฐ์ ๋ ์ฌ๋ฅ์๋ ์ฌ๋๋ค์ด ์์ฝ๊ฒ ๊ฐ์ ์์ ์ ์ํ ์ ์๋ ๊ณณ์ด์ฃ . ๋ง์ฝ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋, ๋ ๋์์ง ์ ์๋ ๋ด์ฉ์ด ๋ณด์ธ๋ค๋ฉด, ์ด์๋ฅผ ์ ์ถํ๊ฑฐ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด์ฃผ์ธ์! (๋ฌผ๋ก meta ์น์
๊ณผ ์ด๋ฏธ ์กด์ฌํ๋ ํ ๋ฆฌํ์คํธ์ ์ด์๋ฅผ ๋ด์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## Meta
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
๋ฒ์:
2015-07-04 06:17:01 +00:00
2015-07-14 04:45:24 +00:00
- ์ด ๊ฐ์ด๋๋ ์ด๋ณด์์ ๊ฒฝํ์ ๋ชจ๋๋ฅผ ์ํ ๊ฒ์
๋๋ค. ๋ชฉํ๋ ๋ฒ์(์ ๋ถ ๋ค ์ค์ํฉ๋๋ค!), ๊ตฌ์ฒด์ฑ(๋๋ถ๋ถ์ ์ผ๋ฐ์ ์ธ ์ผ์ด์ค์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์์ ), ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฒฐํจ(์ฝ๊ฒ ๋ง์ฃผ์น์ง ์๋, ์ค์ํ์ง ์๊ณ , ์ง์ฝ์ ์ธ ๊ฒ์ ํผํจ) ์
๋๋ค. ๋ชจ๋ ํ์ ํน์ ์ํฉ์์ ๋งค์ฐ ์ค์ํ๊ฑฐ๋, ์ฌ๋ฌ ๋์๋ค ์ฌ์ด์์์ ์๊ฐ์ ํ์ฐํ๊ฒ ์ ์ฝํฉ๋๋ค.
2015-12-30 16:47:03 +00:00
- ์ด ๋ฌธ์๋ ๋ฆฌ๋
์ค๋ฅผ ์ํ๊ฒ์
๋๋ค. "[OS X only](#os-x-only)"์ธ์
์ ์ ์ธํ๊ณ ๋ง์ด์ฃ . ์ผ๋ถ๋ MacOS์์ ๋๊ฐ์ด ์ ์ฉ๋์ง ์์ต๋๋ค(Cygwin์์ ์กฐ์ฐจ ๋ง์ด์ฃ ).
2015-07-10 00:36:09 +00:00
- ์ธํฐ๋ํฐ๋ธ Bash์ ์ด์ ์ด ๋ง์ถ์ด์ ธ์์ต๋๋ค๋ง, ๋๋ถ๋ถ์ ํ์ ๋ค๋ฅธ ์์ด๋, general Bash ์คํฌ๋ฆฝํธ์์๋ ๋์ํฉ๋๋ค.
- ์ด ๋ฌธ์๋ "์คํ ๋ค๋" ์ ๋์ค ์ปค๋งจ๋์ ํน์ ํจํค์ง ์ค์น๋ฅผ ํ์๋ก ํ๋ ๊ฒ ๋ ๋ค ํฌํจํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ค๋ฃจ๋ ์คํ ๋ค๋ ์ปค๋งจ๋์ ํน์ ํจํค์ง์ ๋ํ ๊ฒ์ ํฌํจ๋ ๋งํผ ์ถฉ๋ถํ ์ค์ํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
๋
ธํธ:
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ด ๋ฌธ์๋ฅผ ํ ํ์ผ๋ก ์ ์งํ๊ธฐ ์ํด์, ์ปจํ
์ธ ๋ค์ ์์์ ์ธ ๋ ํผ๋ฐ์ค ํํ๋ก ํฌํจ๋์ด์์ต๋๋ค. ํ ๊ฐ๋
์ด๋ ๋ช
๋ น์ด์ ๋ํด ์๊ฒ ๋ ํ์, ๋ค๋ฅธ๊ณณ์์ ๊ทธ์๋ํ ์ข ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์๋งํผ ๋น์ ์ ๋๋ํ ๊ฒ์
๋๋ค. `apt-get` , `yum` , `dnf` , `pacman` , `pip` , `brew` (ํน์ ์ ์ ํ ๋ค๋ฅธ ๊ฒ)์ ์ด์ฉํด ์ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ธ์.
- [Explainshell ](http://explainshell.com/ )์ ์ด์ฉํด์ ๊ฐ๊ฐ์ ์ปค๋งจ๋, ์ต์
, ํ์ดํ๋ ๊ทธ ์ธ ๋ฑ๋ฑ์ด ์ด๋ค๊ฒ์ธ์ง ์์๋ณด์ญ์์ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## Basics
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๊ธฐ๋ณธ Bash๋ฅผ ๋ฐฐ์ฐ์ธ์. ๋งํ์๋ฉด, ์ต์ํ `man bash` ๋ฅผ ์คํํ๊ณ , ์ ๋ถ๋ฅผ ํ์ด ๋ณด์ธ์. ๋งค๋ด์ผ์ ๋ด์ฉ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ฌ์ฐ๋ฉฐ ๊ทธ๋ฆฌ ๊ธธ์ง ์์ต๋๋ค. ๋ค๋ฅธ ์๋ค ๋ํ ์ข์ต๋๋ค๋ง, Bash๋ ๊ฐ๋ ฅํ๊ณ ์ธ์ ๋ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค( *์ค์ง* zsh, fish, ๊ทธ ์ธ์ ์๋ง์ ๋น์ ์ ๋
ธํธ๋ถ์์ ์๋ํ๋ฉด์ ๋ฐฐ์ฐ๋ ๊ฒฝ์ฐ์๋, ๋ง์ ๊ฒฝ์ฐ ์ ํ์ด ์๊ธธ๊ฒ์
๋๋ค. ์ด๋ฏธ ์กด์ฌํ๋ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ฑ์ ์ผ์์ ๋ง์ด์ฃ ).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ํ
์คํธ ๊ธฐ๋ฐ ์๋ํฐ๋ฅผ ์ต์ํ ํ๋์ ๋ ๋ค๋ฃฐ ์ ์๊ฒ ๋ฐฐ์ฐ์ธ์. Vim(`Vi`)๊ฐ ์ด์์ ์
๋๋ค. ํฐ๋ฏธ๋์์ ์จ๊ฐ ์์
์ ํ๋๋ฐ ๋ค๋ฅธ ์ค์ง์ ์ธ ๊ฒฝ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ด์ฃ (Emacs, ๋ํ IDE ๋๋ ๋ชจ๋ ํ์คํฐ์ค๋ฌ์ด ์๋ํฐ๋ฅผ ๋๋ถ๋ถ์ ์์
์ ์ฌ์ฉํ๋ค๊ณ ํด๋ ๋ง์ด์ฃ ).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `man` ์ ์ด์ฉํด์ ๋ฌธ์๋ฅผ ์ฝ๋ ๋ฒ์ ๋ฐฐ์ฐ์ธ์(ํธ๊ธฐ์ฌ ๋ง์ ์ฌ๋์ ์ํด์ ํ๋ ์๊ธฐ์
๋๋ค๋ง, `man man` ์ ์น์
๋ฒํธ๋ค์ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1์ "regular" ์ปค๋งจ๋, 5๋ files/conventions, ๊ทธ๋ฆฌ๊ณ 8์ administration์ด์ฃ ). `apropos` ๋ฅผ ํ์ฉํด์ man ํ์ด์ง๋ฅผ ์ฐพ์ผ์ธ์. ๋ช๋ช ์ปค๋งจ๋๋ ์คํ๊ฐ๋ฅํ ์ปค๋งจ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ ์์๋์ธ์. ํ์ง๋ง Bash ๋นํธ์ธ ํจ์๋ค์ `help` ์ `help -d` ๋ฅผ ์ด์ฉํด์ ๋์๋ง์ ๋ณผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-14 04:45:24 +00:00
- `>` ์ `<` , `|` ๋ฅผ ์ด์ฉํ ํ์ดํ๋ฅผ ์ฌ์ฉํด์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ฆฌ๋ค์ด๋ ์
์ ๋ฐฐ์ฐ์ธ์. `>` ๋ ์ถ๋ ฅ ํ์ผ์ ๋ฎ์ด ์์ฐ๊ณ , `>>` ๋ ๋ง๋ถ์ด๋๊ฑธ ์์๋์ธ์. stdout(์ญ์ฃผ: ํ์ค ์ถ๋ ฅ)๊ณผ stderr(์ญ์ฃผ: ํ์ค ์๋ฌ ์ถ๋ ฅ)์ ๋ํด์ ๋ฐฐ์ฐ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `*` (๊ทธ๋ฆฌ๊ณ ์๋ง๋ `?` ๊ณผ `{` ...`}`)์ ์ด์ฉํ๋ ํ์ผ ๊ธ๋กญ(glob) ํ์ฅ์ ๋ฐฐ์ฐ์ธ์. ๊ทธ๋ฆฌ๊ณ ์๋ฐ์ดํ`"`์ ํ๋ฐ์ดํ`'`์ ์ฐจ์ด๋ฅผ ๋ฐฐ์ฐ์ธ์. (๋ณ์ ํ์ฅ์ ๋ํด์ ๋ ๋ณด๋ ค๋ฉด ์๋๋ฅผ ์ฐธ์กฐํ์ธ์)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Bash ์์
๊ด๋ฆฌ์ ์ต์ํด์ง์ธ์. `&` , **ctrl-z** , **ctrl-c** , `jobs` , `fg` , `bg` , `kill` ๋ฑ๋ฑ.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `ssh` ๋ฅผ ๋ฐฐ์ฐ๊ณ , `ssh-agent` , `ssh-add` ๋ฅผ ํตํด์ ๋น๋ฐ๋ฒํธ ์๋ ์ธ์ฆ ๋ฐฉ์์ ๊ธฐ๋ณธ์ ๋ฐฐ์ฐ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- ๊ธฐ๋ณธ ํ์ผ ๊ด๋ฆฌ: `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` .
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๊ธฐ๋ณธ ๋คํธ์ํฌ ๊ด๋ฆฌ: `ip` ๋๋ `ifconfig` , `dig` .
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- ์ ๊ทํํ์(regular expression)์ ์ ์์๋์ธ์. ๊ทธ๋ฆฌ๊ณ `grep` /`egrep`์ ๋ค์ํ ํ๋๊ทธ๋ ์์๋์ธ์. `-i` , `-o` , `-v` ,`-A`, `-B` ์ `-C` ์ต์
์ ์์๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `apt-get` , `yum` , `dnf` ๋๋ `pacman` ์ ์ด์ฉํ์ฌ ํจํค์ง๋ฅผ ์ฐพ๊ณ ์ค์นํ๋ ๋ฒ์ ๋ฐฐ์ฐ์ธ์. ๊ทธ๋ฆฌ๊ณ `pip` ๊ฐ ์ค์น๋์ด์๋์ง ํ์ธํด์, ํ์ด์ ๊ธฐ๋ฐ์ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ค์นํ ์ ์๋๋ก ํ์ธ์(๋ฐ์ ์ค๋ช
๋ ๊ฒ์ค ๋ช๊ฐ์ง๋ `pip` ๋ฅผ ์ด์ฉํด ์ค์นํ๋๊ฒ ์ ์ผ ์ฝ์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## Everyday use
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Bash ์์ **Tab** ์ ์ฐ๋ฉด argument๋ฅผ ์์ฑํ๊ณ , **ctrl-r** ์ ์ฐ๋ฉด ์ปค๋งจ๋ ํ์คํ ๋ฆฌ์์ ๊ฒ์ํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- Bash์์ **ctrl-w** ๋ ๋ง์ง๋ง ๋จ์ด๋ฅผ ์ง์๋๋ค. **ctrl-u** ๋ ๋ผ์ธ์ ์ฒ์๊น์ง ์ ๋ถ๋ค ์ง์๋๋ค. **alt-b** ์ **alt-f** ๋ฅผ ์ด์ฉํด์ ๋จ์ด ๋จ์๋ก ์ด๋ํ ์ ์์ต๋๋ค. **ctrl-a** ๋ก ๋ผ์ธ์ ์์์ ์ผ๋ก ์ด๋ํ ์ ์๊ณ **ctrl-e** ๋ก ๋ผ์ธ์ ๋์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. **ctrl-k** ๋ ์ปค์ ์์น๋ถํฐ ๋ผ์ธ์ ๋๊น์ง ์ง์๋๋ค. **ctrl-l** ์ ํ๋ฉด์ ๊นจ๋ํ๊ฒ ํฉ๋๋ค. `man readline` ์ ์ด์ฉํด์ Bash์ ๊ธฐ๋ณธ ํค ์กฐํฉ์ ์ดํด๋ณด์ธ์. ๋ง์ ๊ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด **alt-.** ๊ฐ์ ๊ฒฝ์ฐ, ์ด๊ฑด argument๋ฅผ ๋์๊ฐ๋ฉด์ ๋ํ๋ด๊ณ **alt-** *๋ ๊ธ๋กญ์ ํ์ฅํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- vi ์คํ์ผ์ ํค ์กฐํฉ์ ์ฌ๋ํ๋ค๋ฉด, `set -o vi` ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ต๊ทผ ์ฌ์ฉํ ์ปค๋งจ๋๋ฅผ ๋ณด๋ ค๋ฉด `history` ๋ฅผ ์
๋ ฅํ์ธ์. `!$` (๋ง์ง๋ง argument), `!!` (๋ง์ง๋ง ์ปค๋งจ๋)์ ๊ฐ์ ์ฝ์ด๋ค์ด ๋งค์ฐ ๋ง์ต๋๋ค. ๋น๋ก ์ด๋ฐ ๊ฒ๋ค์ด **ctrl-r** ์ด๋ **alt-.** ๋ช
๋ น์ด๋ก ์์ฃผ ๋์ฒด๋๊ธฐ ์ฝ์ง๋ง์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ด์ ์ ์์
ํ๋ ๋๋ ํ ๋ฆฌ๋ก ๋์๊ฐ๋ ค๋ฉด `cd -` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ปค๋งจ๋๋ฅผ ํ์ดํ ํ๋ ๋์ค์ ๋ง์์ด ๋ฐ๋์๋ค๋ฉด, **alt-#** ์ ์ณ์ ์์์ ์ `#` ์ ์ฝ์
ํ๊ณ , ์ํฐ๋ฅผ ์ณ์ ์ฝ๋ฉํธ๋ก ์ฌ๊ฒจ์ง๊ฒ ํ์ธ์(๋๋ **ctrl-a** , ** #**, **enter** ). ๋์ค์ ์ปค๋งจ๋ ํ์คํ ๋ฆฌ์์ ์ฐพ์์ ํ์ดํ ์ค์ด์๋ ์ปค๋งจ๋๋ก ๋์์ฌ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `xargs` (ํน์ `parallel` )๋ฅผ ์ฌ์ฉํ์ธ์. ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. ๋ผ์ธ๋น ๋ช๊ฐ์ ์์ดํ
์ด ์คํ๋๊ฒ ํ ๊ฒ์ธ์ง(`-L`) ๊ทธ๊ฑธ ๋ณ๋ ฌ๋ก ํ ๊ฒ์ธ์ง(`-P`)๋ฅผ ์ ์ดํ ์ ์๋ค๋๊ฑธ ๊ธฐ์ตํ์ธ์. ์ ๋๋ก ํ๊ณ ์๋์ง ํ์ ํ ์ ์๋ค๋ฉด `xargs echo` ๋ฅผ ๋จผ์ ์คํํด๋ณด์ธ์. ๋ `-I{}` ๋ ๊ฐํธํฉ๋๋ค. ์์:
2015-07-04 06:17:01 +00:00
```bash
find . -name '*.py' | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
```
2015-07-10 00:36:09 +00:00
- `pstree -p` ๋ ํ๋ก์ธ์ค ํธ๋ฆฌ๋ฅผ ํ์ํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `pgrep` ๊ณผ `pkill` ์ ์ฌ์ฉํด์ ํ๋ก์ธ์ค๋ฅผ ์ฐพ๊ฑฐ๋ ์๊ทธ๋์ ๋ณด๋ด์ธ์(`-f`๊ฐ ์ ์ฉํฉ๋๋ค).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ํ๋ก์ธ์ค์ ๋ณด๋ผ ์ ์๋ ๋ค์ํ ์๊ทธ๋์ ์์๋์ธ์. ์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค๋ฅผ ์ผ์์ค์ง ํ ๋๋ `kill -STOP [pid]` ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ `man 7 signal` ์์ ๋ณผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๋์๊ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, `nohup` ์ด๋ `disown` ์ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋ฆฌ์ค๋(์ญ์ฃผ: ํน์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท ๋ฆฌ์ค๋)์ ํ๊ณ ์๋์ง ์๋ ค๋ฉด `netstat -lntp` ๋ `ss -plat` ์ ์ฌ์ฉํด์ ์ ์ ์์ต๋๋ค(TCP์ผ ๊ฒฝ์ฐ์
๋๋ค. UDP์ ๊ฒฝ์ฐ `-u` ์ต์
์ ์ถ๊ฐํ์ธ์).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `lsof` ๋ฅผ ์ด์ฉํด์ ์ด๋ ค์๋ ์์ผ๊ณผ ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Bash ์คํฌ๋ฆฝํธ์์ `set -x` ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฒ๊น
์ฉ ์ถ๋ ฅ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์คํธ๋ฆญํธ ๋ชจ๋(strict mode)๊ฐ ๊ฐ๋ฅํ ๋๋ฉด ์ฌ์ฉํ์ธ์. `set -e` ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฌ์๋ ์ค๋จ์ํค๊ฒ๋ฉ๋๋ค. `set -o pipefail` ์ ์ฌ์ฉํ๋ฉด ์๋ฌ์ ๋ํด์ ๊ฐ๊ฒฝํ ๊ธฐ์ค์ ์ ์ฉํฉ๋๋ค(์ด ์ฃผ์ ๊ฐ ์กฐ๊ธ ๋ฏธ๋ฌํ์ง๋ง ๋ง์ด์ฃ ). ๋ ๋ณต์กํ ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ `trap` ๋ํ ์ฌ์ฉํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `uptime` ์ด๋ `w` ๋ฅผ ์ด์ฉํด์ ์์คํ
์ด ์ผ๋ง๋ ์ค๋ ์คํ์ค์ธ์ง ์ ์ ์์ต๋๋ค.
2015-07-12 04:24:56 +00:00
- ์์ฃผ ์ฌ์ฉ๋๋ ์ปค๋งจ๋์ ๋ํด์ `alias` ๋ฅผ ์ด์ฉํด์ ์์ปท์ ๋ง๋์ธ์. ์๋ฅผ๋ค์ด, `alias ll='las -latr'` ์ ์ ๋จ์ถ๋ช
๋ น `ll` ์ ๋ง๋ญ๋๋ค.
2015-07-10 00:36:09 +00:00
- Bash ์คํฌ๋ฆฝํธ์์ (๊ดํธ๋ก ๋๋ฌ์์ฌ ์์ฑ๋) ์๋ธ์์ ์ปค๋งจ๋๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์
๋๋ค. ์ผ๋ฐ์ ์ธ ์๋ก, ์์๋ก ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์์
ํ๋ ๊ฒ์ด ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
```bash
# do something in current dir
(cd /some/other/dir & & other-command)
# continue in original dir
```
2015-07-10 00:36:09 +00:00
- Bash ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ค์ํ ๋ณ์ ํ์ฅ์ด ์๋ค๋ ๊ฒ์ ์์๋์ธ์. ๋ณ์๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ค๋ฉด `${name:?error message}` ๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด Bash ์คํฌ๋ฆฝํธ๊ฐ ํ๋์ argument๋ฅผ ์๊ตฌํ๋ค๋ฉด, `input_file=${1:?usage: $0 input_file}` ๋ฅผ ์ฌ์ฉํ์ธ์. ์ฐ์ ํ์ฅ์ `i=$(( (i + 1) % 5 ))` ์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค. ์์ด์ `{1...10}` ์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์์ด ํธ๋ฆฌ๋ฐ(trimmin)์ `${var%suffix}` ์ด๋ `${var#prefix}` ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด `var=foo.pdf` ๋ผ๋ฉด, `echo ${var$.pdf}.txt` ๋ `foo.txt` ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์ปค๋งจ๋์ ์คํ ๊ฒฐ๊ณผ ์ถ๋ ฅ๋ฌผ์ `<(some command)` ์ฒ๋ผ ์ด์ฉํด์ ํ์ผ์ฒ๋ผ ๋ค๋ค์ง ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด ๋ก์ปฌ์ `/etc/hosts` ๋ฅผ ๋ฆฌ๋ชจํธ์ ๊ฒ๊ณผ ๋น๊ตํ๋ ค๋ฉด ๋ค์์ฒ๋ผ ํ๋ฉด ๋ฉ๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
diff /etc/hosts < (ssh somehost cat /etc/hosts)
```
2015-07-10 00:36:09 +00:00
- `cat << EOF...` ๊ฐ์ "here documents"์ ๋ํด์ ์์๋์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Bash์์ ํ์ค ์ถ๋ ฅ(standard output)๊ณผ ํ์ค ์๋ฌ(standard error) ๋ ๋ค `some-command > logfile 2>&1` ๊ฐ์ ๋ช
๋ น์ด๋ก ๋ฆฌ๋ค์ด๋ ํธํ ์ ์์ต๋๋ค. ์ข
์ข
, ์ปค๋งจ๋๊ฐ ์ด๋ฆฐ ํ์ผ ํธ๋ค์ ๋จ๊ธฐ์ง ์๋ ๊ฒ์ ํ์คํ ํ๊ธฐ ์ํด, ํ์ฌ ์์
์ค์ธ ํฐ๋ฏธ๋์์ ๋ช
๋ น์ด์ `</dev/null` ์ ๋ง๋ถ์ด๋ ๊ฒ์ ์ข์ ์ต๊ด์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `man ascii` ๋ฅผ ์ฌ์ฉํด์ ํฅ์ค๊ฐ๊ณผ 10์ง ๊ฐ์ด ๊ฐ์ด ์๋ ํ๋ฅญํ ASCII ํ
์ด๋ธ์ ๋ณผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ธ์ฝ๋ฉ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด `man unicode` , `man utf-8` ๊ทธ๋ฆฌ๊ณ `man latin1` ์ ์ด์ฉํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `screen` ์ ์ด์ฉํ๊ฑฐ๋ [`tmux` ](https://tmux.github.io/ )๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ๋ค์ค๋ถํ ํ ์ ์์ต๋๋ค. ํนํ ๋ฆฌ๋ชจํธ ssh ์ธ์
์ ๋ผ์ด๋ด๊ณ (detach) ๋ค์ ๋ถ์ด๋๋ฐ(re-attach)ํ๋๋ฐ ์ ์ฉํฉ๋๋ค. ์ธ์
์ ์๊ตฌํ ์ ์งํ๋ ์ต์ํ์ ๋์์ ์ค์ง `dtach` ๋ฐ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ssh์์ `-L` ์ด๋ `-D` (๊ฐ๋ `-R` )๋ฅผ ์ด์ฉํด์ ํฌํธ ํฐ๋๋งํ๋ ๊ฒ์ ์์๋์๋ฉด ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌ๋ชจํธ ์๋ฒ๋ฅผ ๊ฒฝ์ ํด์ ์น์ฌ์ดํธ์ ์ ์ํ๋ค๊ฑฐ๋ ํ ๋ ๋ง์ด์ฃ .
- ๋ช๊ฐ์ง ssh ์ค์ ์ ์ต์ ํํ๋ ๊ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด `~/.ssh/config` ๋ ํน์ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ๊ฒ์ ํํผํ๊ธฐ ์ํด ์์ถ์ ์ฌ์ฉํ๋ ์ค์ ๋ค์ ๋ด๊ณ ์์ต๋๋ค(ํนํ scp ๋ช
๋ น์ด๋ฅผ ๋ฎ์ ๋์ญํญ ์ฐ๊ฒฐ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก์ปฌ ์ ์ด ํ์ผ์์ ๊ฐ์ ์๋ฒ๋ก ์ฐ๊ฒฐํ๋ ์ฑ๋์ ๋ค์คํํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
```
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes
```
2015-07-10 00:36:09 +00:00
- ssh์ ๋ช ๊ฐ์ง ์ต์
๋ค์ ๋ณด์์ ๋ฏผ๊ฐํ ์ต์
์ด๋ฉฐ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ๋์ด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ธ๋ท, ํธ์คํธ ๋๋ ์ ๋ขฐ๋๋ ๋คํธ์ํฌ์์ `StrictHostKeyChecking=no` , `ForwardAgent=yes` ์ ์ฌ์ฉํ๋ ๊ฒ ๋ฑ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์์คํ
์ค์ ์ ์ ์ฉํ์ง๋ง `ls` ๋ก ์ป์ ์ ์๊ณ ์ฝ๊ฒ ์๋ง์ด ๋๊ธฐ ์ฌ์ด ํ์ผ์ ๊ถํ์ 8์ง๋ฒ ํํ๋ก ์ป์ผ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
```sh
stat -c '%A %a %n' /etc/timezone
```
2015-07-12 04:24:56 +00:00
- ๋ค๋ฅธ ์ปค๋งจ๋์ ์ถ๋ ฅ๊ณผ ์ํธ์์ฉํ๋ฉด์ ๊ฐ์ ์ ํํ๋ ค๋ฉด [`percol` ](https://github.com/mooz/percol )์ด๋ [`fzf` ](https://github.com/junegunn/fzf )๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๋ค๋ฅธ ์ปค๋งจ๋(์๋ฅผ ๋ค๋ฉด `git` )์ ์ถ๋ ฅ์ ๊ธฐ๋ฐํ๋ ํ์ผ๊ณผ ์ํธ์์ฉํ๋ ค๋ฉด, `fpp` ([PathPicker](https://github.com/facebook/PathPicker))๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ํ์ฌ ๋คํธ์ํฌ์ ์๋ ์ฌ์ฉ์๋ค์๊ฒ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ(๊ณผ ํ์ ๋๋ ํ ๋ฆฌ)๋ฅผ ์ํ ๋จ์ํ ์น์๋ฒ๋ฅผ ์ํ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์:
`python -m SimpleHTTPServer 7777` (7777ํฌํธ, Python 2) ๊ทธ๋ฆฌ๊ณ `python -m http.server 7777` (7777ํฌํธ, Python 3).
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- ๊ถํ์ ๊ฐ์ง๊ณ ์ปค๋งจ๋๋ฅผ ์คํํ๋ ค๋ฉด, `sudo` (root ์ ์ ๊ถํ)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, `sudo -u` (๋ค๋ฅธ ์ ์ ๊ถํ)์ ์ฌ์ฉํ์ธ์. `su` ๋ `sudo bash` ๋ ์์ ํด๋น ์ ์ ์ธ ๊ฒ์ฒ๋ผ ์คํ์ํต๋๋ค. `su -` ๋ ์ ๋ก๊ทธ์ธ์ root์ด ๋ค๋ฅธ ์ ์ ์ธ๊ฒ์ฒ๋ผ ์๋ฎฌ๋ ์ดํธ ํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## Processing files and data
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์ฐพ์ผ๋ ค๋ฉด `find . -iname '*something*'` (๋๋ ๋น์ทํ๊ฒ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋๊ณณ์ ์๋ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์ฐพ์ผ๋ ค๋ฉด `locate something` ์ ์ฌ์ฉํ์ธ์(ํ์ง๋ง ์ธ๋ด๋ฅผ ๊ฐ์ ธ์ผํฉ๋๋ค. `updatedb` ๊ฐ ์ต๊ทผ์ ์์ฑ๋ ํ์ผ์ ์ธ๋ฑ์ฑํ์ง ์์์ ์ ์์ต๋๋ค).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ์์ค๋ ๋ฐ์ดํฐ ํ์ผ๋ค์์ ์ผ๋ฐ์ ์ธ ๊ฒ์์ ํ ๋๋(`grep -r`๋ณด๋ค ๋ ๋ณต์กํ ๋), [`ag` ](https://github.com/ggreer/the_silver_searcher )๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- HTML์ ํ
์คํธ๋ก ๋ณํํ ๋๋ `lynx -dump -stdin` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๋งํฌ๋ค์ด, HTML, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ข
๋ฅ์ ๋ฌธ์ ๋ณํ์๋ [`pandoc` ](http://pandoc.org/ )์ ์๋ํด๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- XML์ ๋ฐ๋์ ๋ค๋ค์ผํ๋ค๋ฉด, `xmlstarlet` ์ ์ฌ์ฉํ์ธ์. ์ค๋๋์์ง๋ง ์ข์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- JSON์๋ [`jq` ](http://stedolan.github.io/jq/ )๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Excel์ด๋ CSVํ์ผ์๋ [csvkit ](https://github.com/onyxfish/csvkit )๊ฐ `in2csv` , `csvcut` , `csvjoin` , `csvgrep` ์ธ ๋ค๋ฅธ ๋๊ตฌ๋ค์ ์ ๊ณตํฉ๋๋ค..
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- Amazon S3๋ฅผ ๋ค๋ฃฐ๋๋ [`s3cmd` ](https://github.com/s3tools/s3cmd )๊ฐ ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ [`s4cmd` ](https://github.com/bloomreach/s4cmd )๋ ๋น ๋ฆ
๋๋ค. Amazon์ [`aws` ](https://github.com/aws/aws-cli )๋ ๋ค๋ฅธ AWS ๊ด๋ จ ์์
์ ํต์ฌ์ ์ธ ๋๊ตฌ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `sort` ์ `uniq` ์ ๋ํด์ ์์๋์ธ์. uniq์ `-u` , `-d` ์ต์
์ ํฌํจํด์ ๋ง์ด์ฃ . ํ๋จ์ one-liner๋ฅผ ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ `comm` ๋ ๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ํ
์คํธ ํ์ผ๋ค์ ๋ค๋ฃจ๋ `cut` , `paste` ๊ทธ๋ฆฌ๊ณ `join` ์ ๋ํด์ ์์๋์ธ์. ๋ง์ ์ฌ๋๋ค์ด `cut` ์ ์ฌ์ฉํ์ง๋ง `join` ์ ๋ํด์๋ ์๊ณ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `wc` ๋ฅผ ์ด์ฉํด์ ํ(`-l`), ์บ๋ฆญํฐ(`-m`), ๋จ์ด(`-w`) ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํธ(`-c`)๋ฅผ ์ธ๋ ๊ฒ์ ์์๋์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `tee` ๋ฅผ ์ด์ฉํด์ `ls -al | tee file.txt` ์ฒ๋ผ, ํ์ค์
๋ ฅ(stdin)์์ ๋ณต์ฌํด์ ํ์ผ๋ก ๋ณด๋ด๊ฑฐ๋, ํ์ค ์ถ๋ ฅ(stdout)์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ์์๋์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- ๋ก์ผ์ผ์ด ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ์ ์ ๋ ฌ ์์(collation)์ ํผํฌ๋จผ์ค๋ฅผ ํฌํจํด์ ๋ฏธ๋ฌํ๊ฒ ์ํฅ์ ๋ผ์น๋ ๊ฒ์ ์์๋์ธ์. ๋๋ถ๋ถ์ ๋ฆฌ๋
์ค ์ค์น๋ `LANG` ์ด๋ ๋ค๋ฅธ ๋ก์ผ์ผ ๋ณ์๋ฅผ US English์ ๊ฐ์ ๋ก์ปฌ ์ธํ
์ผ๋ก ์ค์ ํฉ๋๋ค. ํ์ง๋ง ๋ก์ผ์ผ์ ๋ฐ๊ฟ ๊ฒฝ์ฐ ์ ๋ ฌ๋ ๋ฐ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ฃผ์ํ์ธ์. ๊ทธ๋ฆฌ๊ณ i18n ๋ฃจํด๋ค๋ ์ ๋ ฌ์ด๋ ๋ค๋ฅธ ์ปค๋งจ๋๋ค์ *๋ช ๋ฐฐ* ๋๋ฆฌ๊ฒ ํ ์ ์์ต๋๋ค. `export LC_ALL=C` ๋ฅผ ์ฌ์ฉํ์ฌ, ์ด๋ค ์ํฉ์์๋( ๋ฐ์ ์๋ ์งํฉ(set) ์์
์ด๋, ์ ์ผ์ฑ ์์
๋ฑ) i18n์ ๋๋ฆฐ ๋ฃจํด๋ค์ ํต์ฑ๋ก ์์ ํ๊ฒ ๋ฌด์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํต์ ์ธ ๋ฐ์ดํธ ๊ธฐ๋ฐ์ ์ ๋ ฌ ์์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ๊ฐ๋จํ ๋ฐ์ดํฐ ์กฐ์์ ํ ๋ `awk` ์ `sed` ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ์์๋์ธ์. ์๋ฅผ ๋ค์ด ํ
์คํธ ํ์ผ์ ์ธ๋ฒ์งธ ์ด์ ์ซ์๋ค์ ๋ชจ๋ ๊ฐ์ ๋ํ๋ ๊ฒ์ ์ด๋ ๊ฒ ํฉ๋๋ค: `awk '{ x += $3 } END { print x }'` . ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ ์ผ์ ํ๋ ํ์ด์ฌ ์ฝ๋๋ณด๋ค 3๋ฐฐ์ ๋ ๋น ๋ฅด๊ณ , 1/3์ ๋์ ๊ธธ์ด๋ฐ์ ์๋ฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ํ๋ ์ด์์ ํ์ผ์์ ์ถ๊ฐ์ ์ธ ํ์ผ์ ์์ฑํ์ง ์๊ณ ๋ฌธ์์ด ๋ฐ๊พธ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ธ์.
2015-07-04 06:17:01 +00:00
```sh
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
```
2015-07-10 05:21:10 +00:00
- ํ๋ฒ์ ๋ง์ ํ์ผ์ ํจํด์ ๋ฐ๋ผ์ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๋ฅผ ํ๋ ค๋ฉด, `rename` ์ ์ฌ์ฉํ์ธ์. ๋ณด๋ค ๋ณต์กํ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๋, [`repren` ](https://github.com/jlevy/repren )์ด ๋์์ด ๋ ๊ฒ์
๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
# Recover backup files foo.bak -> foo:
rename 's/\.bak$//' *.bak
# Full rename of filenames, directories, and contents foo -> bar:
repren --full --preserve-case --from foo --to bar .
```
2015-07-10 05:21:10 +00:00
`shuf` ๋ฅผ ์ฌ์ฉํด์ ํ์ผ์์ ์์์ ํ์ ์ ํํ๊ฑฐ๋, ์์ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- `sort` ์ ์ต์
๋ค์ ์์๋์ธ์. `-n` ์ ์ซ์๋ฅผ ์ ๋ ฌํ ๋, `-h` ๋ ์ฌ๋์ด ์ฝ์ ์ ์๊ฒ ์์ฑํ ์ซ์์ ๊ฒฝ์ฐ(`du -h`์ ๊ฐ์ ํํ). ํค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋์ธ์(`-t`์ `-k` ). ํน๋ณํ, ์ฒซ๋ฒ์งธ ํ๋๋ก๋ง ์ ๋ ฌํด์ผ ํ๋ค๋ฉด `-k1,1` ์ ์ ์ด์ผ ํ๋ค๋๊ฑธ ์ฃผ์ํ์ธ์. `-k1` ์ ๋ชจ๋ ํ์ ๋ํด์ ์ ๋ ฌํ๋ผ๋ ๋ป์
๋๋ค. ์์ ์ ์ธ ์ ๋ ฌ(`sort -s`)๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ๋ค์ด, ๋จผ์ 2๋ฒ ํ๋๋ก ์ ๋ ฌํ๊ณ , ๊ทธ ๋ค์์ 1๋ฒ ํ๋๋ก ์ ๋ ฌํ ๊ฒฝ์ฐ, `sort -k1,1 | sort -s -k2,2` ์ฒ๋ผ ํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ๋ง์ฝ ํญ(tab)๋ฌธ์๋ฅผ Bash ์ปค๋งจ๋ ๋ผ์ธ์ ์ฌ์ฉํด์ผ ํ ํ์๊ฐ ์๊ธธ ๊ฒฝ์ฐ(์๋ฅผ ๋ค๋ฉด -t argument๋ฅผ ์ด์ฉํด ์ ๋ ฌ ํ ๋), **ctrl-v** ** [Tab]**ํค๋ฅผ ๋๋ฅด๊ฑฐ๋, `$'\t'` ๋ฅผ ์ฐ์ธ์(๋ฌธ์์ชฝ์ด ๋ณต์ฌ๋ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์์ด ๋ ๋ซ์ต๋๋ค.).
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ์์ค์ฝ๋๋ฅผ ํจ์นํ๋ ๊ธฐ๋ณธ ๋๊ตฌ๋ `diff` ์ `patch` ์
๋๋ค. diff์ ํต๊ณ ์์ฝ์ ๋ณด๋ ค๋ฉด `diffstat` ๋ฅผ ๋ณด์ธ์. `diff -r` ์ ๋ชจ๋ ๋๋ ํ ๋ฆฌ์ ๋ํด ์์
์ ์ํํ๋๊ฑธ ์์๋์ธ์. `diff -r tree1 tree2 | diffstat` ์ผ๋ก ๋ณ๊ฒฝ ๋ด์ญ์ ์์ฝ์ ๋ณผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๊ฐ๋จํ๊ฒ hex ๋คํ๋ฅผ ๋จ๊ณ ์ถ์ ๋๋ `hd` ๋ฅผ ์ฐ์ธ์. ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์์ ํ ๋๋ `bvi` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- `strings` (๊ทธ๋ฆฌ๊ณ `grep` , ๋ฑ) ์ ์ฌ์ฉํด์ ๋ฐ์ด๋๋ฆฌ ํ์ผ ์์์ ๋ฌธ์์ด ๋นํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ๋ฐ์ด๋๋ฆฌ ํ์ผ์ diffํ๋ ค๋ฉด(๋ธํ ์์ถ), `xdelta3` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- ํ
์คํธ ํ์ผ ์ธ์ฝ๋ฉ์ ๋ณ๊ฒฝํ๋ ค๋ฉด `iconv` ๋ฅผ ์๋ํด๋ณด์ธ์. ๋๋ `uconv` ๋ ๋ ๋ณต์กํ ๋ชฉ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. `uconv` ๋ ๋ช๊ฐ์ง ๋ณต์กํ ์ ๋์ฝ๋๋ฅผ ์ง์ํฉ๋๋ค. ์๋ฅผ๋ค์ด, ์๋ฌธ์ํํ๊ณ ๋ชจ๋ ์
์ผํธ๋ฅผ ์ ๊ฑฐํ๋(ํ์ฅํ๊ณ , ๋จ์ดํธ๋ฆฌ๋ ๊ฒ์ ์ด์ฉํด์) ์ปค๋งจ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
```
2015-07-10 05:21:10 +00:00
- ํ์ผ์ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋๋ ค๋ฉด `split` (ํ์ผ์ ์ฌ์ด์ฆ๋ก ๋๋)์ด๋ `csplit` (ํ์ผ์ ํจํด์ผ๋ก ๋๋)์ ๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 05:21:10 +00:00
- `zless` , `zmore` , `zcat` ๊ทธ๋ฆฌ๊ณ `zgrep`์ ์ด์ฉํด์ ์์ถ๋ ํ์ผ์ ๋ํด ์์
ํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## System debugging
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ์น ๋๋ฒ๊น
์ ์ํด์๋ `curl` ์ `curl -I` ๊ฐ ๋์์ด ๋๊ณ , `wget` ๋ ๊ฝค ๋์์ด ๋ฉ๋๋ค. ๊ทธ์ธ์ ๋ณด๋ค ํ๋์ ์ธ ๋ฐฉ์์ผ๋ก๋ [`httpie` ](https://github.com/jakubroztocil/httpie )์ด ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋์คํฌ/cpu/๋คํธ์ํฌ์ ์ํ๋ฅผ ์๊ธฐ ์ํด์๋ ๊ฐ๊ฐ `iostat` , `netstat` , `top` (ํน์ ๋ ๋์ ๋ช
๋ น์ด์ธ `htop` ), ๊ทธ๋ฆฌ๊ณ ํนํ `dstat` ์ ์ฌ์ฉํ์ธ์. ์์คํ
์ ์ด๋ ํ์ผ์ด ์ผ์ด๋ฌ๋์ง๋ฅผ ๋น ๋ฅด๊ฒ ์์๋ด๋๋ฐ ๋งค์ฐ ์ข์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋ณด๋ค ์์คํ
์ ์ฌ์ธต์ ์ธ ๋ฉด๋ค์ ๋ณด๋ ค๋ฉด [`glances` ](https://github.com/nicolargo/glances )๋ฅผ ์ฌ์ฉํด๋ณด์ธ์. ์ด ์ปค๋งจ๋๋ ํ ํฐ๋ฏธ๋์์ ์ฌ๋ฌ ์์คํ
์์ค์ ํต๊ณ์๋ฃ๋ค์ ๋ณด์ฌ์ค๋๋ค. ๋น ๋ฅด๊ฒ ์ฌ๋ฌ ์๋ธ์์คํ
๋ค์ ์ฒดํฌํ๋๋ฐ ๋งค์ฐ ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ฅผ ์์๋ณด๋ ค๋ฉด `free` ์ `vmstat` ๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด์ํด๋ณด์ธ์. ํนํ, "cached" ๊ฐ์ Linux kernel์ ์ํด file cache๋ก ์กํ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ด์ผ ํ๊ณ ๊ทธ๋์ "free"๊ฐ์ ๋ํด์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ณ์ฐํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- Java ์์คํ
์ ๋๋ฒ๊น
์ ์กฐ๊ธ ๋ค๋ฅธ์ํฉ์
๋๋ค. ํ์ง๋ง Oracle๊ณผ ๊ทธ ์ธ์ ํ์ฌ์์ ๋ง๋ ๋ค๋ฅธ JVM๋ค์์๋ `kill -3 <pid>` ๋ฅผ ์คํํ๋ฉด ์ ์ฒด stack trace์ ๋ณด์ heap์ ์ ๋ณด(์๊ธฐ๋ณ๋ก ๊ฐ๋น์ง ์ฝ๋ ํฐ์ ์ธ๋ถ์ ์ธ ๋ด์ฉ๊ฐ์ ๋งค์ฐ ์ ์ฉํ ์ ๋ณด)๋ฅผ ์์ฝํ์ฌ stderr๋ ๋ก๊ทธ๋ก ์ถ๋ ฅํด์ฃผ๋ฏ๋ก ๊ฐ๋จํ๊ฒ ์ ๋ณด๋ฅผ ์ป์ด์ฌ ์ ์์ต๋๋ค. JDK์ `jps` , `jstat` , `jstack` , `jmap` ๋ช
๋ น์ ์ ์ฉํฉ๋๋ค. [SJK tools ](https://github.com/aragozin/jvm-tools )์ ๋ ๊ณ ๊ธ ์ ๋ณด๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋คํธ์ํฌ ์ด์๋ค์ ์์๋ณด๊ธฐ ์ํด์๋ traceroute๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ์ด๋ณด๋ค ๋ ์ข์ `mtr` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋์คํฌ๊ฐ ์ ๊ฐ๋์ฐผ๋์ง ์์๋ณด๊ธฐ ์ํด์ `ncdu` ๋ฅผ ์ฌ์ฉํด๋ณด์ธ์. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ `du -sh *` ์ ๊ฐ์ ์ปค๋ฉ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ์ด๋ ํ ์์ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋์ญํญ(bandwidth)๋ฅผ ์ฐพ์๋ณด๋ ค๋ฉด `iftop` ๋ `nethogs` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- `ab` ๋ผ๋ ํด(Apache์ ๋ธ๋ ค์๋)์ ์ ์ํ๊ณ ๊ฐ๋จํ๊ฒ(quick-and-dirty) ์น์๋ฒ์ ์ฑ๋ฅ์ ์ฒดํฌํ๋๋ฐ ์ ์ฉํฉ๋๋ค. ๋ณด๋ค ๋ณต์กํ ๋ถํ ํ
์คํธ๋ฅผ ํ ๋๋ `siege` ๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๋ณด๋ค ์ฌ๊ฐํ ๊ฒฝ์ฐ์ ๋คํธ์ํฌ ๋๋ฒ๊น
์ ์ํด์๋ `wireshark` , `tshark` ๋๋ `ngrep` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- `strace` ์ `ltrace` ์ ๋ํด์ ์์๋ณด์ธ์. ์ด ์ปค๋งจ๋๋ค์ ๋ง์ผ ์ด๋ค ํ๋ก๊ทธ๋จ์์ failing, hanging ํน์ crashing์ด ์ผ์ด๋๊ฑฐ๋ ๊ทธ ์ธ์ ์ฌ๋ฌ๋ถ์ด ๋ฌด์จ์ด์ ์ธ์ง ์์ง ๋ชปํ๋ ์ํฉ์ด๋ ์ฑ๋ฅ์ ๋ํ ๋๋ต์ ์ธ ๋ด์ฉ์ ์ป๊ณ ์ ํ ๋ ์ ์ฉํ ๊ฒ์
๋๋ค. ํนํ ํ๋กํ์ผ๋ง์ ์ํ ์ต์
(`-c`)๊ณผ ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค์ ๋ถ์ด๊ธฐ ์ํ ์ต์
(`-p`)์ ๊ธฐ์ตํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(shared libraries) ๋ฑ์ ์ฒดํฌํ๊ธฐ ์ํด์๋ `ldd` ์ ๋ํด ์์๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- `gdb` ๋ฅผ ๊ฐ์ง๊ณ ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค์ ์ฐ๊ฒฐํ๊ณ ๊ทธ ํ๋ก์ธ์ค์ stack trace๋ค์ ์ป๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `/proc` ๋ฅผ ์ฌ์ฉํ์ธ์. ์ด๊ฒ์ ํ์ฌ ๋ฐ์ํ๊ณ ์๋ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ ๋ ์ข
์ข
๋๋๋๋ก ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค. ์์:`/proc/cpuinfo`, `/proc/meminfo` , `/proc/cmdline` , `/proc/xxx/cwd` , `/proc/xxx/exe` , `/proc/xxx/fd/` , `/proc/xxx/smaps` (`xxx`๋ ํ๋ก์ธ์ค id๋ pid์
๋๋ค).
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ๊ณผ๊ฑฐ์ ์ ๋ฌด์์ธ๊ฐ๊ฐ ์๋ชป๋์๋์ง๋ฅผ ๋๋ฒ๊น
ํ ๋์๋ `sar` ๊ฐ ๋งค์ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. ์ด ์ปค๋งจ๋๋ CPU, memory, network ๋ฑ์ ํต๊ณ ๋ด์ญ์ ๋ณด์ฌ์ค๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ์์คํ
์ ๋ณด๋ค ๊น์๊ณณ์ ๋ณด๊ฑฐ๋ ํผํฌ๋จผ์ค๋ฅผ ๋ถ์ํ๊ธฐ ์ํด์๋, `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)),๋ [`perf` ](http://en.wikipedia.org/wiki/Perf_(Linux )), ๊ทธ๋ฆฌ๊ณ [`sysdig` ](https://github.com/draios/sysdig )๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- ์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ๋ Linux์ ๋ฐฐํฌํ์ด ๋ฌด์์ธ์ง ํ์ธ(๋๋ถ๋ถ์ ๋ฐฐํฌํ์์ ์๋ํฉ๋๋ค)ํ๋ ค๋ฉด `uname` ์ด๋ `uname -a` ๋๋ `lsb_release -a` ๋ฅผ ์ฌ์ฉํ์ธ์.
2015-07-04 06:17:01 +00:00
2015-07-10 04:52:03 +00:00
- ์ธ์ ๋ ์ง ๋ฌด์ธ๊ฐ๊ฐ ์ ๋ง๋ก ์ฌ๋ฏธ์๋ ๋ฐ์์ ๋ณด์ธ๋ค๋ฉด `dmesg` ๋ฅผ ์ฌ์ฉํด๋ณด์ธ์ (์๋ง๋ ํ๋์จ์ด๋ ๋๋ผ์ด๋ฒ์ ๋ฌธ์ ์ผ ๊ฒ์
๋๋ค).
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## One-liners
2015-07-04 06:17:01 +00:00
2015-07-10 05:36:53 +00:00
์ปค๋งจ๋๋ค์ ํ๋ฐ ๋ฌถ์ด์ ์ฌ์ฉํ๋ ์์ ๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 05:36:53 +00:00
- `sort` /`uniq`๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ ํ์ผ์ ๊ต์ฐจ์ , ์กฐํฉ, ์ฐจ์ด์ ์ ํ์ธ์ด ํ์ํ ๋ ์๋นํ ๋์์ด ๋ ๊ฒ๋๋ค. ๊ฐ๋ น `a` ์ `b` ๊ฐ ์ ์ผํ ๊ฐ๋ค๋ง์ ๊ฐ์ง ํ
์คํธ ํ์ผ์ด๋ผํฉ์๋ค. ์ด๊ฒ์ด ์์์ ํฌ๊ธฐ์ธ ํ์ผ์(๊ทธ๊ฒ ๊ธฐ๊ฐ๋ฐ์ดํธ๋ผ๊ณ ํด๋) ๋น ๋ฅด๊ฒ ์์
ํ ์ ์์ต๋๋ค. (Sort๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค๋ง, ๋ง์ฝ ๋ฃจํธ ํํฐ์
์ด ์์ ๊ฒฝ์ฐ, `/tmp` ๋ฅผ ์ฌ์ฉํ๊ธฐ์ํด `-T` ์ต์
์ ์ฌ์ฉํ๋ฉด๋ฉ๋๋ค.) ์์ `LC_ALL` ์๋ํ ๋ด์ฉ์ `sort` ์ `-u` ์ต์
์ ํ์ธํ์ญ์์ค. (์๋ ์์ ์ ์ง์คํ๊ธฐ ์ํด์ ์๋ต)
2015-07-04 06:17:01 +00:00
```sh
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
```
2015-07-10 05:36:53 +00:00
- `grep . *` ์ ์ฌ์ฉํด์ ๋๋ ํ ๋ฆฌ ์์ ๋ชจ๋ ํ์ผ์ ๋น์ฃผ์ผํ๊ฒ ์ดํด ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด `/sys` , `/proc` , `/etc` ๊ฐ์ด ์ค์ ๊ฐ๋ค๋ก ๊ฐ๋ํ ๋๋ ํ ๋ฆฌ์ ๋ง์ด์ฃ .
2015-07-04 06:17:01 +00:00
2015-07-10 05:36:53 +00:00
- ํ
์คํธ ํ์ผ์ ์ธ๋ฒ์งธ ์ด์ ์ซ์๋ค์ ๋ชจ๋ ๊ฐ์ ๋ํ๋ ๊ฒ์ ์ด๋ ๊ฒ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ ์ผ์ ํ๋ ํ์ด์ฌ ์ฝ๋๋ณด๋ค 3๋ฐฐ์ ๋ ๋น ๋ฅด๊ณ , 1/3์ ๋์ ๊ธธ์ด๋ฐ์ ์๋ฉ๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
awk '{ x += $3 } END { print x }' myfile
```
2015-07-10 05:36:53 +00:00
- ํ์ผ ํธ๋ฆฌ์์ ํฌ๊ธฐ์ ๋ ์ง๋ฅผ ๋ณด๋ ค๋ฉด ์ด๋ ๊ฒ ํ์ธ์. ์ด ๋ช
๋ น์ด๋ `ls -l` ์ ์ฌ๊ท์ ์ผ๋ก ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ง๋ง, `ls -lR` ๋ณด๋ค ๋ ์ฝ๊ธฐ ์ฝ์ต๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
find . -type f -ls
```
2015-07-10 05:36:53 +00:00
- ์น์๋ฒ ๋ก๊ทธ๊ฐ์ ํ
์คํธ ํ์ผ์ด ์๋ค๊ณ ํฉ์๋ค. ๊ทธ๋ฆฌ๊ณ URL ํ๋ผ๋ฉํฐ์ ๋ํ๋๋ `acct_id` ๊ฐ์ ํน์ ๊ฐ์ด ๋ช๋ช ํ์ ๋ํ๋๋ค๊ณ ํด๋ณด์ฃ . ๊ฐ๊ฐ์ `acct_id` ์ ๋ํด ์ผ๋ง๋ ๋ง์ ์์ฒญ์ด ์์๋์ง ์๊ณ ์ถ๋ค๋ฉด ๋ค์์ฒ๋ผ ํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
```sh
cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
```
2015-07-10 05:36:53 +00:00
- ๋ค์ ํจ์๋ฅผ ์คํํ๋ฉด ์ด ๋ฌธ์์ ์๋ ํ ์ค ์์์ ๊ฒ์ ์ป์ ์ ์์ต๋๋ค(๋งํฌ๋ค์ด์ ํ์ฑํ๊ณ ํญ๋ชฉ์ ์ถ์ถํฉ๋๋ค).
2015-07-04 06:17:01 +00:00
```sh
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
}
```
2015-07-10 05:36:53 +00:00
2015-07-10 00:36:09 +00:00
## Obscure but useful
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `expr` : ์ฐ์ ์ ์ด๊ฑฐ๋ ๋
ผ๋ฆฌ์ ์ธ ์์
์ ์ํํ๊ฑฐ๋ ์ ๊ทํํ์์ ๊ฒ์ฆํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `m4` : ๊ฐ๋จํ ๋ฉํฌ๋ก ์ํ๊ธฐ๋ฅผ ์คํํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `yes` : ์ด๋ ํ ํ ๋ฌธ์ฅ์ ๋งค์ฐ ๋ง์ด ์ถ๋ ฅํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `cal` : ๊ฐ๋จํ ๋ฌ๋ ฅ์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `env` : ์ด๋ค ํ ์ปค๋งจ๋๋ฅผ ์คํํฉ๋๋ค(์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ์ ์ฉํฉ๋๋ค)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `printenv` : ํ๊ฒฝ ๋ณ์๋ค์ ์ถ๋ ฅํฉ๋๋ค(๋๋ฒ๊น
์ ํ ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ์ ์ฉํฉ๋๋ค)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `look` : ์ด๋ค ๋ฌธ์์ด๋ก ์์ํ๋ ์๋จ์ด(ํน์ ํ์ผ์ ์ด๋ค ํ ์ค)์ ์ฐพ์ต๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `cut ` , `paste` ๊ทธ๋ฆฌ๊ณ `join` : ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `fmt` : ๋ฌธ๋จ์ ์์์ ์ง์ ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `pr` : ๋ฌธ์์ ํ์ด์ง๋ ์ปฌ๋ผ ์์์ ์ง์ ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `fold` : ๋ฌธ์์ ๊ฐ ๋ผ์ธ๋ค์ ํน์ ํ ๊ธธ์ด์ ๋ง๊ฒ ์์ ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `column` : ๋ฌธ์์ ์ปฌ๋ผ์ด๋ ํ
์ด๋ธ์ ์์์ ์ง์ ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `expand` and `unexpand` : ํญ์ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊พธ์ด์ฃผ๊ฑฐ๋ ๊ณต๋ฐฑ์ ํญ์ผ๋ก ๋ฐ๊พธ์ด์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `nl` : ์ค ๋ฒํธ๋ฅผ ์ถ๊ฐํด์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `seq` : ์ซ์๋ค์ ์ถ๋ ฅํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `bc` : ๊ฐ๋จํ ๊ณ์ฐ๊ธฐ๋ฅผ ์คํํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `factor` : ์ ์๋ค์ ์ธ์๋ถํดํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- [`gpg` ](https://gnupg.org/ ): ํ์ผ๋ค์ ์ํธํํ๊ณ ์๋ช
ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `toe` : terminfo ์ํธ๋ฆฌ๋ค์ ํ
์ด๋ธ(table of terminfo entries)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `nc` : ๋คํธ์ํฌ๋ฅผ ๋๋ฒ๊น
ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `socat` : ์์ผ ๋ฆด๋ ์ด๋ TCP ํฌํธ๋ก ๋ด์ฉ์ ์ ๋ฌํ ๋ ์ฌ์ฉํฉ๋๋ค(`netcat`๊ณผ ๋น์ทํฉ๋๋ค)
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- [`slurm` ](https://github.com/mattthias/slurm ): ๋คํธ์ํฌ ์ํฉ์ ์๊ฐํํ์ฌ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `dd` : ํ์ผ๋ค์ด๋ ๋๋ฐ์ด์ค๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `file` : ํ์ผ์ ์ข
๋ฅ๋ฅผ ์์๋ด๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `tree` : ๋๋ ํ ๋ฆฌ๋ค๊ณผ ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง์น ls๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์
๋ ฅํ ๊ฒ์ฒ๋ผ ํธ๋ฆฌ์ ํํ๋ก ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `stat` : ํ์ผ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `time` : execute and time a command
2015-07-10 00:36:09 +00:00
- `tac` : ํ์ผ์ ๋ด์ฉ์ ์ญ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `shuf` : ํ์ผ์ ๊ฐ ์ค๋ค์ ์์์ ์์๋ก ์ถ๋ ฅํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `comm` : ์ ๋ ฌ๋ ํ์ผ๋ค์ ๊ฐ ๋ผ์ธ๋ณ๋ก ๋น๊ตํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `pv` : ํ์ดํ๋ฅผ ํตํด์ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๋ชจ๋ํฐ๋งํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `hd` and `bvi` : ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์์ ํ๊ฑฐ๋ ๋คํ๋ฅผ ์ป์ด์ค๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `strings` : ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ค์์ ํน์ ๋ฌธ์ฅ์ ์ถ์ถํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `tr` : ๋ฌธ์๋ฅผ ๋ณํํ๊ฑฐ๋ ์กฐ์ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `iconv` or `uconv` : ๋ฌธ์์ ์ธ์ฝ๋ฉ๋ฐฉ์์ ๋ณํํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `split ` and `csplit` : ํ์ผ๋ค์ ์ชผ๊ฐ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-12 04:24:56 +00:00
- `sponge` : ์ฐ๊ธฐ ์ ์ ๋ชจ๋ ์
๋ ฅ์ ์ฝ์ต๋๋ค. ๊ฐ์ ํ์ผ์์ ์ฝ์ ํ์ ์ฐ๊ธฐ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด `grep -v something some-file | sponge some-file` ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2015-07-10 00:36:09 +00:00
- `units` : ๋จ์๋ฅผ ๋ณํํ๊ฑฐ๋ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค ์๋ฅผ๋ค์ด furlongs/fortnight ๋จ์๋ฅผ twips/blink๋ก ๋ณํํฉ๋๋ค (`/usr/share/units/definitions.units`๋ฅผ ์ฐธ๊ณ ํ์ธ์)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `7z` : ๊ณ ํจ์จ์ ํ์ผ ์์ถํ๋ก๊ทธ๋จ์
๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `ldd` : ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `nm` : ์ค๋ธ์ ํธ ํ์ผ๋ค์ ํฌํจ๋ ์ฌ๋ณผ์ ๋ณด๋ฅผ ์ป์ด์ต๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `ab` : ์น ์๋ฒ๋ฅผ ๋ฒค์น ๋งํนํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `strace` : ์์คํ
์ฝ์ ๋๋ฒ๊น
ํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `mtr` : ๋คํธ์ํฌ ๋๋ฒ๊น
์์ traceroute๋ณด๋ค ๋ ๋ซ์ต๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `cssh` : ์์ ๋์์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `rsync` : SSH๋ฅผ ์ด์ฉํด ์๊ฒฉ ํ์ผ ์์คํ
์ด๋, ๋ก์ปฌ ํ์ผ์์คํ
์ ํ์ผ๊ณผ ํด๋๋ค์ ๋๊ธฐํ ํ ๋ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `wireshark` and `tshark` : ํจํท์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ ๋คํธ์ํน์ ๋๋ฒ๊น
ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `ngrep` : ๋คํธ์ํฌ ํ๊ฒฝ์์ grep๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `host` and `dig` : DNS ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `lsof` : ํ๋ก์ธ์ค ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ์์ผ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `dstat` : ์ ์ฉํ ์์คํ
์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- [`glances` ](https://github.com/nicolargo/glances ): ๋ณด๋ค ๊ณ ์ฐจ์์ ์ฌ๋ฌ ์๋ธ์์คํ
๋ค์ ์ ๋ณด๋ฅผ ํ๋ฒ์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `iostat` : ๋์คํฌ์ ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
- `mpstat` : CPU ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- `vmstat` : ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `htop` : ๋ณด๋ค ๊ฐ์ ๋ ํํ์ top์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `last` : ๋ก๊ทธ์ธ ํ๋ ์ ๋ณด๋ค์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `w` : ํ์ฌ ๋๊ฐ ๋ก๊ทธ์ธํ๋์ง ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `id` : ํ์ฌ ์ ์ ๋ ๊ทธ๋ฃน์ ๋ํ ์๋ณ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `sar` : ์์คํ
์ํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `iftop` or `nethogs` : ์์ผ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ด์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `ss` : ์์ผ์ ๊ดํ ํต๊ณ์๋ฃ๋ค์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `dmesg` : ๋ถํ
๋ฉ์์ง์ ์์คํ
์๋ฌ ๋ฉ์์ง๋ค์ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `hdparm` : SATA/ATA disk๋ค์ ์ ๋ณด๋ฅผ ์์ ํ๊ฑฐ๋ ๊ทธ๊ฒ๋ค์ด ์๋ํ๋๋ก ํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `lsb_release` : Linux ๋ฐฐํฌํ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `lsblk` : ๋ธ๋ก ๋๋ฐ์ด์ค๋ค์ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค : ์ฌ๋ฌ๋ถ์ ๋์คํฌ๋ค์ด๋ ๋์คํฌํํฐ์
๋ค์ ํธ๋ฆฌ์ ํํ๋ก ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
- `lshw` , `lscpu` , `lspci` , `lsusb` , `dmidecode` : CPU, BIOS, RAID, graphics, devices ๋ฑ์ ํ๋์จ์ด ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค
2015-07-04 06:17:01 +00:00
2015-07-24 03:45:35 +00:00
- `lsmod` ์ `modifno` : ์ปค๋ ๋ชจ๋์ ์์ธ์ ๋ณด๋ฅผ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
2015-07-10 00:36:09 +00:00
- `fortune` , `ddate` , ๊ทธ๋ฆฌ๊ณ `sl` : ์... ์ฆ๊ธฐ๊ธฐ๊ด์ฐจ๋ฅผ ์๊ฐํ๊ณ ์๊ณ ๊ทธ๊ฒ์ ์ธ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ด๊ฒ์ "์ ์ฉ"ํฉ๋๋ค
2015-07-04 06:17:01 +00:00
2015-12-30 16:47:03 +00:00
## OS X only
2015-07-04 06:17:01 +00:00
2015-07-08 17:03:40 +00:00
*MacOS์์๋ง* ํด๋น๋๋ ํญ๋ชฉ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-08 14:51:26 +00:00
- `brew` (Homebrew)๋ `port` (MacPorts)๋ฅผ ํจํค์ง ๋ฉ๋์ ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ณด๋ค ๋ง์ ๋ช
๋ น์ด๋ฅผ MacOS์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-08 14:51:26 +00:00
- `pbcopy` ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์คํฌํ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ช
๋ น์ด ์ถ๋ ฅ๋ฌผ์ ๋ณต์ฌํ๊ฑฐ๋ `pbpaste` ๋ฅผ ์ด์ฉํด ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-08 14:51:26 +00:00
- ๋ฐ์คํฌํ ์ดํ๋ฆฌ์ผ์ด์
์์ ํ์ผ์ ์ด๊ธฐ์ํด, `open` ๋๋ `open -a /Applications/Whatever.app` ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-08 14:51:26 +00:00
- Spotlight: `mdfind` ๋ฅผ ์ด์ฉํด ํ์ผ์ ์ฐพ๊ณ , `mdls` ๋ฅผ ์ด์ฉํด ๋ฉํ๋ฐ์ดํ (์ฌ์ง EXIF ์ ๋ณด์ ๊ฐ์) ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-08 15:15:09 +00:00
- MacOS๋ 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` ๊ณผ ๊ฐ์)๋ ํ
์คํธ์ ์ฃผ์ํด์ผํฉ๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## More resources
- [awesome-shell ](https://github.com/alebcay/awesome-shell ): ์์ ๋ํ ํด๊ณผ ๋ฆฌ์์ค๋ค์ด ์ ์ ๋ฆฌ๋์ด ์๋ ๋ฆฌ์คํธ์
๋๋ค.
- [Strict mode ](http://redsymbol.net/articles/unofficial-bash-strict-mode/ ): ๋ณด๋ค ๋์ ์์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ ๋ณด๊ธ์
๋๋ค.
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## Disclaimer
2015-07-04 06:17:01 +00:00
2015-07-08 15:15:09 +00:00
๋งค์ฐ ์์ ์์
์ ์ ์ธํ ์ฝ๋๋ค์ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ์ ์ ์๋๋ก ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ด์ฉ์ ์์ฑ์ ์ ์์๊ฒ ์ฑ
์์ด ์์ต๋๋ค. Bash์์ ๋ญ๊ฐ๋ฅผ *ํ ์ ์๋ค๋* ๊ฒ์ด ๋น์ ์ด ๋ญ๊ฐ๋ฅผ ํด์ผ๋๋ค๋ ๊ฒ์ ๊ฐ์ํ๋ ๊ฒ์ด ์๋๋ค! ;)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
## License
2015-07-14 04:45:24 +00:00
[![Creative Commons License ](https://i.creativecommons.org/l/by-sa/4.0/88x31.png )](http://creativecommons.org/licenses/by-sa/4.0/)
2015-07-04 06:17:01 +00:00
2015-07-10 00:36:09 +00:00
์ด ์ ์๋ฌผ์ [Creative Commons Attribution-ShareAlike 4.0 International License ](http://creativecommons.org/licenses/by-sa/4.0/ )์ ๋ฐ๋ผ ์ด์ฉํ ์ ์์ต๋๋ค.