Skip to content

Latest commit

ย 

History

History
480 lines (273 loc) ยท 36.3 KB

README-ko.md

File metadata and controls

480 lines (273 loc) ยท 36.3 KB

๐ŸŒ ฤŒeลกtina โˆ™ English โˆ™ Espaรฑol โˆ™ Franรงais โˆ™ Italiano โˆ™ ๆ—ฅๆœฌ่ชž โˆ™ ํ•œ๊ตญ์–ด โˆ™ Portuguรชs โˆ™ ะ ัƒััะบะธะน โˆ™ Slovenลกฤina โˆ™ ะฃะบั€ะฐั—ะฝััŒะบะฐ โˆ™ ไธญๆ–‡ โˆ™ ็น้ซ”ไธญๆ–‡

The Art of Command Line

Join the chat at https://gitter.im/jlevy/the-art-of-command-line

curl -s 'https://github.com/raw/jlevy/the-art-of-command-line/master/README.md' | egrep -o '\w+' | tr -d '`' | cowsay -W50

์ปค๋งจ๋“œ๋ผ์ธ์„ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š”๊ฒƒ์€ ๋„์™ธ์‹œ๋˜๊ฑฐ๋‚˜ ์‹ ๋น„์Šค๋Ÿฝ๊ฒŒ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปค๋งจ๋“œ๋ผ์ธ์€ ๋ช…๋ฐฑํ•˜๊ณ ๋„ ๋ฏธ๋ฌ˜ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ํ•˜๋Š” ์ž‘์—…์˜ ์œ ์—ฐ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ๋ฆฌ๋ˆ…์Šค์—์„œ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ์ฐพ์€ ๋…ธํŠธ์™€ ํŒ๋“ค์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€๋Š” ๊ธฐ์ดˆ์ ์ด๊ณ , ๋ช‡๊ฐ€์ง€๋Š” ์ƒ๋‹นํžˆ ๊ตฌ์ฒด์ ์ด๋ฉฐ, ์„ธ๋ จ๋˜๊ณ , ์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ๊ทธ๋ฆฌ ๊ธธ์ง€ ์•Š์ง€๋งŒ, ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ๊ธฐ์–ตํ•ด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค๋ฉด, ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ์€ ์›๋ž˜ Quora์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฑฐ๊ธฐ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ธฐ๋ณด๋‹ค, Github๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ€์น˜์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—” ๋” ์žฌ๋Šฅ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์†์‰ฝ๊ฒŒ ๊ฐœ์„ ์•ˆ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด์ฃ . ๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ๋” ๋‚˜์•„์งˆ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ๋ณด์ธ๋‹ค๋ฉด, ์ด์Šˆ๋ฅผ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”! (๋ฌผ๋ก  meta ์„น์…˜๊ณผ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์™€ ์ด์Šˆ๋ฅผ ๋ด์ฃผ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

Meta

๋ฒ”์œ„:

  • ์ด ๊ฐ€์ด๋“œ๋Š” ์ดˆ๋ณด์ž์™€ ๊ฒฝํ—˜์ž ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๋ฒ”์œ„(์ „๋ถ€ ๋‹ค ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค!), ๊ตฌ์ฒด์„ฑ(๋Œ€๋ถ€๋ถ„์˜ ์ผ๋ฐ˜์ ์ธ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์ œ), ๊ทธ๋ฆฌ๊ณ  ๊ฐ„๊ฒฐํ•จ(์‰ฝ๊ฒŒ ๋งˆ์ฃผ์น˜์ง€ ์•Š๋Š”, ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ , ์ง€์—ฝ์ ์ธ ๊ฒƒ์„ ํ”ผํ•จ) ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒ์€ ํŠน์ • ์ƒํ™ฉ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ๋Œ€์•ˆ๋“ค ์‚ฌ์ด์—์„œ์˜ ์‹œ๊ฐ„์„ ํ™•์—ฐํ•˜๊ฒŒ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฌธ์„œ๋Š” ๋ฆฌ๋ˆ…์Šค๋ฅผ ์œ„ํ•œ๊ฒƒ์ž…๋‹ˆ๋‹ค. "OS X only"์„ธ์…˜์„ ์ œ์™ธํ•˜๊ณ  ๋ง์ด์ฃ . ์ผ๋ถ€๋Š” MacOS์—์„œ ๋˜‘๊ฐ™์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Cygwin์—์„œ ์กฐ์ฐจ ๋ง์ด์ฃ ).
  • ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ Bash์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ํŒ์€ ๋‹ค๋ฅธ ์‰˜์ด๋‚˜, general Bash ์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฌธ์„œ๋Š” "์Šคํƒ ๋‹ค๋“œ" ์œ ๋‹‰์Šค ์ปค๋งจ๋“œ์™€ ํŠน์ • ํŒจํ‚ค์ง€ ์„ค์น˜๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ ๋‘˜ ๋‹ค ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ๋Š” ์Šคํƒ ๋‹ค๋“œ ์ปค๋งจ๋“œ์™€ ํŠน์ • ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ฒƒ์€ ํฌํ•จ๋ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋…ธํŠธ:

  • ์ด ๋ฌธ์„œ๋ฅผ ํ•œ ํŒŒ์ผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ปจํ…์ธ ๋“ค์€ ์•”์‹œ์ ์ธ ๋ ˆํผ๋Ÿฐ์Šค ํ˜•ํƒœ๋กœ ํฌํ•จ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐœ๋…์ด๋‚˜ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋œ ํ›„์—, ๋‹ค๋ฅธ๊ณณ์—์„œ ๊ทธ์—๋Œ€ํ•œ ์ข€ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์„๋งŒํผ ๋‹น์‹ ์€ ๋˜‘๋˜‘ํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. apt-get, yum, dnf, pacman, pip, brew (ํ˜น์€ ์ ์ ˆํ•œ ๋‹ค๋ฅธ ๊ฒƒ)์„ ์ด์šฉํ•ด ์ƒˆ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜์„ธ์š”.
  • Explainshell์„ ์ด์šฉํ•ด์„œ ๊ฐ๊ฐ์˜ ์ปค๋งจ๋“œ, ์˜ต์…˜, ํŒŒ์ดํ”„๋‚˜ ๊ทธ ์™ธ ๋“ฑ๋“ฑ์ด ์–ด๋–ค๊ฒƒ์ธ์ง€ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.

