๐Ÿ€ Knowledge/์šด์˜์ฒด์ œ(OS)

[์šด์˜์ฒด์ œ] ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด ์•Œ์•„๋ณด๊ธฐ (2)

TIlearn 2024. 3. 18. 11:45

 

 

Redirection

 

 

Redirection์€ stdin/stdout/stderr๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๋ชฉ์ ์ง€๋ฅผ ์žฌ์ •์˜ํ•œ๋‹ค.

 

 

์ด๋Š” ํ‘œ์ค€ ์ž…๋ ฅ, ์ถœ๋ ฅ, ์—๋Ÿฌ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ปค๋งจ๋“œ์— ์˜ํ•œ ์ž…๋ ฅ์€ ํ‘œ์ค€ ์ž…๋ ฅ(stdin ํŒŒ์ผ)์— ์ž‘์„ฑ๋˜๊ณ  ํ™”๋ฉด์— ์ถœ๋ ฅ๋œ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ์ปค๋งจ๋“œ์— ์˜ํ•œ ์ถœ๋ ฅ์€ ํ‘œ์ค€ ์ถœ๋ ฅ ๋˜๋Š” ํ‘œ์ค€ ์—๋Ÿฌ์— ์ž‘์„ฑ๋œ๋‹ค. ์ด๋Š” ๋‘˜ ๋‹ค ํ™”๋ฉด์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€๋งŒ ์‹ค์งˆ์ ์œผ๋กœ ์ž‘์„ฑ๋˜๋Š” ํŒŒ์ผ์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.(stdout/stderr)

 

 

๊ธฐ๋ณธ์ ์œผ๋กœ ๋””์Šคํฌ์—๋Š” ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ์„ธ์Šค์—์„œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ๋ฒˆํ˜ธ๋ฅผ file descriptor(fd)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

ํ‘œ์ค€ ์ž…๋ ฅ/์ถœ๋ ฅ/์—๋Ÿฌ์˜ fd๋Š” ์ˆœ์„œ๋Œ€๋กœ 0,1,2์ด๋‹ค.

 

 

 

pts๋Š” ๊ฐ™์€ ํ„ฐ๋ฏธ๋„์— ๋ฌถ์—ฌ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฆฌ๋””๋ ‰์…˜

 

ํ™”๋ฉด์— ์ถœ๋ ฅ๋  ๊ฒฐ๊ณผ๋ฌผ์ด ํŒŒ์ผ์— ์“ฐ์ด๋„๋ก ํ•œ๋‹ค.

 

// ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜ํ–‰, ๋ฎ์–ด์“ฐ๊ธฐ
ls -l /usr/bin > ls-output.txt

// ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์ˆ˜ํ–‰, ๋ฎ์–ด์“ฐ๊ธฐ
ls -l/ babo > ls-output.txt
// /babo๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋Š” ์ถœ๋ ฅ๋˜์ง€๋งŒ, stdout๊ณผ ๋ณ„๊ฐœ์ด๋‹ค. 
// ํ‘œ์ค€ ์ถœ๋ ฅ์€ ์—†์œผ๋ฏ€๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ๋˜์–ด์„œ ๋‚ด์šฉ๋ฌผ์ด ์‚ฌ๋ผ์ง„๋‹ค.

echo "something" > ls-output.txt

// ์ด ๊ฒฝ์šฐ ์ถœ๋ ฅ์ด ์—†์œผ๋ฏ€๋กœ ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์—ฌ์ง€์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
> ls-output.txt(ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜ํ–‰)

// ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜ํ–‰, ์ด์–ด์“ฐ๊ธฐ ๊ธฐ๋Šฅ
ls -l /bin >> ls-output.txt

 

 

 

 

ํ‘œ์ค€ ์—๋Ÿฌ ๋ฆฌ๋””๋ ‰์…˜

 

// ํ‘œ์ค€ ์—๋Ÿฌ ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜ํ–‰, ๋ฎ์–ด์“ฐ๊ธฐ
ls -l /babo 2 > ls-error.txt

 

์ด๋Ÿฐ ์‹์œผ๋กœ 2๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์— ์“ฐ์ธ๋‹ค.

 

 

 

 

 

ํ‘œ์ค€ ์ž…๋ ฅ ๋ฆฌ๋””๋ ‰์…˜

 

ํ‚ค๋ณด๋“œ ๋Œ€์‹ ์— ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ†ตํ•ด์„œ ์ž…๋ ฅ์„ ์ฃผ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. ํ™œ์šฉ์€ ์ œํ•œ์ ์ด๋‹ค.

 

 

_cat [file...]_ : ํŒŒ์ผ(์—†์œผ๋ฉด ํ‘œ์ค€์ž…๋ ฅ)์„ ์ฝ์–ด์„œ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

cat ls-output.txt

cat text01.txt text02.txt text03.txt

cat text0*.txt > text1.txt
// ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ

cat < babo.txt
// ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๋Œ€์‹  ํŒŒ์ผ์„ ์ ์šฉํ•˜์—ฌ ํ‘œ์ค€ ์ถœ๋ ฅ, ๊ฒฐ๊ณผ์ ์œผ๋กœ cat babo.txt์™€ ๊ฐ™๋‹ค.

 

 

 

 

 

 

Pipelines

 

