์ค๋ ์ฐ๋ฆฌ๊ฐ ๋ฒ์ญํ ์๋ฃ๋ Linux ๋ช ๋ น์ค์ ๋ง์คํฐํ๋ ค๋ ์ฌ๋๋ค์ ์ํ ๊ฒ์ ๋๋ค. ์ด ๋๊ตฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ง์ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค. ํนํ ์ฌ๊ธฐ์๋ Bash ์ ธ๊ณผ 21๊ฐ์ง ์ ์ฉํ ๋ช ๋ น์ ๋ํด ์ค๋ช ํฉ๋๋ค. ๋ํ ๋ช ๋ น ํ๋๊ทธ์ Bash ๋ณ์นญ์ ์ฌ์ฉํ์ฌ ๊ธด ๋ช ๋ น์ ์ ๋ ฅ ์๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ค๋ช ํฉ๋๋ค.
โ
์ฝ๊ด
Linux ๋ช ๋ น์ค๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ฉด์ ํ์์ ๋์์ด ๋๋ ๋ง์ ๊ฐ๋ ์ ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค. "Linux"์ "Unix" ๋๋ "shell"๊ณผ "terminal"๊ณผ ๊ฐ์ ์ผ๋ถ๋ ๋๋๋ก ํผ๋๋ฉ๋๋ค. ์ด๊ฒ๋ค๊ณผ ๋ค๋ฅธ ์ค์ํ ์ฉ์ด์ ๋ํด ์ด์ผ๊ธฐํฉ์๋ค.
์ด์ ์ค์ํ ์ฉ์ด๋ฅผ ๋ค๋ฃจ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ "Bash", "shell" ๋ฐ "command line"์ด๋ผ๋ ์ฉ์ด์ "๋๋ ํ ๋ฆฌ" ๋ฐ "ํด๋"๋ผ๋ ์ฉ์ด๋ฅผ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ๋ค๋ ์ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค.
ํ์ค stdin
), ํ์ค ์ถ๋ ฅ(ํ์ค ์ถ๋ ฅ, stdout
) ๋ฐ ํ์ค ์ค๋ฅ ์ถ๋ ฅ(ํ์ค ์ค๋ฅ, stderr
).
์๋์ ์ฃผ์ด์ง ์์ ๋ช
๋ น์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค. my_whatever
- ์ด๊ฒ์ ์ด ์กฐ๊ฐ์ ๋น์ ์ ๊ฒ์ผ๋ก ๊ต์ฒดํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์ผ ์ด๋ฆ์
๋๋ค.
์ด์ ์ด ์๋ฃ์ ์ ์ฉ ๋ช ๋ น ๋ถ์์ ์งํํ๊ธฐ ์ ์ ํด๋น ๋ชฉ๋ก๊ณผ ๊ฐ๋ตํ ์ค๋ช ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
21 ๋ฐฐ์ ๋ช ๋ น
โ์ ๋ณด ์ป๊ธฐ
man
: ๋ช ๋ น์ ๋ํ ์ฌ์ฉ ์ค๋ช ์(๋์๋ง)๋ฅผ ํ์ํฉ๋๋ค.pwd
: ์์ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.ls
: ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ํ์ํฉ๋๋ค.ps
: ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
โํ์ผ ์์คํ ์กฐ์
cd
: ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.touch
: ํ์ผ์ ์์ฑํฉ๋๋ค.mkdir
: ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.cp
: ํ์ผ์ ๋ณต์ฌํฉ๋๋ค.mv
: ํ์ผ์ ์ด๋ํ๊ฑฐ๋ ์ญ์ ํฉ๋๋ค.ln
: ๋งํฌ๋ฅผ ์์ฑํฉ๋๋ค.
โI/O ๋ฆฌ๋๋ ์ ๋ฐ ํ์ดํ๋ผ์ธ
<
: ๋ฆฌ๋๋ ์ stdin
.>
: ๋ฆฌ๋๋ ์ stdout
.|
: ํ ๋ช ๋ น์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ช ๋ น์ ์ ๋ ฅ์ผ๋ก ํ์ดํํ์ต๋๋ค.
โํ์ผ ์ฝ๊ธฐ
head
: ํ์ผ์ ์์ ๋ถ๋ถ์ ์ฝ์ต๋๋ค.tail
: ํ์ผ์ ๋์ ์ฝ์ต๋๋ค.cat
: ํ์ผ์ ์ฝ๊ณ ๊ทธ ๋ด์ฉ์ ํ๋ฉด์ ์ถ๋ ฅํ๊ฑฐ๋ ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค.
โํ์ผ ์ญ์ , ํ๋ก์ธ์ค ์ค์ง
rm
: ํ์ผ์ ์ญ์ ํฉ๋๋ค.kill
: ํ๋ก์ธ์ค๋ฅผ ์ค์งํฉ๋๋ค.
โ๊ฒ์
grep
: ์ ๋ณด๋ฅผ ๊ฒ์ํฉ๋๋ค.ag
: ๊ฒ์์ ์ํ ๊ณ ๊ธ ๋ช ๋ น์ ๋๋ค.
โ์์นด์ด๋น
tar
: ์์นด์ด๋ธ ์์ฑ ๋ฐ ์์ .
์ด ๋ช ๋ น์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
ํ ์ธ๋ถ ์ ๋ณด
์ฐ์ , ๊ฒฐ๊ณผ๊ฐ ํ์์ผ๋ก ๋ฐํ๋๋ ๋ช
๋ น์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. stdout
. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๊ฒฐ๊ณผ๋ ํฐ๋ฏธ๋ ์ฐฝ์ ๋ํ๋ฉ๋๋ค.
โ์ ๋ณด ์ป๊ธฐ
man command_name
: ๋ช
๋ น ๊ฐ์ด๋, ์ฆ ๋์๋ง ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
pwd
: ํ์ฌ ์์
๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ํ์ํฉ๋๋ค. ๋ช
๋ น์ค๋ก ์์
ํ๋ ๋์ ์ฌ์ฉ์๋ ์์คํ
์์ ์ ํํ ์์ ์ด ์๋ ์์น๋ฅผ ์ฐพ์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ls
: ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ํ์ํฉ๋๋ค. ์ด ๋ช
๋ น๋ ๊ฝค ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
ls -a
: ์จ๊น ํ์ผ์ ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ์ฉ๋ ํ๋๊ทธ -a
ํ ls
. ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช
๋ น์ ๋์์ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ls -l
: ํ์ผ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
ํ๋๊ทธ๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ls -al
.
ps
: ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ด
๋๋ค.
ps -e
: ํ์ฌ ์ฌ์ฉ์ ์
ธ๊ณผ ๊ด๋ จ๋ ํ๋ก์ธ์ค๋ฟ๋ง ์๋๋ผ ์คํ ์ค์ธ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค. ์ด ๋ช
๋ น์ ์ข
์ข
์ด ํ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
โํ์ผ ์์คํ ์กฐ์
cd my_directory
: ์์
๋๋ ํ ๋ฆฌ๋ฅผ ๋ค์์ผ๋ก ๋ณ๊ฒฝ my_directory
. ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ์์ ํ ๋จ๊ณ ์๋ก ์ด๋ํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. my_directory
์๋ ๊ฒฝ๋ก ../
.
CD ๋ช
๋ น
touch my_file
: ํ์ผ ์์ฑ my_file
์ฃผ์ด์ง ๊ธธ์ ๋ฐ๋ผ.
mkdir my_directory
: ํด๋ ์์ฑ my_directory
์ฃผ์ด์ง ๊ธธ์ ๋ฐ๋ผ.
mv my_file target_directory
: ํ์ผ ์ด๋ my_file
ํด๋๋ก target_directory
. ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํ ๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค(๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ด ์๋). ../
).
ํ mv
ํ์ผ์ด๋ ํด๋์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ํ์๋ ์ ์์ต๋๋ค.
mv my_old_file_name.jpg my_new_file_name.jpg
: ํ์ผ ์ฌ๋ณธ ์์ฑ
cp my_source_file target_directorymy_source_file
๊ทธ๋ฆฌ๊ณ ํด๋์ ๋ฃ์ด์ฃผ์ธ์ target_directory
.
ln -s my_source_file my_target_file
: ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ my_target_file
ํ์ผ๋น my_source_file
. ๋งํฌ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ ํ์ผ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค.
ํ์ผ์ด my_source_file
์ญ์ ๋ฉ๋๋ค. my_target_file
๋จ์ ๊ฒ์ด๋ค. ๊น๋ฐ -s
ํ ln
๋๋ ํ ๋ฆฌ์ ๋ํ ๋งํฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ด์ I/O ๋ฆฌ๋๋ ์ ๋ฐ ํ์ดํ๋ผ์ธ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
โI/O ๋ฆฌ๋๋ ์ ๋ฐ ํ์ดํ๋ผ์ธ
my_command < my_file
: ํ์ค ์
๋ ฅ ํ์ผ ์ค๋ช
์(stdin
) ํ์ผ๋น my_file
. ์ด๊ฒ์ ๋ช
๋ น์ด ํค๋ณด๋์ ์ผ๋ถ ์
๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ ์ด ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ํ์ผ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ ์ ์์ต๋๋ค.
my_command > my_file
: ๋ช
๋ น์ ๊ฒฐ๊ณผ, ์ฆ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ด๊ฐ ๋ด์ฉ์ ๋ฆฌ๋๋ ์
ํฉ๋๋ค. stdout
ํ๋ฉด์ผ๋ก, ํ์ผ๋ก ์ถ๋ ฅ my_file
. ํ์ผ์ด my_file
์กด์ฌํ์ง ์์ - ์์ฑ๋ฉ๋๋ค. ํ์ผ์ด ์์ผ๋ฉด ๋ฎ์ด์๋๋ค.
์๋ฅผ ๋ค์ด ๋ช
๋ น์ ์คํํ ํ ls > my_folder_contents.txt
ํ์ฌ ์์
๋๋ ํ ๋ฆฌ์ ์๋ ํญ๋ชฉ์ ๋ชฉ๋ก์ ํฌํจํ๋ ํ
์คํธ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
๊ธฐํธ ๋์ ์ >
๊ณต์ฌ๋ฅผ ์ด์ฉํ๋ค >>
๊ทธ๋ฐ ๋ค์ ๋ช
๋ น ์ถ๋ ฅ์ด ๋ฆฌ๋๋ ์
๋๋ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด ํ์ผ์ ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ์ด ํ์ผ์ ๋์ ์ถ๊ฐ๋ฉ๋๋ค.
์ด์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์ฒ๋ฆฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ ๋ช
๋ น์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ช
๋ น์ ์
๋ ฅ์ผ๋ก ๊ณต๊ธ๋ฉ๋๋ค. ํ๋์ ํ์ดํ๋ฅผ ๋ค๋ฅธ ํ์ดํ์ ์ฐ๊ฒฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
first_command | second_command
: ์ปจ๋ฒ ์ด์ด ๊ธฐํธ, |
, ํ ๋ช
๋ น์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ช
๋ น์ผ๋ก ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค๋ช
๋ ๊ตฌ์กฐ์ ์ผ์ชฝ์ ์๋ ๋ช
๋ น์ด ๋ณด๋ด๋ ๋์ stdout
, ๋น ์ง๋ค stdin
ํ์ดํ๋ผ์ธ ๊ธฐํธ ์ค๋ฅธ์ชฝ์ ์๋ ๋ช
๋ น์
๋๋ค.
Linux์์๋ ์ ๊ตฌ์ฑ๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ์ดํ๋ผ์ธํ ์ ์์ต๋๋ค. Linux์ ๋ชจ๋ ๊ฒ์ด ํ์ดํ๋ผ์ธ์ด๋ผ๊ณ ์ข ์ข ๋งํฉ๋๋ค.
ํ์ดํ๋ผ์ธ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ช ๋ น์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
first_command | second_command | third_command
์ฌ๋ฌ ๋ช
๋ น์ ํ์ดํ๋ผ์ธ์ ํ์ดํ๋ผ์ธ๊ณผ ๋น๊ตํ ์ ์์ต๋๋ค.
๊ธฐํธ ์ผ์ชฝ์ ์๋ ๋ช
๋ น์ด |
, ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๋ ฅ stdout
, ๊ทธ๋
๊ฐ ์ถ๋ ฅํ๋ ๊ฒ์ ์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. stdin
๋ ๋ฒ์งธ ํ. ์ฆ, ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ๋ช
๋ น์ ๋ณ๋ ฌ ์คํ์ ์ฒ๋ฆฌํ๊ณ ์์์ด ๋ฐํ์ก์ต๋๋ค. ๋๋ก๋ ์ด๋ก ์ธํด ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค.
์ด์ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํ๋ฉด์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
โํ์ผ ์ฝ๊ธฐ
head my_file
: ํ์ผ์ ์ฒ์๋ถํฐ ์ค์ ์ฝ์ด์ ํ๋ฉด์ ์ถ๋ ฅํฉ๋๋ค. ํ์ผ์ ๋ด์ฉ๋ฟ๋ง ์๋๋ผ ๋ช
๋ น์ด ์ถ๋ ฅํ๋ ๋ด์ฉ๋ ์ฝ์ ์ ์์ต๋๋ค. stdin
์ด ๋ช
๋ น์ ํ์ดํ๋ผ์ธ์ ์ผ๋ถ๋ก ์ฌ์ฉํฉ๋๋ค.
tail my_file
: ํ์ผ ๋์์ ์ค์ ์ฝ์ต๋๋ค. ์ด ๋ช
๋ น์ ํ์ดํ๋ผ์ธ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํค๋(head)๊ฐ ์์ ์๊ณ ํ
์ผ(tail)์ด ๋ค์ ์์ต๋๋ค.
pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ก ์์
ํ๋ ๊ฒฝ์ฐ ๋ช
๋ น head
ะธ tail
๋น์ ์๊ฒ ์น์ํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ฝ๊ฒ ๊ธฐ์ตํ ์ ์์ต๋๋ค.
ํ์ผ์ ์ฝ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๊ณ ๋ช
๋ น์ ๋ํด ์ด์ผ๊ธฐํด ๋ด
์๋ค. cat
.
ํ cat
ํ์ผ์ ๋ด์ฉ์ ํ๋ฉด์ ์ธ์ํ๊ฑฐ๋ ์ฌ๋ฌ ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค. ํธ์ถ ์ ์ด ๋ช
๋ น์ ์ ๋ฌ๋๋ ํ์ผ ์์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
๊ณ ์์ด ๋ช
๋ น
cat my_one_file.txt
: ์ด ๋ช
๋ น์ ๋จ์ผ ํ์ผ์ด ์ ๋ฌ๋๋ฉด ๋ค์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. stdout
.
๋ ๊ฐ ์ด์์ ํ์ผ์ ์ ๊ณตํ๋ฉด ๋ค๋ฅด๊ฒ ์๋ํฉ๋๋ค.
cat my_file1.txt my_file2.txt
: ์ฌ๋ฌ ํ์ผ์ ์
๋ ฅ์ผ๋ก ์์ ํ ํ ์ด ๋ช
๋ น์ ํด๋น ๋ด์ฉ์ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ํ ๋ด์ฉ์ ํ์ํฉ๋๋ค. stdout
.
ํ์ผ ์ฐ๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ํ์ผ๋ก ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
์ด์ ํ์ผ์ ์ญ์ ํ๊ณ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
โํ์ผ ์ญ์ , ํ๋ก์ธ์ค ์ค์ง
rm my_file
: ํ์ผ ์ญ์ my_file
.
rm -r my_folder
: ํด๋ ์ญ์ my_folder
ํฌํจ๋ ๋ชจ๋ ํ์ผ๊ณผ ํด๋. ๊น๋ฐ -r
๋ช
๋ น์ด ์ฌ๊ท ๋ชจ๋์์ ์คํ๋จ์ ๋ํ๋
๋๋ค.
ํ์ผ์ด๋ ํด๋๊ฐ ์ญ์ ๋ ๋๋ง๋ค ์์คํ
์์ ํ์ธ์ ์์ฒญํ์ง ์๋๋ก ํ๋ ค๋ฉด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ญ์์ค. -f
.
kill 012345
: ์ง์ ๋ ์คํ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ์ฌ ์ ์์ ์ผ๋ก ์ข
๋ฃํ ์๊ฐ์ ์ค๋๋ค.
kill -9 012345
: ์ง์ ๋ ์คํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ๋ก ์ข
๋ฃํฉ๋๋ค. ํ๋๊ทธ ๋ณด๊ธฐ -s SIGKILL
ํ๋๊ทธ์ ๊ฐ์ ์๋ฏธ -9
.
โ๊ฒ์
๋ค์ํ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ํนํ - grep
, ag
ะธ ack
. ์ด ๋ช
๋ น์ ๋ํด ์์ ๋ด
์๋ค. grep
. ์ด๊ฒ์ ์ค๋ ์๊ฐ ๋์ ํ
์คํธ๋ฅผ ๊ฑฐ์น ์์ ์ ์ธ ๋ช
๋ น์ด์ง๋ง ๋ค๋ฅธ ๋ช
๋ น๋ณด๋ค ๋๋ฆฌ๊ณ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ์ง ์์ต๋๋ค.
grep ๋ช
๋ น
grep my_regex my_file
: ๊ฒ์ my_regex
ะฒ my_file
. ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๊ฐ ์ผ์น ํญ๋ชฉ์ ๋ํด ์ ์ฒด ๋ฌธ์์ด์ด ๋ฐํ๋ฉ๋๋ค. ๊ธฐ๋ณธ my_regex
์ ๊ท ํํ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
grep -i my_regex my_file
: ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๊ฒ์ํฉ๋๋ค.
grep -v my_regex my_file
: ๋ค์์ ํฌํจํ์ง ์๋ ๋ชจ๋ ํ์ ๋ฐํํฉ๋๋ค. my_regex
. ๊น๋ฐ -v
๋ฐ์ ์ ์๋ฏธํ๋ฉฐ ์ฐ์ฐ์์ ์ ์ฌํฉ๋๋ค. NOT
, ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฐ๊ฒฌ๋ฉ๋๋ค.
grep -c my_regex my_file
: ํ์ผ์์ ์ฐพ์ ๊ฒ์ ํจํด์ ๋ํ ์ผ์น ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
grep -R my_regex my_folder
: ์ง์ ๋ ํด๋์ ๊ทธ ์์ ์ค์ฒฉ๋ ํด๋์ ์๋ ๋ชจ๋ ํ์ผ์์ ์ฌ๊ท ๊ฒ์์ ์ํํฉ๋๋ค.
์ด์ ํ์ ๋ํด ์ด์ผ๊ธฐํฉ์๋ค ag
. ๊ทธ๋
๋ ๋์ค์ ์๋ค grep
, ๋ ๋น ๋ฅด๊ณ ์์
ํ๋ ๊ฒ์ด ๋ ํธ๋ฆฌํฉ๋๋ค.
ag ๋ช
๋ น
ag my_regex my_file
: ํ ๋ฒํธ์ ๋ํ ์ ๋ณด์ ์ผ์น ํญ๋ชฉ์ด ๋ฐ๊ฒฌ๋ ํ ์์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. my_regex
.
ag -i my_regex my_file
: ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๊ฒ์ํฉ๋๋ค.
ํ ag
ํ์ผ์ ์๋์ผ๋ก ์ฒ๋ฆฌ .gitignore
ํด๋น ํ์ผ์ ๋์ด๋ ํด๋ ๋๋ ํ์ผ์์ ๋ฐ๊ฒฌ๋ ๋ด์ฉ์ ์ถ๋ ฅ์์ โโ์ ์ธํฉ๋๋ค. ๋งค์ฐ ํธ์ํฉ๋๋ค.
ag my_regex my_file -- skip-vcs-ignores
: ์๋ ๋ฒ์ ์ ์ด ํ์ผ์ ๋ด์ฉ(์: .gitignore
)๋ ๊ฒ์์์ ๊ณ ๋ ค๋์ง ์์ต๋๋ค.
๋ํ ํ์๊ฒ ์๋ฆฌ๊ธฐ ์ํด ag
๊ฒ์์์ ์ ์ธํ๋ ค๋ ํ์ผ ๊ฒฝ๋ก์์ ํ์ผ์ ๋ง๋ค ์ ์์ต๋๋ค. .agignore
.
์ด ์น์
์ ์์ ๋ถ๋ถ์์ ๋ช
๋ น์ ์ธ๊ธํ์ต๋๋ค. ack
. ํ ack
ะธ ag
๋งค์ฐ ์ ์ฌํ์ฌ 99% ์ํธ ๊ตํ ๊ฐ๋ฅํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋, ํ ag
๋ ๋นจ๋ฆฌ ์๋ํ๋ฏ๋ก ์ค๋ช
ํ์ต๋๋ค.
์ด์ ์์นด์ด๋ธ ์์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
โ์์นด์ด๋น
tar my_source_directory
: ํด๋์์ ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค. my_source_directory
ํ๋์ tarball ํ์ผ๋ก. ์ด๋ฌํ ํ์ผ์ ๋์ฉ๋ ํ์ผ ์ธํธ๋ฅผ ๋๊ตฐ๊ฐ์๊ฒ ์ ์กํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
ํ๋ฅด ๋ช
๋ น
์ด ๋ช
๋ น์ผ๋ก ์์ฑ๋ tarball ํ์ผ์ ํ์ฅ์๊ฐ .tar
(ํ
์ดํ ์์นด์ด๋ธ). "tape"(ํ
์ดํ)๋ผ๋ ๋จ์ด๊ฐ ๋ช
๋ น ์ด๋ฆ๊ณผ ๋ช
๋ น์ด ์์ฑํ๋ ํ์ผ ์ด๋ฆ์ ํ์ฅ์์ ์จ๊ฒจ์ ธ ์๋ค๋ ์ฌ์ค์ ์ด ๋ช
๋ น์ด ์กด์ฌํ ๊ธฐ๊ฐ์ ๋ํ๋
๋๋ค.
tar -cf my_file.tar my_source_directory
:๋ผ๋ ์ด๋ฆ์ tarball ํ์ผ์ ์์ฑํฉ๋๋ค. my_file.tar
ํด๋ ๋ด์ฉ ํฌํจ my_source_directory
. ๊น๋ฐ -c
"create"(๋ง๋ค๊ธฐ)๋ฅผ ์๋ฏธํ๋ฉฐ ํ๋๊ทธ๋ -f
"ํ์ผ"(ํ์ผ)๋ก.
ํ์ผ์ ์ถ์ถํ๋ ค๋ฉด .tar
-ํ์ผ, ๋ช
๋ น ์ฌ์ฉ tar
ํ๋๊ทธ์ ํจ๊ป -x
("์ถ์ถ", ์ถ์ถ) ๋ฐ -f
("ํ์ผ", ํ์ผ).
tar -xf my_file.tar
:์์ ํ์ผ์ ์ถ์ถํฉ๋๋ค. my_file.tar
ํ์ฌ ์์
๋๋ ํ ๋ฆฌ๋ก.
์ด์ ์์ถ ๋ฐ ์์ถ ํด์ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. .tar
-ํ์ผ.
tar -cfz my_file.tar.gz my_source_directory
: ์ฌ๊ธฐ์ ํ๋๊ทธ ์ฌ์ฉ -z
("zip", ์์ถ ์๊ณ ๋ฆฌ์ฆ) ํ์ผ์ ์์ถํ๋ ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํจ์ ๋ํ๋
๋๋ค. gzip
(๊ทธ๋์ง). ํ์ผ ์์ถ์ ์ด๋ฌํ ํ์ผ์ ์ ์ฅํ ๋ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์ผ์ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์ ์กํ ๊ณํ์ธ ๊ฒฝ์ฐ ํด๋น ํ์ผ์ ๋ ๋น ๋ฅด๊ฒ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
ํ์ผ ์์ถ ํด์ .tar.gz
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. -z
์ฝํ
์ธ ์ถ์ถ ๋ช
๋ น์ผ๋ก .tar
-์์์ ๋
ผ์ํ ํ์ผ. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์
๋๋ค.
tar -xfz my_file.tar.gz
์ฃผ๋ชฉํด์ผ ํ ์ ์ ํ tar
๋ ๋ง์ ์ ์ฉํ ํ๋๊ทธ๊ฐ ์์ต๋๋ค.
Bash ๋ณ์นญ
Bash ๋ณ์นญ(๋ณ์นญ ๋๋ ์ฝ์ด๋ผ๊ณ ๋ ํจ)์ ๋ช
๋ น์ ์ถ์ฝ๋ ์ด๋ฆ ๋๋ ํด๋น ์ํ์ค๋ฅผ ์์ฑํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ ์ผ๋ฐ ๋ช
๋ น ๋์ ์ฌ์ฉํ๋ฉด ์์
์๋๊ฐ ๋นจ๋ผ์ง๋๋ค. ๋ณ์นญ์ด ์๋ ๊ฒฝ์ฐ bu
, ๋ช
๋ น์ ์จ๊น๋๋ค. python setup.py sdist bdist_wheel
๊ทธ๋ฐ ๋ค์ ์ด ๋ช
๋ น์ ํธ์ถํ๋ ค๋ฉด ์ด ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ด๋ฌํ ๋ณ์นญ์ ๋ง๋ค๋ ค๋ฉด ํ์ผ์ ๋ค์ ๋ช
๋ น์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
์์คํ
์ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ~/.bash_profile
๊ทธ๋ฐ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ง์ ๋ง๋ค ์ ์์ต๋๋ค. touch
. ๋ณ์นญ์ ๋ง๋ ํ ํฐ๋ฏธ๋์ ๋ค์ ์์ํ๋ฉด ์ด ๋ณ์นญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ ๋ฌธ์์ ์
๋ ฅ์ ๋ช
๋ น์ XNUMX์ ์ด์์ ๋ฌธ์ ์
๋ ฅ์ ๋์ฒดํฉ๋๋ค.
ะ ~/.bash_profile
์์ฃผ ์ฌ์ฉํ๋ ๋ช
๋ น์ ๋ณ์นญ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
โ๊ฒฐ๊ณผ
์ด ๊ฒ์๋ฌผ์์๋ 21๊ฐ์ ์ธ๊ธฐ ์๋ Bash ๋ช
๋ น์ ๋ค๋ฃจ๊ณ ๋ช
๋ น ๋ณ์นญ ์์ฑ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ์ด ์ฃผ์ ์ ๊ด์ฌ์ด ์๋ค๋ฉด -
๋ ์ ์ฌ๋ฌ๋ถ! ์ด ๊ธฐ์ฌ์์ ๋ ผ์๋ ๋ช ๋ น์ ์ด๋ณด์์๊ฒ ์ ์ฉํ ๋ช ๋ น์ ์ถ๊ฐํ์๊ฒ ์ต๋๊น?
โ
์ถ์ฒ : habr.com