Basics

  • ๊ธฐ๋ณธ 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.

  • ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ: ip ๋˜๋Š” ifconfig, dig.

  • ์ •๊ทœํ‘œํ˜„์‹(regular expression)์„ ์ž˜ ์•Œ์•„๋‘์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  grep/egrep์˜ ๋‹ค์–‘ํ•œ ํ”Œ๋ž˜๊ทธ๋„ ์•Œ์•„๋‘์„ธ์š”. -i, -o, -v,-A, -B์™€ -C ์˜ต์…˜์€ ์•Œ์•„๋‘˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • apt-get, yum, dnf ๋˜๋Š” pacman์„ ์ด์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  pip๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์„œ, ํŒŒ์ด์„  ๊ธฐ๋ฐ˜์˜ ์ปค๋งจ๋“œ ๋ผ์ธ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”(๋ฐ‘์— ์„ค๋ช…๋œ ๊ฒƒ์ค‘ ๋ช‡๊ฐ€์ง€๋Š” pip๋ฅผ ์ด์šฉํ•ด ์„ค์น˜ํ•˜๋Š”๊ฒŒ ์ œ์ผ ์‰ฝ์Šต๋‹ˆ๋‹ค.

Everyday use

  • Bash ์—์„œ Tab์„ ์“ฐ๋ฉด argument๋ฅผ ์™„์„ฑํ•˜๊ณ , ctrl-r์„ ์“ฐ๋ฉด ์ปค๋งจ๋“œ ํžˆ์Šคํ† ๋ฆฌ์—์„œ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

  • 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๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ตœ๊ทผ ์‚ฌ์šฉํ•œ ์ปค๋งจ๋“œ๋ฅผ ๋ณด๋ ค๋ฉด history๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. !$(๋งˆ์ง€๋ง‰ argument), !!(๋งˆ์ง€๋ง‰ ์ปค๋งจ๋“œ)์™€ ๊ฐ™์€ ์•ฝ์–ด๋“ค์ด ๋งค์šฐ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ctrl-r์ด๋‚˜ **alt-.**๋ช…๋ น์–ด๋กœ ์ž์ฃผ ๋Œ€์ฒด๋˜๊ธฐ ์‰ฝ์ง€๋งŒ์š”.

  • ์ด์ „์— ์ž‘์—…ํ•˜๋˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋Œ์•„๊ฐ€๋ ค๋ฉด 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๋ฅผ ์ด์šฉํ•ด์„œ ์—ด๋ ค์žˆ๋Š” ์†Œ์ผ“๊ณผ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Bash ์Šคํฌ๋ฆฝํŠธ์—์„œ set -x๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋””๋ฒ„๊น…์šฉ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ(strict mode)๊ฐ€ ๊ฐ€๋Šฅํ• ๋•Œ๋ฉด ์‚ฌ์šฉํ•˜์„ธ์š”. set -e๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„๋•Œ ์ค‘๋‹จ์‹œํ‚ค๊ฒŒ๋ฉ๋‹ˆ๋‹ค. set -o pipefail์„ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ์— ๋Œ€ํ•ด์„œ ๊ฐ•๊ฒฝํ•œ ๊ธฐ์ค€์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค(์ด ์ฃผ์ œ๊ฐ€ ์กฐ๊ธˆ ๋ฏธ๋ฌ˜ํ•˜์ง€๋งŒ ๋ง์ด์ฃ ). ๋” ๋ณต์žกํ•œ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ trap๋˜ํ•œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • uptime์ด๋‚˜ w๋ฅผ ์ด์šฉํ•ด์„œ ์‹œ์Šคํ…œ์ด ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์‹คํ–‰์ค‘์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปค๋งจ๋“œ์— ๋Œ€ํ•ด์„œ alias๋ฅผ ์ด์šฉํ•ด์„œ ์ˆ์ปท์„ ๋งŒ๋“œ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด, alias ll='las -latr'์€ ์ƒˆ ๋‹จ์ถ•๋ช…๋ น ll์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • 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}๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์‚ฐ์ˆ  ํ™•์žฅ์€ i=$(( (i + 1) % 5 )) ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์—ด์€ {1...10}์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ํŠธ๋ฆฌ๋ฐ(trimmin)์€ ${var%suffix}์ด๋‚˜ ${var#prefix}์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด var=foo.pdf๋ผ๋ฉด, echo ${var$.pdf}.txt๋Š” foo.txt๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ปค๋งจ๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ๋ฌผ์€ <(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)ํ•˜๋Š”๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์„ ์˜๊ตฌํžˆ ์œ ์ง€ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๋Œ€์•ˆ์€ ์˜ค์ง 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์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋“ฑ์ž…๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ ์„ค์ •์— ์œ ์šฉํ•˜์ง€๋งŒ 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(๋‹ค๋ฅธ ์œ ์ € ๊ถŒํ•œ)์„ ์‚ฌ์šฉํ•˜์„ธ์š”. su๋‚˜ sudo bash๋Š” ์‰˜์„ ํ•ด๋‹น ์œ ์ €์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. su -๋Š” ์ƒˆ ๋กœ๊ทธ์ธ์„ root์ด ๋‹ค๋ฅธ ์œ ์ €์ธ๊ฒƒ์ฒ˜๋Ÿผ ์‹œ๋ฎฌ๋ ˆ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

Processing files and data

  • ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ์ด๋ฆ„์œผ๋กœ ์ฐพ์œผ๋ ค๋ฉด find . -iname '*something*' (๋˜๋Š” ๋น„์Šทํ•˜๊ฒŒ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์–ด๋Š๊ณณ์— ์žˆ๋“  ํŒŒ์ผ์„ ์ด๋ฆ„์œผ๋กœ ์ฐพ์œผ๋ ค๋ฉด locate something์„ ์‚ฌ์šฉํ•˜์„ธ์š”(ํ•˜์ง€๋งŒ ์ธ๋‚ด๋ฅผ ๊ฐ€์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค. updatedb๊ฐ€ ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ์ธ๋ฑ์‹ฑํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

  • ์†Œ์Šค๋‚˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋“ค์—์„œ ์ผ๋ฐ˜์ ์ธ ๊ฒ€์ƒ‰์„ ํ• ๋•Œ๋Š”(grep -r๋ณด๋‹ค ๋” ๋ณต์žกํ• ๋•Œ), ag๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • HTML์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ• ๋•Œ๋Š” lynx -dump -stdin๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • ๋งˆํฌ๋‹ค์šด, HTML, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฌธ์„œ ๋ณ€ํ™˜์—๋Š” pandoc์„ ์‹œ๋„ํ•ด๋ณด์„ธ์š”.

  • XML์„ ๋ฐ˜๋“œ์‹œ ๋‹ค๋ค„์•ผํ•œ๋‹ค๋ฉด, xmlstarlet์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ์ข‹์Šต๋‹ˆ๋‹ค.

  • JSON์—๋Š” jq๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • 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)์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘์„ธ์š”.

  • ๋กœ์ผ€์ผ์ด ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ์— ์ •๋ ฌ ์ˆœ์„œ(collation)์™€ ํผํฌ๋จผ์Šค๋ฅผ ํฌํ•จํ•ด์„œ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค ์„ค์น˜๋Š” LANG์ด๋‚˜ ๋‹ค๋ฅธ ๋กœ์ผ€์ผ ๋ณ€์ˆ˜๋ฅผ US English์™€ ๊ฐ™์€ ๋กœ์ปฌ ์„ธํŒ…์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋กœ์ผ€์ผ์„ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ ์ •๋ ฌ๋„ ๋ฐ”๋€” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  i18n ๋ฃจํ‹ด๋“ค๋„ ์ •๋ ฌ์ด๋‚˜ ๋‹ค๋ฅธ ์ปค๋งจ๋“œ๋“ค์„ ๋ช‡ ๋ฐฐ ๋Š๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. export LC_ALL=C๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š”( ๋ฐ‘์— ์žˆ๋Š” ์ง‘ํ•ฉ(set) ์ž‘์—…์ด๋‚˜, ์œ ์ผ์„ฑ ์ž‘์—…๋“ฑ) i18n์˜ ๋Š๋ฆฐ ๋ฃจํ‹ด๋“ค์„ ํ†ต์ฑ„๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ „ํ†ต์ ์ธ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์˜ ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ํ• ๋•Œ awk์™€ sed๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ์„ธ๋ฒˆ์งธ ์—ด์˜ ์ˆซ์ž๋“ค์˜ ๋ชจ๋“  ๊ฐ’์„ ๋”ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค: awk '{ x += $3 } END { print x }'. ์ด ๋ฐฉ๋ฒ•์€ ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ณด๋‹ค 3๋ฐฐ์ •๋„ ๋น ๋ฅด๊ณ , 1/3์ •๋„์˜ ๊ธธ์ด๋ฐ–์— ์•ˆ๋ฉ๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒ์ผ์—์„œ ์ถ”๊ฐ€์ ์ธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด ๋ฐ”๊พธ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์„ธ์š”.

      perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
  • ํ•œ๋ฒˆ์— ๋งŽ์€ ํŒŒ์ผ์„ ํŒจํ„ด์— ๋”ฐ๋ผ์„œ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ๋ฅผ ํ•˜๋ ค๋ฉด, rename์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ณด๋‹ค ๋ณต์žกํ•œ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ๋Š”, repren์ด ๋„์›€์ด ๋ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
      # 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 .

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์˜ ํ†ต๊ณ„ ์š”์•ฝ์„ ๋ณด๋ ค๋ฉด diffstat๋ฅผ ๋ณด์„ธ์š”. diff -r์€ ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฑธ ์•Œ์•„๋‘์„ธ์š”. diff -r tree1 tree2 | diffstat์œผ๋กœ ๋ณ€๊ฒฝ ๋‚ด์—ญ์˜ ์š”์•ฝ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ hex ๋คํ”„๋ฅผ ๋œจ๊ณ  ์‹ถ์„ ๋•Œ๋Š” hd๋ฅผ ์“ฐ์„ธ์š”. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ˆ˜์ •ํ• ๋•Œ๋Š” bvi๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • 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(ํŒŒ์ผ์„ ํŒจํ„ด์œผ๋กœ ๋‚˜๋ˆ”)์„ ๋ณด์„ธ์š”.

  • zless, zmore, zcat ๊ทธ๋ฆฌ๊ณ zgrep์„ ์ด์šฉํ•ด์„œ ์••์ถ•๋œ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜์„ธ์š”.

System debugging

  • ์›น ๋””๋ฒ„๊น…์„ ์œ„ํ•ด์„œ๋Š” curl ์™€ curl -I ๊ฐ€ ๋„์›€์ด ๋˜๊ณ , wget๋„ ๊ฝค ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ์™ธ์— ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ๋ฐฉ์‹์œผ๋กœ๋Š” httpie์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””์Šคํฌ/cpu/๋„คํŠธ์›Œํฌ์˜ ์ƒํƒœ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ๊ฐ iostat, netstat, top (ํ˜น์€ ๋” ๋‚˜์€ ๋ช…๋ น์–ด์ธ htop), ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ 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๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š” (์•„๋งˆ๋„ ํ•˜๋“œ์›จ์–ด๋‚˜ ๋“œ๋ผ์ด๋ฒ„์˜ ๋ฌธ์ œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

One-liners

์ปค๋งจ๋“œ๋“ค์„ ํ•œ๋ฐ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋“ค

  • 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 . *์„ ์‚ฌ์šฉํ•ด์„œ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๋น„์ฃผ์–ผํ•˜๊ฒŒ ์‚ดํŽด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด /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
  • ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด ๋ฌธ์„œ์— ์žˆ๋Š” ํŒ ์ค‘ ์ž„์˜์˜ ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋งˆํฌ๋‹ค์šด์„ ํŒŒ์‹ฑํ•˜๊ณ  ํ•ญ๋ชฉ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค).
      function taocl() {
        curl -s https://github.com/raw/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
      }

Obscure but useful

  • expr: ์‚ฐ์ˆ ์ ์ด๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ •๊ทœํ‘œํ˜„์‹์„ ๊ฒ€์ฆํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • m4: ๊ฐ„๋‹จํ•œ ๋ฉ”ํฌ๋กœ ์ˆ˜ํ–‰๊ธฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

  • yes: ์–ด๋– ํ•œ ํ•œ ๋ฌธ์žฅ์„ ๋งค์šฐ ๋งŽ์ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค

  • cal: ๊ฐ„๋‹จํ•œ ๋‹ฌ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • env: ์–ด๋–ค ํ•œ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค)

  • printenv: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค(๋””๋ฒ„๊น…์„ ํ• ๋•Œ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค)

  • look: ์–ด๋–ค ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ์˜๋‹จ์–ด(ํ˜น์€ ํŒŒ์ผ์˜ ์–ด๋–ค ํ•œ ์ค„)์„ ์ฐพ์Šต๋‹ˆ๋‹ค

  • cut , paste ๊ทธ๋ฆฌ๊ณ  join: ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • fmt: ๋ฌธ๋‹จ์˜ ์„œ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

  • pr: ๋ฌธ์„œ์˜ ํŽ˜์ด์ง€๋‚˜ ์ปฌ๋Ÿผ ์„œ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

  • fold: ๋ฌธ์„œ์˜ ๊ฐ ๋ผ์ธ๋“ค์„ ํŠน์ •ํ•œ ๊ธธ์ด์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค

  • column: ๋ฌธ์„œ์˜ ์ปฌ๋Ÿผ์ด๋‚˜ ํ…Œ์ด๋ธ”์˜ ์„œ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

  • expand and unexpand: ํƒญ์„ ๊ณต๋ฐฑ์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์„ ํƒญ์œผ๋กœ ๋ฐ”๊พธ์–ด์ค๋‹ˆ๋‹ค

  • nl: ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค

  • seq: ์ˆซ์ž๋“ค์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • bc: ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

  • factor: ์ •์ˆ˜๋“ค์„ ์ธ์ˆ˜๋ถ„ํ•ดํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • gpg: ํŒŒ์ผ๋“ค์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์„œ๋ช…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • toe: terminfo ์—”ํŠธ๋ฆฌ๋“ค์˜ ํ…Œ์ด๋ธ”(table of terminfo entries)

  • nc: ๋„คํŠธ์›Œํฌ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • socat: ์†Œ์ผ“ ๋ฆด๋ ˆ์ด๋‚˜ TCP ํฌํŠธ๋กœ ๋‚ด์šฉ์„ ์ „๋‹ฌํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(netcat๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค)

  • slurm: ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • dd: ํŒŒ์ผ๋“ค์ด๋‚˜ ๋””๋ฐ”์ด์Šค๋“ค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธธ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • file: ํŒŒ์ผ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ์•„๋‚ด๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • tree: ๋””๋ ‰ํ† ๋ฆฌ๋“ค๊ณผ ๊ทธ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์น˜ ls๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž…๋ ฅํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • stat: ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • time: execute and time a command

  • 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๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”)

  • 7z: ๊ณ ํšจ์œจ์˜ ํŒŒ์ผ ์••์ถ•ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค

  • ldd: ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • nm: ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋“ค์— ํฌํ•จ๋œ ์‹ฌ๋ณผ์ •๋ณด๋ฅผ ์–ป์–ด์˜ต๋‹ˆ๋‹ค

  • ab: ์›น ์„œ๋ฒ„๋ฅผ ๋ฒค์น˜ ๋งˆํ‚นํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • strace: ์‹œ์Šคํ…œ ์ฝœ์„ ๋””๋ฒ„๊น…ํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • mtr: ๋„คํŠธ์›Œํฌ ๋””๋ฒ„๊น…์‹œ์— traceroute๋ณด๋‹ค ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค

  • cssh: ์‰˜์„ ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • rsync: SSH๋ฅผ ์ด์šฉํ•ด ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜, ๋กœ์ปฌ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ๊ณผ ํด๋”๋“ค์„ ๋™๊ธฐํ™” ํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • wireshark and tshark: ํŒจํ‚ท์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉฐ ๋„คํŠธ์›Œํ‚น์„ ๋””๋ฒ„๊น…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • ngrep: ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ grep๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค

  • host and dig: DNS ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • lsof: ํ”„๋กœ์„ธ์Šค ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์™€ ์†Œ์ผ“์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • dstat: ์œ ์šฉํ•œ ์‹œ์Šคํ…œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • glances: ๋ณด๋‹ค ๊ณ ์ฐจ์›์˜ ์—ฌ๋Ÿฌ ์„œ๋ธŒ์‹œ์Šคํ…œ๋“ค์˜ ์ •๋ณด๋ฅผ ํ•œ๋ฒˆ์— ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • iostat: ๋””์Šคํฌ์˜ ์‚ฌ์šฉ๋Ÿ‰ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • mpstat: CPU ์‚ฌ์šฉ๋Ÿ‰ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • vmstat: ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • htop: ๋ณด๋‹ค ๊ฐœ์„ ๋œ ํ˜•ํƒœ์˜ top์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • last: ๋กœ๊ทธ์ธ ํ–ˆ๋˜ ์ •๋ณด๋“ค์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • w: ํ˜„์žฌ ๋ˆ„๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • id: ํ˜„์žฌ ์œ ์ €๋‚˜ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์‹๋ณ„ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • sar: ์‹œ์Šคํ…œ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • iftop or nethogs: ์†Œ์ผ“ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • ss: ์†Œ์ผ“์— ๊ด€ํ•œ ํ†ต๊ณ„์ž๋ฃŒ๋“ค์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • dmesg: ๋ถ€ํŒ… ๋ฉ”์‹œ์ง€์™€ ์‹œ์Šคํ…œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋“ค์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • hdparm: SATA/ATA disk๋“ค์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ๊ฒƒ๋“ค์ด ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • lsb_release: Linux ๋ฐฐํฌํŒ์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • lsblk: ๋ธ”๋ก ๋””๋ฐ”์ด์Šค๋“ค์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค : ์—ฌ๋Ÿฌ๋ถ„์˜ ๋””์Šคํฌ๋“ค์ด๋‚˜ ๋””์ŠคํฌํŒŒํ‹ฐ์…˜๋“ค์„ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • lshw, lscpu, lspci, lsusb, dmidecode: CPU, BIOS, RAID, graphics, devices ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค

  • lsmod์™€ modifno: ์ปค๋„ ๋ชจ๋“ˆ์˜ ์ƒ์„ธ์ •๋ณด๋ฅผ ๋ชฉ๋ก์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • fortune, ddate, ๊ทธ๋ฆฌ๊ณ  sl: ์—... ์ฆ๊ธฐ๊ธฐ๊ด€์ฐจ๋ฅผ ์ƒ๊ฐํ•˜๊ณ ์žˆ๊ณ  ๊ทธ๊ฒƒ์„ ์ธ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๊ฒƒ์€ "์œ ์šฉ"ํ•ฉ๋‹ˆ๋‹ค