ํ•œ ๋ช…๋ น์–ด์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ ๋ช…๋ น์–ด์˜ ํ‘œ์ค€์ž…๋ ฅ/ํŒŒ์ผ์ž…๋ ฅ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

 

_command1 | command2_์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

  • Filters
    • wc : word count, ์ค„ ์ˆ˜์ด๋‹ค.
    • sort : ์ •๋ ฌ
    • uniq : ์ค‘๋ณต์ œ๊ฑฐ, ์ •๋ ฌ ํ›„์— ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.(-d๋Š” ์ค‘๋ณต์„ ์ถœ๋ ฅํ•œ๋‹ค.)
    • grep pattern [file...] : ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ์ค„์„ ์ถœ๋ ฅใ„ทํ•œ๋‹ค.
    • head/tail : ํŒŒ์ผ ์ฒ˜์Œ ํ˜น์€ ๋๋ถ€ํ„ฐ n ์ค„์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • tee : ํ‘œ์ค€ ์ž…๋ ฅ์„ ์ฝ๊ณ , ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ ํŒŒ์ผ๋กœ ๋™์‹œ์— ์ถœ๋ ฅํ•œ๋‹ค.
      • ls /bin | tee ls-bin.txt | grep zip

 

 

 

 

cut

 

cut์€ ์ค„์—์„œ ํ…์ŠคํŠธ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

_cut OPTION... [file]_

 

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • -c list : ์ง€์ • ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. (-c, -f ์˜ต์…˜)
  • -f list : ์ง€์ • ํ•„๋“œ ์ถœ๋ ฅ
    • comma(,)๋กœ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • range(-)๋กœ ๋ฒ”์œ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • -d delim : ํ•„๋“œ ๊ตฌ๋ถ„ ๊ธฐ์ค€(๋‹จ์ผ ๋ฌธ์ž)
    • default๋Š” tabl๋ฌธ์ž์ด๋‹ค.

 

 

 

 

 

 

tr(tanslate)

 

tr ๋ช…๋ น์–ด๋Š” ์ผ๋ถ€ ๋ฌธ์ž์—ด์„ ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

echo "many        sapce         string" | tr -s ' '
// many spaces string

echo "delete all c and l characters" | tr -d 'cl'
// deete a  and  haracters

cat ls-bin.txt | tr -d 'z' > zx.txt

 

 

 

 

 

 

find

 

find๋Š” ๊ฒฝ๋กœ, ํŒŒ์ผ ํƒ€์ž…, ํŒŒ์ผ ํฌ๊ธฐ, ํŒŒ์ผ ๋ช…, ๊ทธ ๋ฐ–์—๋„ ๋งŽ์€ ์˜ต์…˜์œผ๋กœ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

find ~ | wc -l
// ์ˆจ๊น€ ํŒŒ์ผ๊นŒ์ง€ ํ‘œ์‹œ๋œ๋‹ค.

find -type d | wc -l
// ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดํ•˜์—์„œ ๋””๋ ‰ํ† ๋ฆฌ ํƒ€์ž…์˜ ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜

find -type f | wc -l
// ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดํ•˜์—์„œ ์ผ๋ฐ˜ ํƒ€์ž…์˜ ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜

find ~ -size 0 | wc -l
// ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดํ•˜์—์„œ ํฌ๊ธฐ๊ฐ€ 0์ธ ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜

find ~ -size +1M | wc -l
// ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดํ•˜์—์„œ ํฌ๊ธฐ๊ฐ€ 1MB๋ณด๋‹ค ํฐ ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜

find ~ -type f -name "*.txt" -size +1k | wc -l
// ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดํ•˜์— ์ผ๋ฐ˜ ํƒ€์ž…์ด๊ณ , ์ด๋ฆ„์ด .txt๋กœ ๋๋‚˜๊ณ  1KB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜

 

 

touch empty
// ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ , ์žˆ์œผ๋ฉด ์ ‘๊ทผ๋‚ ์งœ๋ฅผ ์ตœ์‹ ํ™”ํ•œ๋‹ค.

 

 

 

mkdir -p playground/dir-{001..100}
touch playground/dir-{001..100}file-{A..Z}
find playground/ -type f -name 'file-[AB]' | wc -l

 

 

 

 

 

 

history

 

๋ช…๋ น์–ด ์ž…๋ ฅ์„ ๊ธฐ๋กํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

history
// history | grep PATTERN ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

// ctrl + r๊ณผ ctrl + j๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

ps

 

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

 

jobs๋Š” job๋“ค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ _&_๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰์ด๋‹ค.

 

 

_kill_์€ ์‹œ๊ทธ๋„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

 

du

 

du๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

df๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

 

 

 

 

Link (In)

 

  • ์”ธ๋ณผ๋ฆญ ๋งํฌ
    • ํŠน์ •ํ•œ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ text pointer
    • ํŒŒ์ผ ์ž์ฒด์™€ ๊ตฌ๋ถ„ ๋ถˆ๊ฐ€
  • ํ•˜๋“œ ๋งํฌ
    • ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ํŒŒ์ผ
    • ํŒŒ์ผ ์ž์ฒด์™€ ๊ตฌ๋ถ„ ๋ถˆ๊ฐ€

 

 

_ln_ ์€ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ln File Link : hard Link๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ln -s ITEM LINK : symbolic link ์ƒ์„ฑ(item = file or directory)