2011년 5월 25일 수요일

파일 핸들링

ls
ls -flag [filename] [directoryname]
유닉스 명령어 중 가장 많이 쓰이는 명령어를 꼽으라면 당연히 ls 명령어 일 것이다. 윈도우에서 쓰이는 탐색기와 같은 것으로 도스에서는 dir 명령어로 이해하면 될 것이다. 유닉스에서 사용하는 명령어들은 굉장히 많은 옵션을 가지고 있다. 그렇다고 이 모든 옵션을 다 알 필요는 없다. 단지, 자주 사용하는 몇 가지 옵션만 알면 된다. 다음은 가장 일반적으로 많이 쓰이는 ls의 옵션들을 살펴보자.
ls 옵션 정리
-A.과 ..을 제외한 모든 파일과 디렉토리의 리스트를 보여준다.
-a숨겨진 파일과 디렉토리의 리스트를 보여준다.
-l파일에 대한 권한, 링크의 수, 그룹, 크기, 마지막 변경시간 등을 보여준다.
-R파일리스트와 디렉토리의 서브디렉토리의 파일까지 보여준다.
-t가장 최근 것 먼저 정렬한다. (마지막 변경순서로)
-r정렬 순서를 반대로 한다. (이름은 역순으로 시간은 가장 오래된것 먼저 정렬)
-m파일과 파일사이를 ,(콤마)로 나누어 출력한다.
-i파일 앞에 i-node 의 수를 표시하여 출력한다.
-s파일과 디렉토리의 크기를 킬로바이트 단위로 출력한다.



file
유닉스 시스템에서는 파일의 확장자가 없기떄문에 파일의 속성을 간혹 가다 모를떄가 있다. 이때 쓰이는 명령어가 file 명령어이다.
file test1
test1: directory

file /etc/hosts
hosts: ascii text

file /bin/ls
ls: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, stripped



test1은 디렉토리이고, /etc/hosts 파일은 일반 텍스트 파일, /bin/ls 는 실행명령어임을 알 수 있다.

cat
cat -flag [filename]
파일 안에 무슨 내용이 들어있는지 보는 가장 간단한 명령어가 cat 명령어이다.
cat cat.txt



cat 옵션정리
-b출력되는 각행에 행 번호를 부여하여 출력. 공백행은 행 번호를 부여하지 않음
-e화면상에 보이지 않는 문자 출력. 행의 끝에는 $ 기호를 출력한다.
-n행마다 앞에 행 번호를 붙인다. 행 번호는 1부터 시작한다.
-s연속되는 공백행을 한 행으로 출력한다.
-q입력된 파일들을 찾을 수 없을 때 출력되는 메시지가 나오지 않도록 한다.
-v출력할 수 없는 문자들이 있으면 출력할 수 있는 문자로 바꿔서 출력한다.



more
파일의 내용이 너무 길 경우 출력되는 화면이 너무 빨리 지나가 끝에만 보게 될 때가 있다. 이때 유용하게 쓰이는 명령어가 more 명령어이다. 기본적은 more명령어는 한 화면의 출력이 끝나면 다음으로 넘어가기 전 멈춘다. 이때, 스페이스바[Space]를 누르면, 다음화면이 출력되고, 엔터[Enter] 키를 누르면 한 줄씩 출력이 된다. more 명령어는 다른 명령어의 결과를 출력할떄 파이프(Pipe)로 연결하여 사용하는 경우가 대부분이며, 파이프에(Pipe)에 대해서는 다음에 더 자세히 설명할 것이다.

more 옵션정리
-d빠져나갈 것인지, 도움말을 볼 것인지 묻도록 한다.
-f한 행을 여러 행으로 나누어 출력하지 않는다.
-number한번에 표시할 크기를 정한다.
-p화면이 스크롤되는 것을 막는다.
-s연속되는 공백행을 하나의 행으로 줄여 출력한다.
-u밑줄 문자를 만드는 특수문자열(escape sequence)을 무시한다.
-w파일을 끝까지 출력하고 나면, 다시 처음으로 돌아가게 한다.
+행번호‘행번호’ 로부터 화면출력을 시작한다.
+g파일의 끝부분에서 시작해서 거꾸로 출력한다.
+/pattern파일에서 pattern이 나타나는 행에서부터 두 행 앞서서 출력한다.



