일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- GPT-4's answer
- python
- 역학
- chatGPT's answer
- flet
- Database
- spring integration
- 코틀린
- 고전역학
- spring data jpa
- 소프트웨어공학
- jpa
- 시스템
- 파이썬
- write by GPT-4
- 리눅스
- 데이터베이스
- NIO
- 웹 크롤링
- JVM
- 자바암호
- 인프라
- 자바
- 자바네트워크
- kotlin
- write by chatGPT
- android
- oracle
- Java
- 유닉스
- Today
- Total
기억을 지배하는 기록
파일 핸들링 본문
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 디렉토리를 지워야 한다.
'Operation System Controls' 카테고리의 다른 글
Chapter 3 Unix System 보안 (0) | 2018.04.17 |
---|---|
Chapter 2 Unix 사용자 계정 관리 (0) | 2018.04.17 |
Chapter 1 Unix System 시작과 종료 (0) | 2018.04.17 |
포트 스캐닝 감시 및 OS 정보 숨기기 (0) | 2018.04.17 |
파일 압축 명령어 (0) | 2018.04.17 |