본문 바로가기

Linux(OS)

리눅스 파일 관리

[리눅스 파일 관리]
리눅스에는 각각의 파일과 디렉토리마다 소유권과 허가권이 있다.
이러한 권한을 관리하는 명령어와 파일을 관리하는 명령어들에 대해 알아보자.
01. touch
파일의 시간 정보를 변경하는 명령어이지만, 크기가 0 인 파일을 생성하는 용도로 자주 사용된다.
<사용방법>
touch [옵션] 파일이름
<옵션>
-a : 최근 파일 사용 시간만 변경한다.
-c : 파일이 이미 존재하지 않는다면, 파일을 생성하지 않는다.
-d 시간 : 현재 시간 대신 지정한 시간을 사용한다.
-m : 최근 파일 변경 시간만 바꾼다.
-r 파일 : 현재시간 대신 지정한 파일의 시간으로 변경한다.
-t MMDDhhmm[[CC]YY][.ss] : 현재 시간 대신 지정한 시간으로 변경한다.
touch 명령을 이용해 파일의 시간 정보를 바꾸는 일은 거의 쓰이지 않고
크기가 0 인 파일을 생성하는 용도로 많이 쓰인다.
touch 를 이용하여 크기가 0 인 myfile1 을 생성해 보자.
[root@localhost ~]# cd ~
[root@localhost ~]# touch myfile1
[root@localhost ~]# ls -l
합계 76
drwxr-xr-x 2 root root 4096 11월 3 14:38 Desktop
-rw------- 1 root root 1593 11월 3 15:46 anaconda-ks.cfg
-rw-r--r-- 1 root root 42119 11월 3 15:45 install.log
-rw-r--r-- 1 root root 4701 11월 3 15:44 install.log.syslog
-rw-r--r-- 1 root root 0 11월 12 11:12 myfile1
<TIP> 실무에서는 touch 명령어를 단지 파일 만들때 외에 HDD의 이상 여부를 체크할 때도 사용된다.
02. 퍼미션
위에서 생성한 myfile1 이라는 파일과 Desktop 디렉토리를 한번 살펴 보자.
drwxr-xr-x 2 root root 4096 11월 3 14:38 Desktop
-rw-r--r-- 1 root root 0 11월 12 11:12 myfile1
위의 목록에서 어떤 것이 디렉토리이고 어떤 것이 파일인지는 맨 앞부분을 보면 구분이 가능하다.
Desktop 의 경우 drwxr-xr-x 와 같이 d 로 시작한다.
d 는 디렉토리라는 의미이다.
반면에 myfile1 은 -rw-r--r—와 같이 – 로 시작한다. – 는 파일이라는 의미이다.
d : 디렉토리
- : 파일
l : 링크
맨 처음 한글자를 제외한 뒤의 rwxr-xr-x 은 3개의 문자씩 나눠서 각각
파일 소유자에 대한 권한 rwx ,
r-x 는 그룹에 대한 권한 ,
r-x 는 그 외의 사용자에 대한 권한을 나타낸다.
r : 읽기 권한(read)
w : 쓰기 권한(write)
x : 실행 권한(excute)
의 의미를 지닌다.
drwxr-xr-x 2 root root 4096 11월 3 14:38 Desktop
위 Desktop은 디렉토리이고,
소유자는 읽기,쓰기,실행이 허용되고
같은 그룹 사용자는 읽기와 실행만 허용되고
그 외의 모든 사용자는 읽기와 실행이 허용된다.
아래의 myfile1은 파일이고, 소유자는 읽기와 쓰기가 가능하고, 그룹과 그 외의 사용자는 읽기만 가능하다.
퍼미션은 숫자로도 표현할 수 있다.
r
4 = (2*2) / 2의 2승
w
2 = (2*1) / 2의 1승
x
1 = (2*0) / 2의 0승
-
- = 0 / 0
정리해보면 rwx / r-x / r-x 는 4+2+1 / 4+0+1 / 4+0+1 이므로 755 로 표현된다.
이런 표기 방식은 상당히 많이 쓰이므로 알아 두는 것이 좋다.
03. cp
파일을 복사하는 명령이다.
<사용방법>
cp [옵션] 원본 사본
-a : 원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사한다.
-b : 복사할 대상이 이미 있을 경우 기존 파일을 백업하고 복사한다.
-d : 만약 복사할 원본이 심볼릭 링크일 때 심볼릭파일 자체를 복사한다.
-f : 만약 복사할 대상이 이미 있으면 강제로 지우고 복사한다.
-i : 만약 복사할 대상이 이미 있으면 사용자에게 물어본다.
-l(소문자 엘) : 하드링크 형식으로 복사한다.
-P : 원본파일 지정을 경로와 같이 했을 경우 그 경로 그대로 복사된다.
-p : 파일의 소유자, 그룹, 권한, 시간 정보들이 그대로 보존되어 복사된다.
-r : 원본이 파일이면 그냥 복사되고, 디렉토리라면 디렉토리 전체가 복사된다.
-s : 파일을 심볼릭 링크 형식으로 복사한다. 원본파일이름을 절대경로로 지정해야 한다.
-u : 복사할 대상이 있을 때 이 파일의 변경 날짜가 같거나, 더 최근의 것이면 복사하지 않는다.
-v : 복사 상태를 보여준다.
-x : 원본과 대상파일의 파일시스템이 다를 경우에는 복사하지 않는다.
-R : 디렉토리를 복사할 경우 그 안에 포함된 모든 하위경로와 파일들을 모두 복사한다.
cp 명령에도 상당히 많은 옵션들이 있다. 실제로 자주 사용되는 옵션들을 알아보자.
cp 원본 사본 : 파일의 소유권과 각종 정보는 유지되지 않는다.
cp –a 원본 사본 : 파일의 소유권과 각종 정보를 유지한다. 원본이 디렉토리일 경우 그 안에 포함된 모든 하위 경로와 파일들을 모두 복사한다.
myfile1 을 같은 디렉토리에 myfile2 라는 파일로 복사를 해보자.
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile1
[root@localhost ~]# cp myfile1 myfile2
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile1 myfile2
myfile1 을 Desktop 폴더에 복사를 해보자.
[root@localhost ~]# cp myfile1 Desktop/
[root@localhost ~]# cd Desktop/
[root@localhost Desktop]# ls
SELinux_setup~ curly-001383cc2d.desktop myfile1
[root@localhost Desktop]# pwd
/root/Desktop
이번에는 myfile1 파일을 / (최상위 디렉토리)에 복사를 해보자.
[root@localhost Desktop]# ls
SELinux_setup~ curly-001383cc2d.desktop myfile1
[root@localhost Desktop]# cp myfile1 /
[root@localhost Desktop]# cd /
[root@localhost /]# pwd
/
[root@localhost /]# ls
apm_pds dev lib misc net root share tmp
bin etc lost+found mnt opt sbin srv usr
boot home media myfile1 proc selinux sys var
04. mv
파일을 이동하는 명령어로 사용방법과 옵션은 cp 명령어와 비슷하다.
cp 명령어와 다른 점은 cp는 파일을 복사하는 것이고, mv 는 파일을 이동하는 것이다.
mv 명령의 경우 원본파일은 삭제된다.
<사용방법>
mv [옵션] 원본 목적지
<옵션>
-b : 목적지로 파일을 옮길경우 같은 이름의 파일이 존재한다면 기존 파일을 백업한 뒤에 파일을 복사한다.
-f : 덮어쓸 때 물어 보지 않고 바로 쓴다.
-i : 덮어쓸 때 물어본다.
-v : 무엇을 했는지 표시한다.
myfiel1 이라는 파일을 mv 명령어를 이용하여 myfile3 으로 바꾸어 보자.
[root@localhost /]# cd ~
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile1 myfile2
[root@localhost ~]# mv myfile1 myfile3
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile2 myfile3
-b 옵션을 이용하면 이동할 곳에 같은 파일이 있으면 기존파일에 ~를 붙여 백업파일을 만든다.
[root@localhost /]# cd /
[root@localhost /]# ls
apm_pds dev lib misc net root share tmp
bin etc lost+found mnt opt sbin srv usr
boot home media myfile1 proc selinux sys var
[root@localhost /]# cd ~
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile2 myfile3
[root@localhost ~]# touch myfile1
[root@localhost ~]# ls
Desktop install.log myfile1 myfile3
anaconda-ks.cfg install.log.syslog myfile2
[root@localhost ~]# mv -b myfile1 /
mv: overwrite `/myfile1'? y
[root@localhost ~]# cd /
[root@localhost /]# ls
apm_pds dev lib misc myfile1~ proc selinux sys var
bin etc lost+found mnt net root share tmp
boot home media myfile1 opt sbin srv usr
이번에는 여러 개의 파일을 동시에 이동시켜 보자.
[root@localhost /]# cd ~
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog myfile2 myfile3
[root@localhost ~]# mkdir mydir1
[root@localhost ~]# ls -F
Desktop/ install.log mydir1/ myfile3
anaconda-ks.cfg install.log.syslog myfile2
[root@localhost ~]# mv myfile* mydir1/
[root@localhost ~]# cd mydir1/
[root@localhost mydir1]# ls
myfile2 myfile3
mv myfile* mydir1/ 명령은 myfile로 시작하는 모든 파일을 mydir1 디렉토리로 이동하라는 명령이다.
05. rm
파일을 삭제하는 명령어
<사용방법>
rm [옵션] 파일이름
<옵션>
-f : 삭제할 파일이 없을 경우 아무런 메시지를 보여주지 않고 그냥 넘어간다.
-i : 파일을 삭제할 것인지 사용자에게 물어본다.
-r , -R : 일반파일이면 그냥 지우고, 디렉토리일 경우 그 하위경로와 파일을 모두 지운다.
-v : 삭제되는 파일의 정보를 보여준다.
파일을 삭제하는 명령어인 rm 은 사용시 많은 주의가 요구된다.
만약 # rm –rf / 를 입력한다면 시스템의 모든 파일이 삭제된다.
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog mydir1
[root@localhost ~]# touch myfile1
[root@localhost ~]# ls
Desktop install.log mydir1 anaconda-ks.cfg install.log.syslog myfile1
[root@localhost ~]# rm myfile1
rm: remove 일반 빈 파일 `myfile1'? y
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog mydir1
rm –r 을 이용하면 디렉토리 전체를 삭제할 수 있다.
[root@localhost ~]# cd ~
[root@localhost ~]# mkdir testdir
[root@localhost ~]# ls -F
Desktop/ anaconda-ks.cfg install.log install.log.syslog mydir1/ testdir/
[root@localhost ~]# rm -r testdir/
rm: remove 디렉토리 `testdir/'? y
[root@localhost ~]# ls -F
Desktop/ anaconda-ks.cfg install.log install.log.syslog mydir1/
[TIP] 많은 파일들을 삭제를 할때는 –f 옵션을 주면 y / n 를 물어보지 않게 한번에 지우게 된다.
반드시 무엇을 삭제 할때는 주의해서 하기 바란다.
06. cat
파일의 내용을 화면에 출력한다.
<사용방법>
cat [옵션] 파일
<옵션>
-b : 줄번호를 화면 왼쪽에 나타낸다. 공백은 제외한다.
-e : 제어 문자를 ^ 형태로 출력하면서 각 행의 끝에 $ 를 추가한다.
-n : 줄번호를 화면 왼쪽에 나타낸다. 공백을 포함한다.
-s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
-v : 탭[TAB] 과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E : 각 행마다 끝에 % 문자를 출력한다.
-T : 탭(TAB) 문자를 출력한다.
-A : -vET 옵션을 사용한 것과 같은 효과를 가진다.
cat 명령을 이용해 파일의 내용을 한번 출력해 보자.
[root@localhost ~]# cd ~
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog mydir1
[root@localhost ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
install
cdrom
lang ko_KR.UTF-8
..중간 생략..
화면에서 보는 것과 같이 파일의 전체가 화면에 출력되었다.
지금과 같이 파일의 크기가 작아 한 화면에 표시가 되는 경우는 상관없으나 크기가 큰 파일을 출력한다면 맨 마지막 화면만 남아 있을 것이다.
이런 경우에는 파이프(|) 와 more, less 등을 이용하여 출력하면 전체내용을 볼 수 있다.
07. more
화면 단위로 분할해 출력해 준다.
<사용방법>
more [옵션] 파일명
<옵션>
-n : 여기서 n 은 숫자를 의미하며, 숫자는 출력 윈도우의 행수를 지정한다.
-c : 위에서부터 한 행씩 지운 후, 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을 출력하기 시작한다. 특정한 터미널을 위해 사용한다.
-d : [SPACEBAR] q 키를 누르라는 프롬프트를 출력한다.
-f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바꿈을 하여 새로운 행으로 계산된다. –f 옵션을 사용하면 이런 행은 계산하지 않는다.
-s : 여러 개의 빈 공백행은 하나로 취급한다.
-p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
-u : 밑줄 치기를 금지한다.
cat 명령어는 파일의 처음부터 끝까지 한번에 모두 출력하는 반면,
more 는 아래의 화면과 같이 한 화면이 가득 출력되면 아래 –-more-- 표시되며 사용자의 선택을 기다린다.
[root@localhost ~]# cat anaconda-ks.cfg | more
...중간 생략..
@editors
@system-tools
@korean-support
@gnome-software-development
--More--
[ENTER]를 입력하면 한줄씩 출력되고
[SPACEBAR]를 입력하면 한화면씩 출력된다.
종료하려면 q 키를 입력한다. 이것을 보완한 명령어로 less 가 있다.
08. less
more를 좀더 보완한 명령이다.
<사용방법>
less [옵션] 파일명
-? : less 에서 사용할 수 있는 명령들에 대한 도움말을 제공한다. 이 옵션이 사용되면 다른 인수는 무시되고, 도움말 화면을 보여준다.
-a : 마지막 라인이 화면에 출력되고 나서 탐색을 시작한다.
-c : 필요할 때 전체 화면을 다시 갱신한다.
-C : -c 옵션과 같지만 갱신할 때 화면 전체를 지우고 시작한다.
-e : 두 번째로 파일의 끝에 도달하면 자동적으로 종료한다.
-E : 파일의 끝에 도달하기만 하면 자동적으로 종료한다.
-i : 대소문자를 구분하여 탐색한다.
-n : 행번호를 추가한다.
-q : 특정 에러가 발생하지 않으면 아무 소리도 내지 않고 조용히 동작한다.
-Q : 결코 아무 소리도 내지 않는다.
-s : 연속되는 공백 라인은 하나의 행으로 처리한다.
-x 숫자 : 수치를 지정해서 탭 간격을 조정한다. 기본값은 8 이다.
less 파일명을 입력하면 아래와 같이 파일의 내용이 한 화면식 출력된다.
[root@localhost ~]# less anaconda-ks.cfg
..중간 생략..
@editors
@system-tools
@korean-support
@gnome-software-development
anaconda-ks.cfg
more 와 마찬가지로 [ENTER] 키를 입력하면 한줄씩 출력되고, [SPACEBAR] 키를 입력하면 한화면씩 출력된다.
간단히 방향키를 위아래로 움직이는 것만으로 한줄씩 이동할 수 있다. 종료하려면 q 키를 입력한다.
09. find
특정 파일을 찾는 명령어
<사용법>
find [시작 디렉토리] [각종 문법]
주어진 디렉토리에 [각종 문법]에 해당하는 내용과 일치하는 파일을 찾아 보여준다.
부모 디렉토리에서부터 시작해서 하위 디렉토리에 있는 모든 파일들에 대해서 검색하며, 시스템내의 모든 파일들에 대해서 찾고자 할때는 [시작 디렉토리]를 / 로 지정한다.
-name “문자열”
파일 이름이 문자열과 일치하는 파일을 찾는다.
문자열에는 다음과 같은 형식으로 사용할 수 있다.
“log” : 파일 이름이 log 인 파일
“*log” : 마지막 문자열이 log 로 끝나는 모든 파일
“log*” : log 로 시작하는 파일
“*log” : log 라는 문자가 어디든 상관없이 들어있는 파일
“?log” : 첫글자 하나는 어떤 문자라도 상관 없고, 뒤의 문자열이 log 인 파일
“??log” : 앞에 두글자는 어떤 문자라도 상관 없고, 뒤의 문자열이 log 인 파일
“l?g” : 가운데 글자만 어떤 문자다로 상관없고, 첫문자가 l , 마지막 문자가 g 인 파일
“log???” : 앞의 문자열은 log 이고, 뒤의 3개의 문자열은 어떤 문자라도 상관 없는 파일
-user “유저이름”
특정 소유자의 소유권인 파일을 찾을때 사용한다.
-perm “퍼미션”
명시된 퍼미션으로 된 파일을 찾는다.
-exec [사용할 명령]
해당 문법들로 검색된 파일을 입력값으로 해서 명령을 수행한다.
find 가 검색해 낸 파일의 이름을 인수로 사용하고 싶다면 그 위치에 {} 를 사용한다.
(예) # -exec rm –rf {} ₩;
검색된 파일을 rm 명령에 –rf 옵션을 주어 입력값에 넣는다. 즉, rm –rf 검색된 파일
-type ?
형태가 같은 파일을 찾는다. 물음표(?) 부분에
디렉토리는 d
파이프는 p
심볼릭 링크는 l
소켓은 s
블록 파일은 b
일반 파일은 f
등의 기호를 사용한다.
-links ?
특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
-size ?
파일의 크기가 일치하는 것을 검색한다.
파일 크기는 블록단위로 물음표 부분에 지정한다. 한 블록은 512바이트로 내정되어 있지만, 블록 숫자 뒤에 단위로 k 자를 붙이면 1 키로바이트 크기의 블록 숫자로 간주된다.
-atime ?
최근 며칠내에 액세스한 파일을 검색한다. 날짜수는 ? 에 명시한다.
-newer 파일
어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.
<실습>
/ 디렉토리 아래에서 가운데 linux 가 들어있는 모든 파일을 찾아보자.
[root@localhost ~]# cd /
[root@localhost /]# find / -name *linux*
/selinux
/usr/share/selinux
..중간 생략..
이번에는 –user 옵션을 사용하여 소유자가 doom 인 파일들을 모두 찾아보자.
[root@localhost /]# find / -user doom | more
find: /proc/12983/task/12983/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/12983/fd/4: 그런 파일이나 디렉토리가 없음
/home/doom
/home/doom/.bash_history
..중간 생략..
위와 같은 에러메시지를 출력하지 않게 하려면 다음과 같이 2>/dev/null 을 추가해 준다.
이번에는 –perm 옵션으로 /home 디렉토리 아래에서 퍼미션이 755 인 파일을 찾아보자.
[root@localhost /]# find /home -perm 755
/home
/home/doom/.kde
/home/doom/.kde/Autostart
..중간 생략..
10. grep
파일내에서 또는 입력값에서부터 특정 패턴을 검색한다.
<사용법>
grep [옵션] 표현파일(들)
<옵션>
-v : 일치되는 내용이 없는 라인을 표시한다.
-c : 일치되는 내용이 있는 행의 개수를 표시한다.
-l(소문자 엘) : 일치되는 내용이 있는 파일의 이름만을 표시한다.
-h : 일치되는 내용을 찾은 파일의 이름을 표시하지 않는다.
-n : 일치되는 내용이 있는 행은 행번호와 함께 표시된다.
-i : 대소문자 구분을 하지 않는다.
-e 표현 : 표현이 하이픈 문자로 시작될 때 사용한다.
-f 파일 : 찾으려는 문장이나 표현이 있는 파일을 지시한다.
원하는 검색 단어 혹은 문장을 검색한다. 표현은 일반 표현식을 사용한다.
fgrep 은 문자열을 검색할 때 빠르게 사용한다.
anaconda-ks.cfg 파일에 server 를 포함하는 라인을 출력해보자.
[root@localhost ~]# cd ~
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog mydir1
[root@localhost ~]# grep server anaconda-ks.cfg
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
-n 옵션을 이용하면 라인번호를 확인할 수 있다.
[root@localhost ~]# grep -n server anaconda-ks.cfg
63:xorg-x11-server-Xnest
64:xorg-x11-server-Xvfb
11. 파이프( [SHIFT]+[BACKSPACEBAR] 키 바로 좌측의 키) = |
프로그램의 실행 결과를 다른 프로그램의 입력으로 연결한다.
이렇게 둘 이상의 명령을 함께 사용하고, 한 명령어의 출력 결과를 다른 명령어의 입력으로 전환하는 것을 파이프라 한다.
[root@localhost ~]# cat anaconda-ks.cfg | more
cat 명령어로 anaconda-ks.cfg 파일을 보는데 more 명령어를 같이 쓰면서 화면에 나타낸다.
명령어를 연결해서 사용할 때에 파이프(|)를 사용한다.
12. 리다이렉션
리다이렉션을 이용하면 명령의 출력을 변경할 수 있다.
기본적으로 명령어의 결과는 모니터에 출력된다. 하지만 리다이렉션을 이용하여 파일에 기록할 수 있다.
리다이렉션 연산자에는 < , >> , < 이 있다.
명령어 > 파일 : 파일이 없다면 생성하고, 있다면 기존의 내용을 지운다.
명령어 >> 파일 : 파일이 없다면 생성하고, 있다면 기존의 내용에 추가한다.
명령어 < 파일 : 파일에서 표준입력 받는다.
echo는 주어진 문장을 화면에 출력하는 명령이다.
[root@localhost ~]# cd ~
[root@localhost ~]# echo "Hello~"
Hello~
이것을 파일에 저장해 보자.
[root@localhost ~]# ls
Desktop anaconda-ks.cfg install.log install.log.syslog mydir1
[root@localhost ~]# echo "Hello~" > hello.txt
[root@localhost ~]# ls
Desktop anaconda-ks.cfg hello.txt install.log install.log.syslog mydir1
[root@localhost ~]# cat hello.txt
Hello~
위처럼 cat 으로 화일의 내용을 확인해보면 저장된 것을 알수 있을 것이다.
이번에는 world 라는 단어를 hello.txt 파일에 추가해 보자.
[root@localhost ~]# echo "world" >> hello.txt
[root@localhost ~]# cat hello.txt
Hello~
world
◆ chmod, chown, chgrp 내용은 본인이 자세히 만든 파일을 보면서 공부하도록 하자!
[TIP] 쉘 프롬프트 상태 바꾸기 – 디렉토리 절대 경로 보이게 하기
[root@localhost /]# cd ~
[root@localhost ~] # vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
PS1="[₩u@₩h ₩w] ₩₩$ "
:wq! 저장하고 나가자.
[root@localhost ~] # source .bashrc
[root@localhost ~] # cd /etc/sysconfig/
[root@localhost /etc/sysconfig] #
위 절대경로로 디렉토리 위치가 한눈에 보게 된다.
http://cafe.naver.com/linuxlog
krintiz@naver.com

'Linux(OS)' 카테고리의 다른 글

[Kor]RHEL4 Security Guide  (0) 2011.07.08
[Oracle Database 10g: Managing Oracle on Linux for DBAs] 01.Introduction  (0) 2011.07.08
리눅스 디렉토리 관리  (0) 2011.06.22
시스템 종료와 재부팅  (0) 2011.06.22
vi 편집기  (0) 2011.06.22