less
more명령어와 비슷하게 파일을 출력하지만, less는 기본적으로 출력된 파일의 내용을 앞과 뒤로 자유롭게 볼 수 있다. 파일의 끝을 나타내며, more 명령어와는 달리 쉘로 빠져나가지 않는다. q또는 Q를 입력하여야만 나갈 수 있다. 잠시 쉘 프롬프트 상태로 나가려면 !를 누르고 다시less명령어 상태로 오려면 exit을 입력하면 된다.

less 옵션정리
h쓸 수 있는 less명령어들을 보여준다.
Space /Ctrl+v /Ctrl+f다음화면으로 넘어간다. 앞에 숫자를 붙이면 지정한 숫자만큼 다음 줄로 넘어간다.
Enter/ Ctrl+n다음 한 줄로 넘어간다. 앞에 숫자를 붙이면 지정한 숫자만큼 다음 줄로 넘어간다.
Ctrl +b전 화면으로 넘어간다. 앞에 숫자를 붙이면 그 수만큼 전 화면으로 넘어간다.
g파일의 가장 앞부분으로 간다. 앞에 숫자를 붙이면 그 숫자의 행으로 간다.
G파일의 가장 끝부분으로 간다. 앞에 숫자를 붙이면 그 숫자의 행으로 간다.
Ctrl +u현재 화면을 다시 출력한다.
qless 명령어를 빠져 나간다.
v현재 파일에서 vi를 실행한다.



head
head -flag [filename]
head 명령어는 파일전체가 아닌 처음 n개의 행을 화면으로 출력한다. n은 기본으로 10행이 지정된다.
head 옵션정리
-c number파일의 처음에서 숫자만큼의 바이트를 출력한다.
-n number파일의 처음에서 숫자만큼의 행을 출력한다.



tail
head 명령어와는 반대로 파일의 마지막 10줄을 출력한다.

tail +/- n [ filename ]
tail 옵션정리
-c number지정한 수 만큼의 문자에서 시작해서 출력한다.
-b number지정한 수 만큼의 512바이트 블록 다음부터 시작해서 출력한다.
-k number지정한 수 만큼 1024 바이트 블록 다음부터 시작해서 출력한다.
-n number지정한 수의 행 번호에서부터 시작해서 출력한다.
-r number파일의 내용을 거꾸로 해서 출력한다.
-f크기가 변할 때마다 그 끝부분을 출력하다.
+ number파일의 처음부터 number숫자만큼 떨어진 위치에서 출력한다.number가 없으면 10이 기본이다.



find
어떤 파일이 어디 있는지를 알고 싶을 때 find 명령어를 이용하여 찾으면 된다. find 명령어는 파일의 이름, 크기, 속성, 권한 등의 다양한 방법으로 파일을 찾을 수 있다.

find [path] [expression]
일반적으로 파일의 이름으로 찾는 경우가 제일 많이 활용되는데, 이름으로 찾을 경우에는 [-name]옵션을 써주면 된다. 만일 파일의 위치를 모르고 test라는 파일이름만 알 경우 다음과 같이 해주면 된다.
find / -name test



find 옵션 정리
-name파일의 이름을 지정해서 파일을 찾는다.
-size number파일의 크기를 이용해서 검색한다. 파일의 크기는 블록 단위로 표시한다.
-prune하위 디렉토리의 파일들까지 검색하지 않도록 한다.
-user사용자 이름이 소유자인 파일을 찾는다.
-perm permission지정한 권한을 가진 파일을 찾는다.
-group groupname그룹에 속한 파일을 찾는다.
-inum number지정한 수와 i-node 수가 일치하는 파일들을 찾는다.
-link number지정한 수의 링크를 가진 파일을 찾는다.



which
which 명령어는 유닉스 시스템의 PATH에 설정되어 있는 경로에서 명령어가 있는지 찾는데 쓰이는 명령어이다. 파일검색 할 때 자주 쓰이는 ls 명령어가 어디에 위치하는
which ls

/bin/ls



whereis
whereis 명령어는 검색경로에 사용자가 지정해준 명령어가 있는지 찾을 때 쓰이는 명령어이다. find 명령어가 어디있는지 whereis 명령어로 찾아보자.
whereis find

find: /usr/bin/find



