GNU/Linux
ํธ์ง๊ธฐ์ ํ ์คํธ ์กฐ์(Editor and Text Manipulation)
GNU/Linux
ํธ์ง๊ธฐ์ ํ ์คํธ ์กฐ์(Editor and Text Manipulation)
Seo, Doo-Ok
๋ชฉ ์ฐจ
ํธ์ง๊ธฐ
ํ ์คํธ ์กฐ์๊ณผ ํํฐ
๋ฌธ์์ด ํจํด ๋ฐ ํ์ผ ๊ฒ์
2
ํธ์ง๊ธฐ
ํธ์ง๊ธฐ
Vim ํธ์ง๊ธฐ
ํ ์คํธ ์กฐ์๊ณผ ํํฐ
๋ฌธ์์ด ํจํด ๋ฐ ํ์ผ ๊ฒ์
3
๊ฐ๋ฐ ํ๊ฒฝ (1/2)
Stack Overflow
๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํด
4
[ ์ถ์ฒ : โDeveloper Survey Results 2019โ, Stack Overflow, 2019. ]
๊ฐ๋ฐ ํ๊ฒฝ (2/2)
PYPL Index
Top IDE index
5[ ์ถ์ฒ : โPYPL Indexโ, Pierre Carbonnelle, April 2020. ]
ํธ์ง๊ธฐ (1/6)
vi(visual edit) ํธ์ง๊ธฐ : ex-vi.sourceforge.net 1976๋ 03์, ๋น ์กฐ์ด(Billy Joy) ๊ฐ ๋ง๋ ํ ์คํธ ํธ์ง๊ธฐ
โข ์ต์ด์ UNIX ์์คํ ์ฉ ํ๋ฉด ํธ์ง๊ธฐโ UNIX ๊ณ์ด ์ด์์ฒด์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํ ์คํธ ํธ์ง๊ธฐโ BSD 3.0 ์ C Shell ๊ณผ ํจ๊ป ์ถ๊ฐ๋ ํ๋ก๊ทธ๋จ
โข ๋ผ์ธ ํธ์ง๊ธฐ์ธ ed ์ ๊ธฐ๋ฅ์ ํ์ฅ์ํจ ex ํธ์ง๊ธฐ๋ฅผ ๊ฐ๋ฐํ๊ณ ์ด๋ฅผ ํ์ฅํ์ฌ ๊ฐ๋ฐ
vi ํธํ ํ ์คํธ ํธ์ง๊ธฐ : Vim(vi improved)โข 1992๋ , 386BSD ๋ฐฐํฌํ(FreeBSD, NetBSD)์์ Elvis ๋ฅผ vi ๋์ฒด ํธ์ง๊ธฐ๋ก ์ฑํโข FreeBSD์ NetBSD 4.4-Lite2 ์์ 1994๋ ๊ฐ๋ฐ๋ nvi ๋ก ์ ํ
vi ๋ฆด๋ฆฌ์ฆโข 1978๋ 03์, ex 1.1 -- BSD UNIX releaseโข 1979๋ 05์, ex 2.0โข 1979๋ 12์, ex 3.1
๋ผ์ด์ ์ค : BSD License ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : C
6
(read-only) ex-vi Project : sourceforge.net
http://ex-vi.cvs.sourceforge.net/
ํธ์ง๊ธฐ (2/6)
Vim(Vi improved) ํธ์ง๊ธฐ : vim.org
1991๋ 11์, vi ํธํ ํ ์คํธ ํธ์ง๊ธฐโข gVim : GUI Vim
Vim ๋ฆด๋ฆฌ์ฆโข 1991๋ 11์, vim 1.14 -- Vi imitation
โข 1993๋ 12์, Vim 2.0 -- Vi improved
โข 2019๋ 12์, Vim 8.2
๋ผ์ด์ ์ค : Vim License, Careware License
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : C, Vim script
7
Vim GitHub : github.com
https://github.com/vim/vim
Vim Mercurial : https://bitbucket.org/
https://bitbucket.org/vim-mirror/vim/src/default/ -- GitHub mirror
ํธ์ง๊ธฐ (3/6)
neovim ํธ์ง๊ธฐ : neovim.io
2014๋ , ํ์ฅ ๊ฐ๋ฅํ Vim ๊ธฐ๋ฐ ํ ์คํธ ํธ์ง๊ธฐโข 2015๋ 12์, neovim 0.1 ๋ถํฐ ๊ฑฐ์ ๋ชจ๋ Vim ์ ๊ธฐ๋ฅ๊ณผ ํธํ๋๋ค.
neovim ๋ฆด๋ฆฌ์ฆโข 2015๋ 11์, neovim 0.1.0
โข 2020๋ 04์, neovim 0.5.0
๋ผ์ด์ ์ค : Apache 2.0 License
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : C, Lua, Vim script
8
neovim GitHub : github.com
https://github.com/neovim/neovim
ํธ์ง๊ธฐ (4/6)
Emacs(Editor MACroS) ํธ์ง๊ธฐ 1976๋ , ๋ฆฌ์ฐจ๋ ์คํจ๋ง(Richard Stallman)์ด ๊ฐ๋ฐํ ํ ์คํธ ํธ์ง๊ธฐ
โข ๊ฐ๋จํ ๋ฌธ์ ํธ์ง์ผ๋ก๋ถํฐ ํ๋ก๊ทธ๋๋ฐ๊น์ง ๋ค์ํ๊ฒ ์ฌ์ฉ
Gosling Emacs : Java ์ธ์ด๋ฅผ ๊ฐ๋ฐํ ์ ์์ค ๊ณ ์ฌ๋ง(James Gosling)
1984๋ , GNU Emacs(FSF Emacs) : gnu.org/software/emacsโข Gosling Emacs๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง, Lisp ์ธํฐํ๋ฆฌํฐ๋ก ๋์ฒดํ๊ธฐ ์ํ์ฌ ์ฌ์์ฑโข XEmacs : 1991๋ GNU Emacs์์ ๋ถ๊ธฐ ๋ ๋ณํ
GNU Emacs ๋ฆด๋ฆฌ์ฆโข 2001๋ 10์, GNU Emacs 21.1โข 2018๋ 05์, GNU Emacs 26.1
๋ผ์ด์ ์ค : GNU GPL v3 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : C, Lisp
9
GNU Emacs GNU Savannah : savannah.gnu.org
http://savannah.gnu.org/projects/emacs/
ํธ์ง๊ธฐ (5/6)
Emacs ํธ์ง๊ธฐ : GNU Emacs
10
ํธ์ง๊ธฐ (6/6)
gedit ํธ์ง๊ธฐ : wiki.gnome.org/Apps/Gedit
1999๋ 02์, GNOME ๋ฐ์คํฌํฑ ํ๊ฒฝ์ ๊ณต์ ํ ์คํธ ํธ์ง๊ธฐโข ๋ชฉํ : ๋จ์์ฑ๊ณผ ์ฌ์ฉ ํธ์์ฑ
โ ๋๋๊ทธ ์ฑ ๋๋กญ(DnD, Dorg and Drop)์ ์ง์
โข GTK+ 3.x ๋ฐ GNOME 3.x ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ
โข 2017๋ 07์๊น์ง ๊ด๋ฆฌ๋์ง ์๋ค๊ฐ, 2017๋ 08์๋ถํฐ ๋ ๊ฐ๋ฐ์๊ฐ ๋ค์ ์์ ์์
gedit ๋ฆด๋ฆฌ์ฆโข 2020๋ 04์, gedit 3.36.1
๋ผ์ด์ ์ค : GNU GPL v2.0+
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : C, Python
11
gedit GNOME GitLab : gitlab.gnome.org
https://gitlab.gnome.org/GNOME/gedit
12
ํธ์ง๊ธฐ
Vim ํธ์ง๊ธฐ
Vim ํธ์ง๊ธฐ
Vim ํธ์ง๊ธฐ : ๋์ ๋ชจ๋
๋ ๊ฐ์ง ๋์ ๋ชจ๋โข ์ ๋ ฅ ๋ชจ๋(Insert mode)
โข ๋ช ๋ น ๋ชจ๋(Command mode)
13
Vim ํธ์ง๊ธฐ : ์คํ๊ณผ ์ข ๋ฃ (1/4)
Vim ํธ์ง๊ธฐ ์คํ
view file
โข ํ์ผ์ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์์ํด์ ํธ์งํ ํ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ ์ฅํ ๋ ์ฌ์ฉ
14
์ผ๋ฐ ํ์ vi [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์ -R (read-only) ํ์ผ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ด ๋ ์ฌ์ฉํ๋ค.
$ view ํ์ผ๋ช
Vim ํธ์ง๊ธฐ : ์คํ๊ณผ ์ข ๋ฃ (2/4)
Vim ํธ์ง๊ธฐ ์คํ
๋ถํ์คํ ์ข ๋ฃ ์ ๋์ด๋ฆฌ๊ธฐ
15
๋ช ๋ น์ด ๋ด ์ฉ
vi -r ๋์ด๋ฆด ์ ์๋ ๋ชจ๋ ํ์ผ์ ์ด๋ฆ์ ๋ณด์ฌ์ค๋ค.
vi -r filename Vim ํธ์ง๊ธฐ๋ฅผ ์์ํ๊ณ ๋์ ์ง์ ํ ํ์ผ์ ๋์ด๋ ค ์ค๋ค.
Vim ํธ์ง๊ธฐ : ์คํ๊ณผ ์ข ๋ฃ (3/4)
16
ํ์ผ ์ ์ฅ ๋ช ๋ น์ด
ํ์ผ ์ ์ฅ๊ณผ ์ข ๋ฃ
๋ช ๋ น์ด ๋ด ์ฉ
:w(write) ๋ฒํผ์ ๋ด์ฉ์ ํ์ผ๋ก ์ ์ฅํ๋ ๋ช ๋ น
๋จ, Vim ํธ์ง๊ธฐ๋ ์ข ๋ฃํ์ง ์๋๋ค.
:w filename ๋ฌธ์์ ๋ด์ฉ์ ์ง์ ํ ํ์ผ์ ์ ์ฅํ๋ค.
:w! filename๋ฌธ์์ ๋ด์ฉ์ ์ง์ ํ ํ์ผ์ ์ ์ฅํ๋ค.
๋จ, ๊ธฐ์กด ํ์ผ์ด ์กด์ฌํ๋ฉด ์ญ์ ํ์ ์ ์ฅํ๋ค.
๋ช ๋ น์ด ๋ด ์ฉ
:q(quit) ๋ฒํผ์ ์์ ์ฌํญ์ด ์์ ์ Vim ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃ
(์์ ์ฌํญ์ ์ด๋ฏธ ์ ์ฅํ ์ํ์์๋ง ์ข ๋ฃ๊ฐ ๊ฐ๋ฅํ๋ค.)
:wq ๋ฒํผ์ ๋ด์ฉ์ ํ์ผ๋ก ์ ์ฅํ๊ณ , Vim ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ค.
:q! ๋ฒํผ์ ๋ด์ฉ์ ํ์ผ๋ก ์ ์ฅํ์ง ์๊ณ , Vim ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ค.
:x ๋ฒํผ์ ๋ง์ง๋ง์ผ๋ก ์์ ๋ ๋ด์ฉ์ ์ ์ฅํ๊ณ , Vim ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ค.
Vim ํธ์ง๊ธฐ : ์คํ๊ณผ ์ข ๋ฃ (4/4)
ํ์ผ ์ ์ฅ ๋ช ๋ น์ด
17
๋ช ๋ น์ด ๋ด ์ฉ
:begin,end w filename begin ํ๋ถํฐ end ํ๊น์ง filename ์ผ๋ก ์ ์ฅ
:1,. w filename 1ํ๋ถํฐ ํ์ฌ ํ๊น์ง filename ์ผ๋ก ์ ์ฅ
:1,. w >> filename 1ํ๋ถํฐ ํ์ฌ ํ๊น์ง filename ์ผ๋ก ์ถ๊ฐ
Vim ํธ์ง๊ธฐ : ์ ๋ ฅ ๋ฐ ์ญ์ (1/3)
์ ๋ ฅ ๋ช ๋ น์ด
18
์ ๋ ฅ ํค ๋ด ์ฉ
i ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ์ปค์ ์์น ์์ ์ฝ์
a ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ์ปค์ ์์น ๋ค์์ ์ฝ์
I ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ํ์ฌ ์ค์ ์์ ์ฝ์
A ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ํ์ฌ ์ค์ ๋์ ์ฝ์
o ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ํ์ฌ ์ค์ ์๋์ ์๋ก์ด ํ์ ์ด๊ณ ํ ์คํธ๋ฅผ ์ ๋ ฅ
O ์ ๋ ฅ๋ชจ๋๋ก ์ ํ, ํ์ฌ ์ค์ ์์ ์๋ก์ด ํ์ ์ด๊ณ ํ ์คํธ๋ฅผ ์ ๋ ฅ
Vim ํธ์ง๊ธฐ : ์ ๋ ฅ ๋ฐ ์ญ์ (2/3)
์ญ์ ๋ช ๋ น์ด
19
์ ๋ ฅ ํค ๋ด ์ฉ
x ํ์ฌ ์ปค์ ์์น์ ๋ฌธ์๋ฅผ ์ญ์ ํ๋ค.
X ํ์ฌ ์ปค์ ์์น์ ์ผ์ชฝ ๋ฌธ์๋ฅผ ์ญ์ ํ๋ค.
dd ํ์ฌ ์ค์ ์ ์ฒด๋ฅผ ์ญ์ ํ๋ค(์ปค์๋ฅผ ํฌํจํ๋ ๋ผ์ธ ์ ์ฒด ์ญ์ ).
D ํ์ฌ ์ปค์ ์์น๋ถํฐ ์ค์ ๋๊น์ง ์ญ์ ํ๋ค(์ค๋ฅธ์ชฝ ๋ผ์ธ).
dw ์ปค์๊ฐ ์๋ ํ ๋จ์ด๋ฅผ ์ญ์
db ์ปค์ ์์ ์๋ ํ ๋จ์ด๋ฅผ ์ญ์
dG ํ์ฌ ์ปค์ ์์น๋ถํฐ ํธ์ง ๋ฒํผ์ ๋๊น์ง ์ญ์ ํ๋ค(ํ์ผ์ ๋๊น์ง).
d1G ํ์ฌ ์ปค์ ์์น๋ถํฐ ํธ์ง ๋ฒํผ์ ๋งจ ์๊น์ง ์ญ์ ํ๋ค.
d) ๋ฌธ์ฅ์ ๋๋จธ์ง ์ญ์
d} ๋ฌธ๋จ์ ๋๋จธ์ง ์ญ์
dH ํ๋ฉด์ ์์๊น์ง ์ญ์
Vim ํธ์ง๊ธฐ : ์ ๋ ฅ ๋ฐ ์ญ์ (3/3)
๋ณต์ ๋ช ๋ น์ด
๋ง์ง๋ง์ผ๋ก ์ง์ด ๋ด์ฉ ๋ณต์ฌํ๊ธฐ
20
์ ๋ ฅ ํค ๋ด ์ฉ
p ๋ง์ง๋ง์ผ๋ก ์ง์์ง ๋ด์ฉ์ ์ปค์์ ๋ค์ ์ฝ์ ํ๋ค.
P ๋ง์ง๋ง์ผ๋ก ์ง์์ง ๋ด์ฉ์ ์์ ์ฝ์ ํ๋ค.
xp ๋ ๋ฌธ์๋ฅผ ๋ฐ๊พผ๋ค.
deep ๋ ๋จ์ด๋ฅผ ๋ฐ๊พผ๋ค.
ddp ๋ ์ค์ ๋ฐ๊พผ๋ค.
u ์์ ๋ด์ฉ์ ์ด์ ์ผ๋ก ๋๋๋ฆฐ๋ค(๋ง์ง๋ง ๋ณ๊ฒฝ๋ง ์ทจ์ํ๋ค).
Vim ํธ์ง๊ธฐ : ์ด๋ (1/4)
์ด๋ ๋ช ๋ น์ด
๊ธฐ๋ณธ์ ์ธ ์ปค์์ ์ด๋ : ํ์ดํ ํค(๋ฐฉํฅ ํค)๋ฅผ ์ฌ์ฉํ์ฌ ์ปค์ ์ด๋
21
์ ๋ ฅ ํค ๋ด ์ฉ
h ์ปค์๋ฅผ ํ ์นธ ์ผ์ชฝ์ผ๋ก ์ด๋
j ์ปค์๋ฅผ ํ ์ค ์๋๋ก ์ด๋
k ์ปค์๋ฅผ ํ ์ค ์๋ก ์ด๋
l ์ปค์๋ฅผ ํ ์นธ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
<Backspace> ์ปค์๋ฅผ ํ ์นธ ์ผ์ชฝ์ผ๋ก ์ด๋
<Space> ์ปค์๋ฅผ ํ ์นธ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
k
jh l
Vim ํธ์ง๊ธฐ : ์ด๋ (2/4)
์ด๋ ๋ช ๋ น์ด : ํน์ ํ ๋ฒํธ ๋ฐ ํจํด
ํน์ ํ ๋ฒํธ๋ก ์ด๋
ํจํด(์ ๊ท ํํ์)์ ์ด์ฉํ ์ด๋
22
์ ๋ ฅ ํค ๋ด ์ฉ
:n n ๋ฒ์งธ ํ์ผ๋ก ์ด๋
:$ ๋ง์ง๋ง ํ์ผ๋ก ์ด๋
:$= ํ์ฌ ๋ฌธ์์ ์ด ์ค(ํ) ์
:.= ํ์ฌ ์์น์ ํ ๋ฒํธ
์ ๋ ฅ ํค ๋ด ์ฉ
/patterns ํน์ patterns ๊ณผ ์ผ์นํ๋ ๊ณณ์ผ๋ก ์ด๋ํ๋ค.
?patterns ๊ฒ์์ ๋ฐฉํฅ์ ๋ค์ชฝ(backward)์ผ๋ก ์งํํ๋ค.
Vim ํธ์ง๊ธฐ : ์ด๋ (3/4)
์ด๋ ๋ช ๋ น์ด : ๋ผ์ธ ๋จ์
๋ผ์ธ ๋จ์ ์ปค์ ์ด๋
๋จ์ด ๋จ์ ์ปค์ ์ด๋
23
์ ๋ ฅ ํค ๋ด ์ฉ
- ์ปค์๋ฅผ ์ด์ ์ค์ ์ฒ์์ผ๋ก ์ด๋
+ ์ปค์๋ฅผ ๋ค์ ์ค์ ์ฒ์์ผ๋ก ์ด๋
Enter ์ปค์๋ฅผ ๋ค์ ์ค์ ์ฒ์์ผ๋ก ์ด๋
0 ์ปค์๋ฅผ ํ์ฌ ์ค์ ๋งจ ์์ผ๋ก ์ด๋
$ ์ปค์๋ฅผ ํ์ฌ ์ค์ ๋งจ ๋์ผ๋ก ์ด๋
^ ์ปค์๋ฅผ ํ์ฌ ์ค์ ์ฒซ ๊ธ์ (๊ณต๋ฐฑ์ด๋ ํญ์ด ์๋)๋ก ์ด๋
์ ๋ ฅ ํค ๋ด ์ฉ
e ๋๋ E ์ปค์๋ฅผ ๋ค์ ๋จ์ด์ ๋ ๊ธ์๋ก ์ด๋
w ๋๋ W ์ปค์๋ฅผ ๋ค์ ๋จ์ด์ ์ฒซ ๊ธ์๋ก ์ด๋
b ๋๋ B ์ปค์๋ฅผ ์ด์ ๋จ์ด์ ์ฒซ ๊ธ์๋ก ์ด๋
Vim ํธ์ง๊ธฐ : ์ด๋ (4/4)
์ด๋ ๋ช ๋ น์ด : ๋ฌธ๋จ ๋จ์
๋ฌธ๋จ ๋จ์ ์ปค์ ์ด๋
24
์ ๋ ฅ ํค ๋ด ์ฉ
( ๋ฌธ์ฅ์ ์์์ผ๋ก ์ด๋
) ๋ฌธ์ฅ ๋์ผ๋ก ์ด๋ํ์ฌ ๋ค์ ๋จ์ด์ ์์ ์ฒซ ์นธ์ผ๋ก ์ปค์ ์ด๋
{ ๋ฌธ๋จ์ ์์์ผ๋ก ์ด๋
} ๋ฌธ๋จ ๋์ผ๋ก ์ด๋
G ๋ฌธ์์ ๋ง์ง๋ง ์ค๋ก ์ด๋
nG n๋ฒ์งธ ์ค๋ก ์ด๋
M ํ๋ฉด ์ค๊ฐ ์ค์ ์ปค์ ์ด๋
Vim ํธ์ง๊ธฐ : ํธ์ง (1/4)
๋ฌธ์ ๋จ์ ์นํ ๋ช ๋ น์ด
โข (์ฃผ์) r ๋ช ๋ น ๋์ R ๋ช ๋ น์ ์ฌ์ฉํ ๊ฒฝ์ฐ
โ ESC ํค๋ฅผ ๋๋ฌ ๋ช ๋ น ๋ชจ๋๋ก ์ ํํ ํ์ u ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ด์ฉ ์ทจ์
25
์ ๋ ฅ ํค ๋ด ์ฉ
R์ปค์๊ฐ ์๋ ์์น๋ถํฐ ๋ฎ์ด์ฐ๊ธฐ ์์ํ๋ค.
๋จ, ESC ํค๋ฅผ ๋๋ฅผ ๋๊น์ง ๋ฎ์ด์ด๋ค.
r ์ปค์๊ฐ ์์นํ ๊ณณ์ ํ ๊ธ์๋ง ์นํํ๋ค(๋ฎ์ด ์ด๋ค).
s ์ปค์๊ฐ ์๋ ๋ฌธ์ ์ญ์ ํ ์ ๋ ฅ๋ชจ๋๋ก ์ ํ
S ์ปค์๊ฐ ์๋ ์ค์ ์ญ์ ํ ํ ์ ๋ ฅ๋ชจ๋๋ก ์ ํ
cb ์ปค์๊ฐ ์๋ ์ ๋ฌธ์ ์ญ์ ํ ์ ๋ ฅ๋ชจ๋
Vim ํธ์ง๊ธฐ : ํธ์ง (2/4)
๋ฌธ์์ด ๋จ์ ์นํ ๋ช ๋ น์ด
๋ฒํผ์ x ํ๊ณผ y ํ ์ฌ์ด์์ ํจํด์ ์ฐพ์ ์นํ ๋ฌธ์์ด๋ก ๋ฐ๊พผ๋ค.โข ํ ๋ฒํธ ์ง์ ๋์ % ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ์ผ์ ์ง์นญํ ์ ์๋ค.
โ $๋ ํ์ผ์ ๋ง์ง๋ง ํ์ ๋ปํ๋ค.
โ x, y๋ฅผ ์ ์ง ์์ผ๋ฉด ํ์ฌ ํ์ ์ ์ฉํ๋ค.
ํ๋๊ทธโข g : ์ผ์นํ๋ ํจํด ๋ชจ๋๋ฅผ ์นํํ๋ผ๋ ์ง์ ์ฌํญ
โข c : ์นํํ ๋๋ง๋ค ๋ฌผ์ด ๋ณด๋ผ๋ ์ง์ ์ฌํญ
โข ์) 1,10s/Doo-Ok/Clickseoโ 1ํ๊ณผ 10ํ(10ํ๋ ํฌํจ) ์ฌ์ด์์ Doo-Ok ์ ์ฐพ์ Clickseo ๋ก ๋ฐ๊พผ๋ค.
26
:[ x, y ]s/ํจํด/์นํ๋ฌธ์์ด/ํ๋๊ทธ
Vim ํธ์ง๊ธฐ : ํธ์ง (3/4)
๋ค๋ฅธ ํ์ผ ํฌํจ์ํค๊ธฐ
์ฌ๋ฌ ํ์ผ ํธ์ง
์ฌ๋ฌ ํ์ผ์ ๋์์ ๊ฐ๋ฐฉํ ํ์ ์์ ํ๋ค.โข ์ฒ์ Vim ํธ์ง๊ธฐ ์คํํ ๋ ํ์ผ๋ช ์ ํ๋ ์ด์ ์ง์ ํ ํ์, ex ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์
ํ์ผ ์ฌ์ด๋ฅผ ์ด๋ํ๋ฉด์ ์์ ํ ์ ์๋ค.
โข :w ๋ก file1 ์ ์ ์ฅํ๊ณ :n ์ผ๋ก ๋ค์ ํ์ผ(file2)์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
๋ค๋ฅธ ํ์ผ ํธ์ง
๋ช ๋ น์ด ๋ด ์ฉ
:r filename ์ง์ ํ ํ์ผ์ ๋ด์ฉ์ ํ์ฌ ์ปค์๊ฐ ์๋ ์ค ๋ค์์ ๋ถ๋ฌ์จ๋ค.
vi filename Vim ํธ์ง๊ธฐ๋ฅผ ์์ํ ๋๋ถํฐ ํน์ ํ์ผ์ ๋ถ๋ฌ์์ ์์ํ๋ค.
$ vi file1 file2
๋ช ๋ น์ด ๋ด ์ฉ
:e filename ํ์ฌ ํ์ผ์ ํธ์ง์ ๋ง์น๊ณ , ๋ค๋ฅธ ํ์ผ์ ํธ์งํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
Vim ํธ์ง๊ธฐ : ํธ์ง (4/4)
ํ ๋ฒํธ ๋ถ์ด๊ธฐ
์ ๋ช ๋ น์ด ์คํ
28
์ ๋ ฅ ํค ๋ด ์ฉ
:set number
ํ ๋ฒํธ ๋ถ์ด๊ธฐ:set nu
:se nu
:set nonumber
ํ ๋ฒํธ ์์ ๊ธฐ:set nonu
:se nonu
์ ๋ ฅ ํค ๋ด ์ฉ
:! Vim ๋ด๋ถ์์ ์ฃผ์ด์ง ๋ช ๋ น์ ์คํํ ์ ์๋ค.
:r! ๋ช ๋ น์ด ํ์ค ์ถ๋ ฅ์ ๋ณด๋ธ ๊ฒฐ๊ณผ ๋ด์ฉ์ ๋ฒํผ์ ํฌํจ์ํจ๋ค.
29[ ์ถ์ฒ : โVi/Vim ๋จ์ถํค ๋ชจ์โ, KLDP.org ]
ํ ์คํธ ์กฐ์๊ณผ ํํฐ
ํธ์ง๊ธฐ
ํ ์คํธ ์กฐ์๊ณผ ํํฐ
ํ์ผ ๋น๊ต
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ
๋ฌธ์์ด ํจํด ๋ฐ ํ์ผ ๊ฒ์
30
ํ ์คํธ ์กฐ์ ๋ฐ ํํฐ (1/2)
ํ์ผ์ ์ข ๋ฅ ํ์ธ : file
ํน์ ํ์ผ์ ์ข ๋ฅ๋ฅผ ์๊ณ ์ถ์ ๋ ์ฌ์ฉ
31
์ผ๋ฐ ํ์ file [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์ -z ์์ถ ํ์ผ์ ํํ๋ง ๊ฒ์ฌํ๋ค.
ํ ์คํธ ์กฐ์ ๋ฐ ํํฐ (2/2)
๋ฌธ์ ๋ฐ ๋ฌธ์์ด ๊ฐ์ ๊ตฌํ๊ธฐ : wc
(Word Counter) ํ์ผ์ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๋ช ๋ น์ดโข ํ์ผ ๋ด์ ๋ผ์ธ ์, ๋จ์ด ์, ๋ฌธ์ ์๋ฅผ ์ธ์ด ํ์ํด ์ฃผ๋ ๋ช ๋ น์ด
ํ์ดํ๋ผ์ธ๊ณผ ์กฐํฉํ์ฌ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ํ์ธโข ํ์ฌ ๋๋ ํฐ๋ฆฌ ๋ด์ ํ์ผ ๊ฐ์
โข ํ์ฌ ์์คํ ์ ์ฌ์ฉ์ ์
32
์ผ๋ฐ ํ์ wc [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-l ๋ผ์ธ๋ค์ ๊ฐ์๋ง ์ถ๋ ฅ
-w ๋จ์ด๋ค์ ๊ฐ์๋ง ์ถ๋ ฅ
-c ๋ฌธ์๋ค์ ๊ฐ์๋ง ์ถ๋ ฅ
[clickseo@localhost clickseo]$ ls | wc -l5[clickseo@localhost clickseo]$ finger | wc -l2
33
ํ ์คํธ ์กฐ์ ๋ฐ ํํฐ
ํ์ผ ๋น๊ต
cmp, comm, diff
ํ์ผ ๋น๊ต (1/3)
ํ์ผ ๋น๊ต : cmp
(Compare) ์ ์ฌํ ๋ ํ์ผ์ ๋น๊ตโข ์ฒ์์ผ๋ก ํ๋ฆฐ ๋ฌธ์๊ฐ ๋ํ๋๋ ์์น๋ง์ ์ถ๋ ฅํ๋ค(bytes ๋จ์๋ก ๋น๊ต).
34
์ผ๋ฐ ํ์ cmp [์ต์ ] ํ์ผ๋ช 1 ํ์ผ๋ช 2
์ฃผ์ ์ต์ -l ํ์ผ ๋ด์ ๋ชจ๋ ์ฐจ์ด์ ์ ์๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
ํ์ผ ๋น๊ต (2/3)
ํ์ผ ๋น๊ต : comm
(Common) ํ ๋จ์ ํ์ผ ๋น๊ต ๋ช ๋ น์ดโข ๋ ํ์ผ์ ๋์ผํ ๋ด์ฉ์ ์ฐพ๋๋ค(์ฆ, ๋ ํ์ผ์ ๊ณตํต์ผ๋ก ์๋ ๋ผ์ธ ์ถ๋ ฅ).
โ ์ผ์ชฝ ์นผ๋ผ : ์ฒซ ๋ฒ์งธ ํ์ผ์๋ง ์๋ ๋ด์ฉ
โ ์ค๊ฐ ์นผ๋ผ : ๋ ๋ฒ์งธ ํ์ผ์๋ง ์๋ ๋ด์ฉ
โ ์ค๋ฅธ์ชฝ ์นผ๋ผ : ๋ ํ์ผ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ํ์ด ์ถ๋ ฅ
35
์ผ๋ฐ ํ์ comm [์ต์ ] ํ์ผ๋ช 1 ํ์ผ๋ช 2
ํ์ผ ๋น๊ต (3/3)
ํ์ผ ๋น๊ต : diff
Different File Comparator
ํ์ผ ์ฌ์ด์ ๋ค๋ฅธ ๋ด์ฉ์ ์ฐพ์๋ด๋ ๋ช ๋ น์ดโข ํ๋ณธ์ด ๋๋ ๋ฌธ์๋ ๋ ๋ฒ์งธ ํ์ผ
โข a (append) : (ํ์ผ2)์์ (ํ์ผ1)๋ก ์ฒจ๊ฐ๋์ด์ผ ํ ๊ฒ์ ํ์
โข c (change) : ๋ ํ์ผ์ ๋ด์ฉ์ด ๋ฐ๋์ด์ผ ํ๋ ๋ด์ฉ์ ํ์
โข d (delete) : (ํ์ผ1)์์ ์ ๊ฑฐ๋์ด์ผ ํ๋ ๋ด์ฉ์ ํ์
36
์ผ๋ฐ ํ์ diff [์ต์ ] ํ์ผ๋ช 1 ํ์ผ๋ช 2
37
ํ ์คํธ ์กฐ์ ๋ฐ ํํฐ
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ
cut, paste
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ (1/5)
์ด์ ์ถ์ถ : cut
ํน์ ํ๋๋ฅผ ์ถ์ถํด์ ๊ฐ๊ณตํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ช ๋ น์ดโข ๋ฐ์ดํฐ์ ํน์ ์ด์ ์ ํํ๊ฑฐ๋, ํ์ผ ๋ด์ ํน์ ํ๋๋ง์ ํ์ํ ๋ ์ฌ์ฉํ๋ค.
38
์ผ๋ฐ ํ์ cut [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-c ๋ชฉ๋ก
๋ชฉ๋ก์ ์ง์ ํ ์ด์ ์ถ๋ ฅ
-c1,2 : 1๋ฒ, 2๋ฒ ์ด์ ์ถ๋ ฅ
-c1-10 : 1๋ฒ์์ 10๋ฒ ์ด ๊น์ง๋ฅผ ์ถ๋ ฅ
-f ๋ชฉ๋ก๋ชฉ๋ก์ ์ง์ ํ ํ๋๋ฅผ ์ถ๋ ฅ
-f1,3 : 1๋ฒ ํ๋์ 3๋ฒ ํ๋๋ฅผ ์ถ๋ ฅ
-d ํ๋ ๊ตฌ๋ถ์ ํ๋๋ฅผ ๊ตฌ๋ถํ๋ ๋ฌธ์๋ฅผ ์ง์ ํ๋ค(๊ธฐ๋ณธ๊ฐ : ํญ ๋ฌธ์).
-s ํ๋ ๊ตฌ๋ถ์๋ฅผ ํฌํจํ ์ ์๋ค๋ฉด ๊ทธ ํ์ ํ์ง ์๋๋ค.
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ (2/5)
์ด์ ์ถ์ถ : cut ์ต์
39
1 ~ 3 ์ด ๋ง ํ์
-f ์ต์ ์ฌ์ฉ ์โฆํ์ผ ์์ ๊ฐ ํ๋๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์
๋ฐ๋์ ํญ์ผ๋ก ํ๋๋ค์ด ๊ตฌ๋ถ๋์ด ์์ด์ผ ํ๋ค.
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ (3/5)
์ด์ ์ถ์ถ : cut ์ต์
40
-d ์ต์ : ํ๋ ๊ตฌ๋ถ์ ์ง์
/etc/passw ํ์ผ ์ถ์ถ ์ ํ๋ ๊ตฌ๋ถ์๋ก โ:โ ๋ฅผ ์ง์
[clickseo@localhost clickseo]$ cat /etc/passwd( โฆ์๋ตโฆ )
clickseo:x:1000:1000:Clickseo,,,:/home/clickseo:/bin/bash
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ (4/5)
์ด์ ๊ฒฐํฉ : paste
์์ง์ผ๋ก ํ์ผ์ ๊ฒฐํฉํ์ฌ ๋ณด์ฌ์ค๋ค.โข ๊ฐ๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ผ์ ๊ฒฐํฉํ์ฌ ํ๋๋ก ํตํฉ๋ ํ์ผ์ ๋ง๋๋๋ฐ
์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
41
์ผ๋ฐ ํ์ paste [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์ -d ๊ตฌ๋ถ์ ํ์ผ์ ๊ฒฐํฉํ ๋ ์ค๊ฐ์ ํน์ ํ ๊ตฌ๋ถ์๋ฅผ ๋ฃ๊ณ ์ ํ ๋ ์ฌ์ฉ
-s ๋ชฉ๋ก ์ฐ์์ ์ธ ๋ผ์ธ์ 1๊ฐ ๋ผ์ธ์ผ๋ก ๊ฒฐํฉํ๋ค.
์ด์ ์ถ์ถ ๋ฐ ๊ฒฐํฉ (5/5)
์ด์ ๊ฒฐํฉ : paste ์ต์
42
-d ์ต์ : ํ์ผ ๊ฒฐํฉ ์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ์ถ๊ฐํ์ฌ ํ์ผ ๊ตฌ๋ถ
-s ์ต์ : ์ฐ์์ ์ธ ๋ผ์ธ์ 1๊ฐ์ ๋ผ์ธ์ผ๋ก ๊ฒฐํฉ
43
ํ ์คํธ ์กฐ์ ๋ฐ ํํฐ
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ
sort, split
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ (1/5)
ํ์ผ ์ ๋ ฌ : sort
์ฃผ์ด์ง ํ๋๋ ๋ฌธ์์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ผ์ ํ ๋จ์๋ก ์ ๋ ฌโข ์ ๋ ฌํญ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
โ ์ํ๋ฒณ ์์๋ ์๋ฌธ์๋ณด๋ค ๋๋ฌธ์๊ฐ ์ฐ์
โ ์ซ์๋ค์ ๋ชจ๋ ๋ฌธ์๋ณด๋ค ์ฐ์
44
์ผ๋ฐ ํ์ sort [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-r (Reverse) ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
-f (ignore-case) ๋์๋ฌธ์ ๊ตฌ๋ถํ์ง ์๊ณ ์ ๋ ฌํ๋ค.
-d (Dictionary-order) ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌํ๋ค.
-n (Numeric-sort) ์ซ์ ์์ผ๋ก ์ ๋ ฌํ๋ค.
-m (Merge) ์ ๋ ฌ๋ ํ์ผ๋ค์ ๋ณํฉํ๋ค.
-o file (Output) ํ์ค ์ถ๋ ฅ ๋์ ์ FILE ์ ์ถ๋ ฅํ๋ค.
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ (2/5)
ํ์ผ ์ ๋ ฌ : sort ์ต์
45
-r ์ต์ : ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ (3/5)
ํ์ผ ์ ๋ ฌ : sort ์ต์
46
-m ์ต์ : ์ ๋ ฌ๋ ํ์ผ์ ํฉ๋ณ
-u ์ต์ : ์ ๋ ฌ๋ ํ์ผ์์ ์ค๋ณต๋ ๋ผ์ธ์ ์ ๊ฑฐ
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ (4/5)
ํ์ผ ๋ถํ : split
ํ๋์ ํ์ผ์ ์ฌ๋ฌ ๊ฐ์ ์์ ํ์ผ๋ก ๋ถํ โข ๋ถํ ๋ ๊ฐ์๋งํผ์ ์๋ก์ด ํ์ผ์ ์์ฑํ๋ค.
โ ํ์ผ์ ๋ถํ ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก 1000 ๋ผ์ธ ๋จ์๋ก ๋ถํ ๋๋ค.
โข ํ์ผ๋ช ์ โxโ ๋ฌธ์์ ๊ณ์ํด์ ๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ง๋ค.
โ ์: ์ฒซ ๋ฒ์งธ ํ์ผ์ โxaaโ, ๋ ๋ฒ์งธ ํ์ผ์ โxabโ๋ก ๋ง๋ค์ด์ง๋ค.
47
์ผ๋ฐ ํ์ split [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-b size (Bytes) ํ์ผ์ bytes ๋จ์๋ก ๋ถ๋ฆฌ
-l line (Lines) ํ์ผ์ ์ฃผ์ด์ง lines ์ ๋จ์๋ก ๋ถ๋ฆฌ
-c size ํ์ผ์ ํ ์ค์ ์ต๋ size ๋ฐ์ดํธ๋งํผ ์ฉ ๋ถ๋ฆฌ
ํ์ผ ์ ๋ ฌ๊ณผ ๋ถํ (5/5)
ํ์ผ ๋ถํ : split ์ต์
48
5์ค ๋จ์๋ก ํ์ผ์ ๋ถํ
xaa, xab, xac, xad 4๊ฐ์ ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์๋ก์ด ํ์ผ ์์ฑ
์กฐ๊ฐ๋ ํ์ผ์ ํ๋์ ํฐ ํ์ผ๋ก ๋ณํฉ
$ cat x?? > new
๋ฌธ์์ด ํจํด ๋ฐ ํ์ผ ๊ฒ์
ํธ์ง๊ธฐ
ํ ์คํธ ์กฐ์๊ณผ ํํฐ
๋ฌธ์์ด ํจํด ๋ฐ ํ์ผ ๊ฒ์
๋ฌธ์์ด ํจํด ๊ฒ์ : grep
ํ์ผ ๊ฒ์ : find
49
50
๋ฌธ์์ด ํจํด ๊ฒ์
grep
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (1/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : grep
๋ฌธ์์ด ๋ฐ ๋ฌธ์์ด ํจํด ๊ฒ์, ์กฐ๊ฑด์ ๋ง๋ ๋ฌธ์์ด์ ์ฐพ์์ ์ถ๋ ฅ
51
์ผ๋ฐ ํ์ grep [์ต์ ] [๊ฒฝ๋ก, ํ์ผ๋ช ]
์ฃผ์ ์ต์
-c ํ์ผ ์ด๋ฆ ๋ค์์ ์ซ์๋ฅผ ํจ๊ป ์ถ๋ ฅํ๋ค(ํจํด์ด ๋ค์ด ์๋ ๋ผ์ธ์ ๊ฐ์).
-h ํ์ผ์ ์ด๋ฆ์ ์ถ๋ ฅํ์ง ์๋๋ค.
-i ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค.
-l ํ์ผ ์ด๋ฆ๋ง ์ถ๋ ฅํ๊ณ ํจํด์ด ์๋ ๋ผ์ธ์ ์ถ๋ ฅํ์ง ์๋๋ค.
-n ๊ฐ ๋ผ์ธ ์์ ๋ผ์ธ ๋ฒํธ๋ฅผ ๋ถ์ธ๋ค.
-w ํจํด์ด ์ํ๋ ๋จ์ด๋ก ๋ ๋ฆฝ๋์ด ์์ ๊ฒฝ์ฐ๋ง ์ฐพ๋๋ค.
-v ํจํด์ด ์๋(inverse) ๋ผ์ธ๋ง ์ถ๋ ฅํ๋ค.
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (2/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ํํ์
ํํ์(expression)
52
๊ฐ๋จํ ๋ฌธ๋ฒ
^ ๋ผ์ธ์ ์ฒซ ์์ ( ^a : a๋ก ์์ํ๋ ๋ผ์ธ)
$ ๋ผ์ธ์ ๋ ( a$ : a๋ก ๋๋๋ ๋ผ์ธ )
. ํ ๊ธ์ ( aโฆb : a์ b ์ฌ์ด์ ์์์ 3๊ธ์๋ฅผ ํฌํจํ๋ ํจํด )
*์ด์ ์ ๊ธ์๋ ์ ๊ท์์ด 0ํ ์ด์ ๋ฐ๋ณต
abc* : ab, abc, abcc, abccc ๋ฑ
[ ]ํ ๊ธ์์ ๋์ฒด ๊ธ์์ ๋ชฉ๋ก
[abc] : abc ์ค ํ ๊ธ์๋ผ๋ ๋ฐ๋์ ์๋ ๋จ์ด
[^] ์: [^abc] : abc๋ ๋ฐ๋์ ์๋ ๋ผ์ธ
?๊ธฐํธ ์ด์ ์ ๊ธ์๊ฐ ์๊ฑฐ๋ ์๊ฑฐ๋...
abc? -- ๋ฌธ์ c ๊ฐ ์๊ฑฐ๋ ์๊ฑฐ๋(์ฆ, ab ํน์ abc)ํ๋ ํจํด
+ ์ด์ ์ ๊ธ์๋ ์ ๊ท์์ด 1ํ ์ด์ ๋ฐ๋ณต
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (3/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
53
$ grep test s* // s ๋ก ์์ํ๋ ๋ชจ๋ ํ์ผ์์ test ๋ฅผ ํฌํจํ๋ ๋ชจ๋ ํ์ ์ฐพ์
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (4/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
54
$ grep ^t sample // sample ํ์ผ์์ ๋ฌธ์ t ๋ก ์์ํ๋ ๋ชจ๋ ํ์ ์ถ๋ ฅ
$ grep t$ sample // sample ํ์ผ์์ ๋ฌธ์ t ๋ก ๋๋๋ ๋ชจ๋ ํ์ ์ถ๋ ฅ
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (5/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
55
$ grep [^0-9] sample // ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ํ๋๋ผ๋ ํฌํจํ๋ ๋ชจ๋ ํ์ ์ถ๋ ฅ
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (6/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
56
// ์ง์ ๋ ๋ฌธ์ a ๊ฐ 0 ํ ์ด์ ๋ฐ๋ณต๋๋ ํจํด ๊ฒ์
$ grep a* sample$ grep aa* sample$ grep aaa* sample
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (7/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
57
// -n ์ต์ : ํ ๋ฒํธ๋ฅผ ํจ๊ป ์ถ๋ ฅ
$ grep -n test sample
// -i ์ต์ : ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์๋๋ค.
$ grep -i test sample
// -l ์ต์ : ํ ๋ฒํธ ๋์ ๋จ์ง ํ์ผ์ด๋ฆ๋ง ์ถ๋ ฅ
$ grep -l test sample
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (8/9)
๋ฌธ์์ด ํจํด ๊ฒ์ : ์ฌ์ฉ ์
58
// -v ์ต์ : ๋ฌธ์์ด โsample testโ์ด ํฌํจ๋์ง ์์ ๋ชจ๋ ํ์ ์ถ๋ ฅ
$ grep -v sample sample$ grep -v โsample testโ sample
๋ฌธ์์ด ํจํด ๊ฒ์ : grep (9/9)
์ ๊ท ํํ์๊ณผ grep์ ์ฌ์ฉ ์์
59
// -w ์ต์ : ํจํด์ด ๋ค๋ฅธ ๋จ์ด์ ์ผ๋ถ๊ฐ ์๋ ํ๋์ ๋จ์ด๊ฐ ๋๋ ๊ฒฝ์ฐ๋ง ์ฐพ์.
// abc๋ aaa ๋ฑ์ ๋จ์ด๊ฐ ์๋๋ผ, a๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋ ํ๋ง ์ถ๋ ฅ
$ grep -w a sample
60
ํ์ผ ๊ฒ์
find
ํ์ผ ๊ฒ์ : find (1/5)
ํ์ผ ๊ฒ์
find ๋ช ๋ น์ดโข ์์คํ ๋ด์ ์กด์ฌํ๋ ํ์ผ์ ์ฐพ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด
61
์ผ๋ฐ ํ์ find [๊ฒฝ๋ก] [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-name filename ์ฐพ๊ณ ์ ํ๋ ํ์ผ์ ์ด๋ฆ ์ง์ (์ต์ ์๋ต ๊ฐ๋ฅ)
-perm mode ์ง์ ๋ ๊ถํ๊ณผ ์ผ์นํ๋ ํ์ผ์ ์ฐพ๋๋ค.
-type filetypeํ์ผ์ข ๋ฅ, ์ฌ๋ณผ๋ฆญ ๋งํฌ, ๋๋ ํฐ๋ฆฌ ๋ฑ์ ๋ฐ๋ผ ๊ฒ์
f : ์ผ๋ฐ ํ์ผ, d : ๋๋ ํฐ๋ฆฌ, l : ์ฌ๋ณผ๋ฆญ ๋งํฌ,b : ๋ธ๋ก ํ์ผ, p : ํ์ดํ ๋ฑ์ ๊ธฐํธ๋ฅผ ์ฌ์ฉ
-size num์ง์ ๋ ํฌ๊ธฐ์ ์ผ์นํ๋ ํ์ผ์ ์ฐพ๋๋ค.
ํ์ผ ํฌ๊ธฐ๋ ๋ธ๋ก๋จ์๋ก ์ง์ (1block == 512KB)๋ธ๋ก ์ซ์ ๋ค์ k ๋ฅผ ๋ถ์ด๋ฉด 1KB ํฌ๊ธฐ์ ๋ธ๋ก ์ซ์๋ก ๊ฐ์ฃผ
-links num num ๊ฐ์ ํ๋ ๋งํฌ๋ฅผ ๊ฐ๋ ํ์ผ์ ์ฐพ๋๋ค.
-user name ํ์ผ ์ฌ์ฉ์์ ์ด๋ฆ์ ๋ฐ๋ผ์ ๊ฒ์
-group gname ๊ทธ๋ฃน ์ด๋ฆ์ ์ํ ํ์ผ์ ์ฐพ๋๋ค.
ํ์ผ ๊ฒ์ : find (2/5)
ํ์ผ ๊ฒ์ : find
์ฃผ์ ์ต์ : ์๊ฐ
62
์ผ๋ฐ ํ์ find [๊ฒฝ๋ก] [์ต์ ] ํ์ผ๋ช
์ฃผ์ ์ต์
-mtime num ํ์ผ์ ๋ฐ์ดํฐ๊ฐ ์ต๊ทผ num * 24์๊ฐ(์ผ)์ด ์ง๋ ํ์ผ์ ์ฐพ๋๋ค.
-mmin num ํ์ผ์ ๋ฐ์ดํฐ๊ฐ ์ต๊ทผ num ๋ถ์ ์ ์์ ๋ ํ์ผ์ ์ฐพ๋๋ค.
-atime num num * 24์๊ฐ(์ผ) ์ ์ ๋ง์ง๋ง ์ ๊ทผํ ํ์ผ์ ์ฐพ๋๋ค.
-amin num num ๋ถ ์ ์ ๋ง์ง๋ง ์ ๊ทผํ ํ์ผ์ ์ฐพ๋๋ค.
-ctime num num *24 ๋ถ ์ ์ ๋ง์ง๋ง ๋ณ๊ฒฝํ ํ์ผ์ ์ฐพ๋๋ค.
-cmin num num๋ถ ์ ์ ๋ง์ง๋ง ๋ณ๊ฒฝํ ํ์ผ์ ์ฐพ๋๋ค.
-print ์ฐพ์ ํ์ผ์ ํ๋ฉด์ ์ถ๋ ฅ
ํ์ผ ๊ฒ์ : find (3/5)
ํ์ผ ๊ฒ์ : find ํ์ฉ ์
ํํ์์ ํ์ฉํ ๊ฒ์
63
$ find ./ -name sample$ find ./ -name [^a-z]*.txt
ํ์ผ ๊ฒ์ : find (4/5)
ํ์ผ ๊ฒ์ : find ํ์ฉ ์
๋ง์ง๋ง ์์ ํ ์ผ์๋ก ๊ฒ์
64
// (+) ๊ธฐํธ๋ โ~๋ณด๋ค ์ด์โ์ ์๋ฏธํ๊ณ (-) ๊ธฐํธ๋ โ~๋ณด๋ค ์ดํโ๋ฅผ ์๋ฏธํ๋ค.
// 5์ผ ์ด์ ์ ์ ๋ง์ง๋ง์ผ๋ก ์์ ํ ํ์ผ ์ฐพ๊ธฐ
$ find ./ -mtime +5 -print
// ์ ์ด๋ 20์ผ ์ ์ ๋ง์ง๋ง์ผ๋ก ์์ ํ ํ์ผ(์ผ๋ฐ ํ์ผ: -type f) ์ฐพ๊ธฐ
$ find ./ -type f -atime -20 -print
ํ์ผ ๊ฒ์ : find (5/5)
ํ์ผ ๊ฒ์ : find ํ์ฉ ์
์ ๊ทผ ๊ถํ์ ์ด์ฉํ ๊ฒ์
65
// ์ ๊ทผ ๊ถํ์ด 521(r-x-w---x)์ธ ํ์ผ ์ฐพ๊ธฐ# find / -perm 521 -print
// ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ถํ์ด ์ ๋ถ ํ๊ฐ๋ ๋๋ ํฐ๋ฆฌ(๋๋ ํฐ๋ฆฌ ํ์ผ: -type d) ์ฐพ๊ธฐ# find / -type d -perm 777 -print
// root ๊ณ์ ์ SetUID ์ค์ ํ์ผ ์ฐพ๊ธฐ# find / -user root -perm 4000 -print
// ๊ทธ๋ฃน members์ ๋ํ SetGID ํ์ผ ์ฐพ๊ธฐ# find / -group members -perm 2000 -print
// -o ์ต์ ์ ์ด์ฉํ์ฌ OR ๊ฒฐํฉ๋๊ณ ๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ฃน์ ์ง์# find / -type f \( -perm 2000 -o -perm 4000 \) -print
์ฐธ๊ณ ๋ฌธํ
66
[1] ์ด์ข ์, โIT CookBook, ์ฐ๋ถํฌ ๋ฆฌ๋ ์ค(๊ฐ์ ํ) : ์์คํ & ๋คํธ์ํฌโ, ํ๋น์์นด๋ฐ๋ฏธ, 2018.
[2] ๋ฐฑ์ฐฝ์ฐ, โ์ ๋์ค ๋ฆฌ๋ ์ค ํ๋ก๊ทธ๋๋ฐ ํ์ ์ ํธ๋ฆฌํฐโ, ํ๋น๋ฏธ๋์ด. 2010.
์ด ๊ฐ์์๋ฃ๋ ์ ์๊ถ๋ฒ์ ๋ฐ๋ผ ๋ณดํธ๋ฐ๋ ์ ์๋ฌผ์ด๋ฏ๋ก ๋ฌด๋จ ์ ์ ์ ๋ฌด๋จ ๋ณต์ ๋ฅผ ๊ธ์งํ๋ฉฐ,
๋ด์ฉ์ ์ ๋ถ ๋๋ ์ผ๋ถ๋ฅผ ์ด์ฉํ๋ ค๋ฉด ๋ฐ๋์ ์ ์๊ถ์์ ์๋ฉด ๋์๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค.
Copyright ยฉ Clickseo.com. All rights reserved.