Akashic Records

파일 핸들링 본문

Operation System Controls

파일 핸들링

Andrew's Akashic Records 2018. 4. 17. 15:54
728x90

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

현재 화면을 다시 출력한다.

q

less 명령어를 빠져 나간다.

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 옵션 정리

-i

User에서 파일을 지우는 것에 대해 물어본다.

-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 디렉토리를 지워야 한다.



728x90
Comments