OS X only

MacOS์—์„œ๋งŒ ํ•ด๋‹น๋˜๋Š” ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

  • brew (Homebrew)๋‚˜ port (MacPorts)๋ฅผ ํŒจํ‚ค์ง€ ๋ฉ”๋‹ˆ์ €๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๋งŽ์€ ๋ช…๋ น์–ด๋ฅผ MacOS์— ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • pbcopy๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์Šคํฌํƒ‘ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ช…๋ น์–ด ์ถœ๋ ฅ๋ฌผ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ pbpaste๋ฅผ ์ด์šฉํ•ด ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์Šคํฌํƒ‘ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŒŒ์ผ์„ ์—ด๊ธฐ์œ„ํ•ด, open ๋˜๋Š” open -a /Applications/Whatever.app์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • Spotlight: mdfind๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ์„ ์ฐพ๊ณ , mdls๋ฅผ ์ด์šฉํ•ด ๋ฉ”ํƒ€๋ฐ์ดํƒ€ (์‚ฌ์ง„ EXIF ์ •๋ณด์™€ ๊ฐ™์€) ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 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๊ณผ ๊ฐ™์€)๋‚˜ ํ…Œ์ŠคํŠธ์‹œ ์ฃผ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

More resources

  • awesome-shell: ์‰˜์— ๋Œ€ํ•œ ํˆด๊ณผ ๋ฆฌ์†Œ์Šค๋“ค์ด ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.
  • Strict mode: ๋ณด๋‹ค ๋‚˜์€ ์‰˜์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๊ธ€์ž…๋‹ˆ๋‹ค.

Disclaimer

๋งค์šฐ ์ž‘์€ ์ž‘์—…์„ ์ œ์™ธํ•œ ์ฝ”๋“œ๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ด ๋‚ด์šฉ์€ ์ž‘์„ฑ์ž ์ „์›์—๊ฒŒ ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. Bash์—์„œ ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‹น์‹ ์ด ๋ญ”๊ฐ€๋ฅผ ํ•ด์•ผ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค! ;)

License

Creative Commons License

์ด ์ €์ž‘๋ฌผ์€ Creative Commons Attribution-ShareAlike 4.0 International License์— ๋”ฐ๋ผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.