파일 및 디렉토리 복사하기 : cp
파일 및 디렉토리 복사할 때 cp 명령어가 쓰인다. 하나의 파일을 복사할 수 도 있고, 여러 개를 동시에 복사 할 수 도 있다. 현재 위치에서 test 파일을 test_cp 파일로 복사하여 보자. 아무런 옵션없이 간단하게 파일을 복사하는 방법이다.
cp test test_cp



test_cp라는 파일이 이미 존재하고 있다면, test_cp파일을 덮어쓴다. 그러나 중요한 파일을 덮어쓰는 실수를 방지하기 위하여 [-i] 옵션이 있다. [-i] 옵션은 파일을 복사하기 전 만약 이미 그 파일이 존재하면 확인을 위해 물어본다.
cp -i test test_cp

cp: overwrite test_cp (yes/no)? y



디렉토리 및 그 하부 디렉토리까지 통째로 복사할려면 [-r]옵션을 주면 된다. 다음은 test1 디렉토리를 test_dir_cp로 복사하여 보자.
cp –r test1 test_dir_cp



파일 이동하기 : mv
기존의 파일을 다른 위치에 옮기거나, 파일명을 다시 바꾸고자 할 때 mv 명령어를 쓴다.

mv –flag [filename 1] [filename 2] or [directory 1] [directory 2]
파일 이름 바꾸기 Solaris.txt 파일을 Solaris_8.txt로 이름을 바꿔보자.
mv Solaris.txt Solaris_8.txt



디렉토리 이름 바꾸기 test1 디렉토리를 test1_mv 디렉토리로 변경시켜 보자.
mv test1 test1_mv



파일 및 디렉토리 지우기: rm

rm –flag [filename] or [directoryname]
여러 가지 작업을 하면서, 시간이 지날수록 쓸모 없는 파일들도 늘어나고 디스크 공간만 쓸데없이 차지하는 경우도 생기게 된다. 이럴 땐 필요 없는 파일들을 지우고 디렉토리를 정리하여야 된다. rm 명령어는 파일 및 디렉토리를 영구적으로 지워버리는 역할을 한다. 윈도우의 휴지통처럼 다시 복원할 수 있는 기회가 없기 때문에 이 명령어를 쓸 때는 신중해야 한다. 파일을 지우려면 그 파일에 쓰기 권한이 있어야 지울 수 있다. [*]과 같은 와일드 카드는 조심해서 사용해야 한다.만일 [rm test *] 이렇게 잘못 입력하면 모든 파일이 지워지기 때문이다. 이러한 실수를 피하기 위해서 지울 때 마다 일일이 물어보는 [- i]옵션을 사용하는 것이 안전하다.
rm -i test*

rm: remove test (yes/no)? y
rm: test1 is a directory
rm: remove test_cp (yes/no)? y



rm 옵션 정리
-iUser에서 파일을 지우는 것에 대해 물어본다.
-f아무런 메시지 없이 파일을 지운다.
-r디렉토리내의 파일과 하부디렉토리까지 모두 지운다.



디렉토리 만들기 : mkdir

mkdir –flag [directoryname]
디렉토리를 한 개 만들 수도 있고, 파일처럼 여러 개를 한꺼번에 만들 수 있다. /ebee 디렉토리 밑에 solaris_dir 디렉토리를 만들려면 다음과 같이 하면 된다.
mkdir /ebee/solaris_dir



만일 /ebee/solaris_dir 가 이미 존재한다면 다음과 같은 메시지가 나온다.
"mkdir: Failed to make directory "solaris_dir"; File exists "

새로운 디렉토리를 만들면서 디렉토리에 대한 권한을 지정해 줄 수 있는데 [- m] 옵션과 권한을 써주면 된다.
mkdir -m 755 /ebee/solaris

ls –l /ebeedrwxr-xr-x 2 ekjung staff 512 Oct 25 13:26 solaris



디렉토리 지우기 : rmdir

rmdir –flag [directoryname]
solaris 디렉토리를 지우려면 다음과 같이 하면 된다.
rmdir solaris



디렉토리를 지울 때는 디렉토리내에 하부디렉토리 및 파일이 없어야 지울 수 있다. 만일 하나라도 파일이 있을 경우 다음과 같은 메시지가 나온다.
rmdir: directory "solaris": Directory not empty

이럴 경우 디렉토리내의 모든 파일을 먼저 지우고 solaris 디렉토리를 지워야 한다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...