Unix Command line tools

BSD โ‰ \neq UNIX

  • ์ปค๋งจ๋“œ ๋ผ์ธ ํˆด์€ ๋Œ€๋ถ€๋ถ„ ๋‘๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ๋‹ค:
    • BSD ๋ฒ„์ „ (BSDs & MacOS)
    • GNU ๋ฒ„์ „ (Linux)
  • MacOS์—์„œ brew install coreutils ๋ช…๋ น์„ ์ด์šฉํ•ด GNU ๋ฒ„์ „ ํˆด์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

grep

ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
     [-e pattern] [-f file] [--binary-files=value] [--color[=when]]
     [--colour[=when]] [--context[=num]] [--label] [--line-buffered]
     [--null] [pattern] [file ...]
$ grep bananas foo.txt
  • -A [NUM] (after) - ์ผ์น˜ํ•˜๋Š” ๋ผ์ธ์˜ ์ดํ›„ ๋ผ์ธ์„ ๋ณด์—ฌ์ค€๋‹ค.
  • -B [NUM] (before) - ์ผ์น˜ํ•˜๋Š” ๋ผ์ธ์˜ ์ด์ „ ๋ผ์ธ์„ ๋ณด์—ฌ์ค€๋‹ค.
  • -C [NUM] (current) - ์ผ์น˜ํ•˜๋Š” ๋ผ์ธ์˜ ์ „ํ›„ ๋ผ์ธ์„ ๋ณด์—ฌ์ค€๋‹ค.
  • -i (case Insensitive) - ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • -l (fiLenames) - ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์˜ ํŒŒ์ผ ์ด๋ฆ„๋งŒ ๋ณด์—ฌ์ค€๋‹ค.
  • -v (inVert match) - ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ผ์ธ์„ ์ฐพ๋Š”๋‹ค.
  • -r (Recursive) - ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•œ๋‹ค.
  • -o (Only) - ๋ผ์ธ์—์„œ ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๋ณด์—ฌ์ค€๋‹ค.
  • -E (Egrep) - ์ก๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•ด ๊ฒ€์ƒ‰ํ•œ๋‹ค.
  • -F (Fgrep) - ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ํ•œ๋‹ค.

find

๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค.

find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
$ find /tmp -type d -print
  • -name - ์ด๋ฆ„์œผ๋กœ ์ฐพ๋Š”๋‹ค. eg. -name '*.txt'
  • -path - ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์ฐพ๋Š”๋‹ค. eg. -path '/home/*/*.go'
  • -type [TYPE] - ํƒ€์ž…์œผ๋กœ ์ฐพ๋Š”๋‹ค. eg. -type d
    • f (File) - ์ผ๋ฐ˜ ํŒŒ์ผ
    • l (symLink) - ์‹ฌ๋ณผ๋ฆญ ๋งํฌ
    • d (Directory) - ๋””๋ ‰ํ† ๋ฆฌ
  • -size0 - ๋นˆ ํŒŒ์ผ(ํฌ๊ธฐ๊ฐ€ 0์ธ ํŒŒ์ผ)์„ ์ฐพ๋Š”๋‹ค.
  • -exec [COMMAND] - ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ๋งˆ๋‹ค ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค.
  • -delete - ์ฐพ์€ ํŒŒ์ผ์„ ์‚ญ์ œํ•œ๋‹ค.

xargs

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด์„ ๋ฐ›์•„ ๋ช…๋ น์˜ ์ธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
      [-L number] [-n number [-x]] [-P maxprocs] [-s size]
      [utility [argument ...]]
