1. ๋ฆฌ๋ค์ด๋ ์
๋ฆฌ๋ค์ด๋ ์
์ STDIN
, STDOUT
, STDERR
๋ฅผ ๋ค๋ฅธ ์คํธ๋ฆผ์ด๋ ํ์ผ๋ก ์ฐํํ ์ ์๋ ๋ช
๋ น์ด์ด๋ค. ๊บฝ์ ๋ถํธ >
, <
๋ฅผ ํตํด ๋ฐฉํฅ์ ์ง์ ํ๋ฉฐ, [ํ๋ก๊ทธ๋จ] [๋ฆฌ๋ค์ด๋ ์
] [ํ์ผ/์คํธ๋ฆผ]
์ ํํ๋ก ๊ตฌ์ฑ๋๋ค.
2. ๋ฆฌ๋ค์ด๋ ์ ์ ๋์ ์์
cmd > file
: (ํ์ค)์ถ๋ ฅ์ ํ์ผ์ ๋ฎ์ด์์ด๋ค.cmd >> file
: (ํ์ค)์ถ๋ ฅ์ ํ์ผ์ ์ด์ด๋ถ์ธ๋ค(cat).cmd < file
: cmd์ (ํ์ค)์ ๋ ฅ์ ํ์ผ๋ก ์ฌ์ฉํ๋ค.cmd << DELIMITER
: DELIMITER์ ๋ ฅ์ด ๋์ฌ๋๊น์ง์ ๋ชจ๋ ์ ๋ ฅ์ cmd๋ก ์ ๋ฌํ๋ค.
3. ๋ฆฌ๋ค์ด๋ ์ ๊ณผ ํ์ดํ์ ์ฐจ์ด
๋ฆฌ๋ค์ด๋ ์ ๊ณผ ํ์ด๋ ๋๋ค ํ์ค์ ๋ ฅ/์ถ๋ ฅ/์๋ฌ์ ๋ฐฉํฅ์ ์ฐํํ๋ ๋ช ๋ น์ด์ด๋ค. ํ์ง๋ง ๊ทธ ๋์ฐฉ์ง์์ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
- ํ์ดํ(
|
) : (ํ์ค)์ถ๋ ฅ์ ํ๋ก๊ทธ๋จ/์ ํธ๋ฆฌํฐ๋ก ๋๊น - ๋ฆฌ๋ค์ด๋ ์
(
>
) : (ํ์ค)์ถ๋ ฅ์ ํ์ผ/์คํธ๋ฆผ์ผ๋ก ๋๊น
4. HEREDOC(here document)
์ปดํจํ ์์ ํ์ด ๋ํ๋จผํธ(here document, here-document), ํ์ด ํ ์คํธ(here-text), ํ์ด๋ (heredoc), ํ์ด์ด์ฆ(hereis), ํ์ด ์คํธ๋ง(here-string), ํ์ด ์คํฌ๋ฆฝํธ(here-script)๋ ํ์ผ ๋ฆฌํฐ๋ด ๋๋ ์คํธ๋ฆผ ๋ฆฌํฐ๋ด์ด๋ค. ๋ง์น ๋ณ๋์ ํ์ผ์ธ ๊ฒ์ฒ๋ผ ์ทจ๊ธํ๋ ์์ค ์ฝ๋์ ํ ๋ถ๋ถ์ด๋ค. ์ด ์ฉ์ด๋ ๋น์ทํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ค์ ์คํธ๋ง ๋ฆฌํฐ๋ด์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ์ฌ์ฉ๋๋ฉฐ ํ ์คํธ ์์ ์ค ๋ฐ๊พธ๊ธฐ์ ๊ธฐํ ๊ณต๋ฐฑ(๋ค์ฌ์ฐ๊ธฐ ํฌํจ)์ ๋ณด์กดํ๋ค.</p> โฆ</p> ํ์ด ๋ํ๋จผํธ๋ ํ์ผ ๋๋ ๋ฌธ์์ด๋ก ์ทจ๊ธ์ด ๊ฐ๋ฅํ๋ค. ์ผ๋ถ ์ ธ์ ์ด๊ฒ๋ค์ Printf ๋ฆฌํฐ๋ด๋ก ์ทจ๊ธํ๋ฉฐ ์ด๋ก์จ ๋ฆฌํฐ๋ด ๋ด์์ ๋ณ์ ์นํ๊ณผ ๋ช ๋ น์ด ์นํ์ ๊ฐ๋ฅ์ผ ํ๋ค. ์ ๋์ค ์ ธ์์ ๊ธฐ์ํ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ์ด ๋ํ๋จผํธ ๋ฌธ๋ฒ์ ยซ์ ๊ทธ ๋ค์ ๋ถ๋ ๊ตฌ๋ถ ๋ฌธ์ ์๋ณ์(์ข ์ข EOF ๋๋ END), ๊ทธ๋ฆฌ๊ณ ๋ค์ ์ค์ ์ธ์ฉ ํ ์คํธ๊ฐ ์์๋๋ฉฐ ์ธ์ฉ ํ ์คํธ๋ฅผ ๋ซ์ ๋์๋ ๋๊ฐ์ ๊ตฌ๋ถ ๋ฌธ์ ์๋ณ์๊ฐ ์์นํ๊ฒ ๋๋ค. ์ด๋ฌํ ๋ฌธ๋ฒ์ ํ์ด ๋ํ๋จผํธ๊ฐ ์คํธ๋ฆผ ๋ฆฌํฐ๋ด์์ ์๋ฏธํ๋ฉฐ ๋ฌธ์์ ๋ด์ฉ์ ์ ํ ๋ช ๋ นdml stdin(ํ์ค ์คํธ๋ฆผ)์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋ค. ํ์ด ๋ํ๋จผํธ ๋ฌธ๋ฒ์ โ๋ค์ ํ์ผ๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ๋โ <์ธ ์ ๋ ฅ ๋ฆฌ๋ค์ด๋ ์ ๋ฌธ๋ฒ๊ณผ ์ ์ฌํ๋ค.</p> ์ํค๋ฐฑ๊ณผ โฆ
heredoc์ ์ ๋์ค์์ ์ฌ๋ฌ ์ค(\n)์ ๋ธ๋ก์ ์ ๋ฌํ ์ ์๊ฒ ํ๋ ๋ฆฌ๋ค์ด๋ ์ ์ ์ ํ์ด๋ค.
5. ๋์ ์์
ํด๋น๋ถ๋ถ์ zsh๊ณผ bash์ ๋์์ด ์๋นํ ์์ดํ๋ค. zsh๋ ์ฌ๋ฌ๊ฐ์ ๋ฆฌ๋ค์ด๋ ์ ์ด ๊ฑธ๋ฆฐ๊ฒฝ์ฐ ์์๋๋ก ์ ๋ถ ์ฒ๋ฆฌํ์ง๋ง, bash๋ ๋ง์ง๋ง๊ฑฐ๋ง ์ฒ๋ฆฌํ๋ค(ํ์ง๋ง, >,ย ยป์ ๊ฒฝ์ฐ ํ์ผ์ ๋ง๋ ๋ค.)
cat <infile
indfile
cat <<END
heredoc
[zsh]pipe๋ก ์ฐ๊ฒฐ๋ heredoc ๊ฐ์๋ง๋ค
pipe heredoc>
,pipe pipe heredoc>
์ผ๋ก ํ์๋จ.
[bash]๋ช๊ฐ์ heredoc์ด ์๋์ง๊ฐ์ >
๋ก ํ์๋จ.
$ cat < infile << END
[zsh] infile heredoc
[bash] heredoc
$ cat -n infile | cat << END
[zsh] 1 infile heredoc
[bash] heredoc
[zsh]infile์ด echo๋๊ธฐ ์ ์ heredoc ์ ๋ ฅ ์ปค์(
pipe heredoc>
)๊ฐ ๋จผ์ ์ถ๋ ฅ๋๊ณ heredoc ์ข ๋ฃ ํ ์ดํ ํ๋ก์ธ์ค๊ฐ ์ํ๋จ.
[bash]๋๋ฒ์งธ cat << END
์ ํ์ค์
๋ ฅ์ผ๋ก ํ์ดํ์ heredoc์ด ๋ค์ด์์ง๋ง, ํ์ดํ๋ ์์ ํ ๋ฌด์๋๊ณ heredoc๋ง์ด ์
๋ ฅ๋ ๋ชจ์ต.
echo hi | cat -n <<END | cat <<END
[zsh] 1 hi 2 heredoc1 heredoc2
[bash] heredoc2
[zsh]์ฐ์ ์ปค์๋ก
pipe pipe heredoc>
์ด ์ถ๋ ฅ๋๊ณ , ์ฒซ๋ฒ์งธ END๊น์ง ๋ฐ์ ์ ๋ ฅ์cat -n <<END
๋ถ๋ถ์, ์ดํ๋ถํฐ ๋๋ฒ์งธ END๊น์ง ๋ฐ์ ์ ๋ ฅ์cat <<END
์ ๋ค์ด๊ฐ๋ค.
[bash]๋์ฅ ๋์ค์ ์
๋ ฅ๋๋ ํ์ค ์
๋ ฅ๋ง์ด ์ ํจํ๋ฏ๋ก ์น ๋ฌด์๋๊ณ cat <<END
๋ง์ด ์ ํจํด์ง๋คโฆ
cat infile <<END
[bash] infile
infile์ cat์ ์ธ์์ด๋ค. ์ด๊ฑด catํ๋ก๊ทธ๋จ ์์ฒด์์ ์ ์ํ๋ ๋์์ด๋ค.
cat <<END <infile <<END
[bash] heredoc2
bash์์ ์ฌ๋ฌ๊ฐ์ ์ ๋ ฅ์ด ๋ค์ด์๋ ์น ๋ฌด์๋๊ณ ๋ง์ง๋ง๊ฑฐ๋ง ์ ํจํ๋คโฆ
6. ๊ตฌํ๋ฐฉ์
6.1. ๋ฆฌ๋ค์ด๋ ์ ์ ๋ฐฉํฅ์ฑ
- bash๋ ํ์ดํ์ ๋ฆฌ๋ค์ด๋ ์ ์ด ๊ณต์กดํ ๋ ๋ฆฌ๋ค์ด๋ ์ ์ด ํญ์ ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค.
- ๋ํ, ์ค๋ณต๋๋ ์ ๋ ฅ/์ถ๋ ฅ ๋ฆฌ๋ค์ด๋ ์ ๋ค์ด ์๋ค๋ฉด, ๊ฐ์ฅ ๋์ค์ ์ค๋ ๋ฆฌ๋ค์ด๋ ์ ๋ง์ด ์ ํจํ๋ค.
- ํ์ง๋ง ์ ํจํ์ง ์์ ๋ฆฌ๋ค์ด๋ ์ ํ์ผ์ด๋ผ๋ ์์ฑํ๊ฑฐ๋ ์ฐ๋ค.
- ๋ฆฌ๋ค์ด๋ ์
์
๋ ฅ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ ๋จ ํ ์ค๋ง์ด ์ ํจํ๋ค. ์ดํ๋ ํด๋น ๋ช
๋ น์ด์ ์ธ์๋ก ์ทจ๊ธ๋๋ค.</p>
cat <input2>outout1 -n >>output2 file1
์ ๊ฒฝ์ฐcat -n file1
์ด ๋ฆฌ๋ค์ด๋ ์ ๋จ.
=> ๋ฐ๋ผ์ ๋ฆฌ๋ค์ด๋ ์ ๊ตฌํ์ ์ผ๋จ ๋ชจ๋ ๋ฆฌ๋ค์ด๋ ์ ์ผ๋ก ๋ค์ด์จ ๋ชจ๋ ํ์ผ/heredoc์ ์ด๊ฑฐ๋, ์์ฑํ๋ค. ์ดํ ๊ฐ์ฅ ๋์ค์ ๋ค์ด์จ ๋ฆฌ๋ค์ด๋ ์ ๋ง ๋ฐ์ํ์ฌ ์ ์ถ๋ ฅ์ dup2๋ก ๊บฝ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค. ๋ํ ํ์ดํ๋ฅผ ํตํ dup2๋ค์ ๋ฆฌ๋ค์ด๋ ์ ์ ํตํ dup2๋ฅผ ๋ ๋์ค์ ๋์ด, ๋ฆฌ๋ค์ด๋ ์ ์ด ์ฐ์ ๊ถ์ ๊ฐ์ง๊ฒ ํ์๋ค.
+์ถ๊ฐ : ๋จ์ผ ๋นํธ์ธ ๋ช ๋ น์ ๋ฆฌ๋ค์ด๋ ์ ํ๋ ๊ฒฝ์ฐ, ํด๋น ๋ช ๋ น ์ ๋ ฅํ ๊ธฐ์กด์ dup๋ก ์ ์ฅํ ํ์ค์ ์ถ๋ ฅ์ผ๋ก ์ ์ถ๋ ฅ์ ์ฌ์ค์ ํด์ฃผ์ด์ผํ๋ค. ์๊ทธ๋ฌ๋ฉด ์ดํ์ ์ ๋ ฅ์ด ๋ฆฌ๋ค์ด๋ ์ ๋์ฑ๋ก ๋จ์์๋๋ค.
6.2. heredoc
heredoc์ DELIMITER๊ณผ ์ผ์นํ๋ ๋ฌธ์๊ฐ ๋์ค๊ธฐ์ ๊น์ง ์
๋ ฅ๋ (์ฌ๋ฌ์ค์)์
๋ ฅ์ ๋ฐ์์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ ๊ฒ ์
๋ ฅ๋ฐ์ ๋ฌธ์๋ค์ ํ๋ก๊ทธ๋จ(๋จ์ ์๋ฃ๊ตฌ์กฐ)์ ์ ์ฅํ ์ง, ํ์ผ์์คํ
(hdd/ssd์ ํ์ผ)์ ์ ์ฅํ ์ง ๊ณ ๋ฏผ์ ํ๋ค.
๋ค๋ฅธ ๋ฆฌ๋ค์ด๋ ์
๋ค๋ ํ์ผ๋ค๊ฐ์ ์
์ถ๋ ฅ์ธ์ , ๊ทธ๋ฆฌ๊ณ ํ์ผ์์คํ
์ ์ด์ฉํ๋ฉด ๋ฒํผ๋ฑ์ ์ ํ์์ ์์ ๋กญ๊ธฐ ๋๋ฌธ์ ํ์ผ์์คํ
์ heredoc(.doc1, .doc2...
)์ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฑํํ์๋ค.
์ด๋, heredocํ์ผ์ ์์น๋ ์ ๋๊ฒฝ๋ก๋ก ๋ณํ์ง ์์ ์ ์ฅํ๋๊ฒ ๋ง๋ค. ํ์ง๋ง ํด๋ฌ์คํฐ์ ํ๊ฒฝ(์ ๊ทผ๊ถํ)์ ๊ณ ๋ คํ์ฌ ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์์น๋ก ํํํ๋ค.
+์ถ๊ฐ : heredoc๊ฐ ์ปค๋งจ๋์ ์๋ค๋ฉด ์ปค๋งจ๋ ์คํ ์ ์ ๋ชจ๋ heredoc์ ์ ๋ถ ๋ฐ๊ณ ์์ํ๋ค.
์ฐธ๊ณ 1 ์ฐธ๊ณ 2 ์ฐธ๊ณ 3 ์ฐธ๊ณ 4