$ echo "/home/tmp" | xargs ls
  • ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด ๊ฐ™์€ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค:
    • xargs rm - delete
    • xargs cat - combine
    • xargs grep - search
    • xargs sed - replace
  • find . -name '*.txt' | xargs sed -i s/foo/bar/g- ๋ชจ๋“  .txt ํŒŒ์ผ์— ์žˆ๋Š” ๋‹จ์–ด "foo"๋ฅผ ๋ชจ๋‘ "bar"๋กœ ๋ฐ”๊พผ๋‹ค:
  • ํŒŒ์ผ๋ช…์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๋ถ„๋ฆฌ๋œ ์ธ์ž๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
  • -n 1 - ๊ฐ ์ž…๋ ฅ์— ๋Œ€ํ•ด xargs๊ฐ€ ๋ถ„๋ฆฌ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•œ๋‹ค.
  • -P - ๋ณ‘๋ ฌ ํ”„๋กœ์„ธ์Šค์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค.

awk

๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‹ค.

awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ...  ]
  • awk ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:
BEGIN { ... }
CONDITION { action }
CONDITION { action }
END { ... }
  • ํ…์ŠคํŠธ์˜ ์ปฌ๋Ÿผ์„ ์ถ”์ถœํ•œ๋‹ค:
    • , - column separator
    • {print $5} - print the 5th column
$ awk -F, '{print $5}'
  • ์„ธ๋ฒˆ์งธ ์ปฌ๋Ÿผ์˜ ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ๋”ํ•ด ์ถœ๋ ฅํ•œ๋‹ค:
$ awk '{s += $3};END{print s}'

bash tricks

  • magical braces
    • convert file.{jpg.png} expands to convert file.jpg file.png
    • {1...5} expands to 1 2 3 4 5
  • !! - ๋งˆ์ง€๋ง‰ ๋ช…๋ น ($ sudo !!)
  • ๋ฐ˜๋ณต๋ฌธ:
    for i in *.png
    do
      convert $i $i.jpg
    done
    
  • $(...) - ๋ช…๋ น์˜ ์ถœ๋ ฅ (touch file@$(date -I) create a file named file@2019-10-26)
  • cd - - ์ด์ „ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
  • bg (BackGround) - ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘
  • fg (ForeGround) - ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ๊ทธ๋žจ์„ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜

disk usage

  • du (Disk Usage) - ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค.
    • -s (Summary)
    • -h (Human-readable sizes)
  • df (Disk Filesystem) - ๊ฐ ํŒŒํ‹ฐ์…˜์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋ณด์—ฌ์ค€๋‹ค.
    • -h (Human-readable sizes)
    • -i (disk Inodes)

tar

.tar (Tape ARchiver) ํŒŒ์ผ ํ˜•์‹์€ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์€ ํ˜•์‹์ด๋‹ค. .tar ํŒŒ์ผ ์ž์ฒด๋กœ๋Š” ์••์ถ•์„ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์••์ถ•์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ .tar.gz๋‚˜ .tgz ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

tar [bundled-flags <args>] [<file> | <pattern> ...]
tar {-c} [options] [files | directories]
tar {-r | -u} -f archive-file [options] [files | directories]
tar {-t | -x} [options] [patterns]
  • tar ๋ช…๋ น์€ ๋ณดํ†ต tar.gz ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (tar -xzf file.tar.gz)
  • -x (eXtract) - ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์ถ”์ถœํ•œ๋‹ค.
  • -c (Create) - ์ƒˆ๋กœ์šด tar ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค.
  • -t (lisT) - tar ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • -f (File) - ํŠน์ • tar ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์••์ถ• ํ•ด์ œํ•œ๋‹ค.
  • tar๋Š” ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ํ˜•์‹์œผ๋กœ ์••์ถ•ํ•˜๊ฑฐ๋‚˜ ์••์ถ• ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
    • -z - gzip (.gz)
    • -j - bzip2 (.bz2)
    • -J - xz (.xz)

ps

์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]] [-g grp[,grp...]] [-u uid[,uid...]] [-p pid[,pid...]]
   [-t tty[,tty...]] [-U user[,user...]]
ps [-L]

์ฐธ๊ณ ์ž๋ฃŒ

์ด ๋ฌธ์„œ๋ฅผ ์ธ์šฉํ•œ ๋ฌธ์„œ