3. Linux OS 이용/관리
3.3. 명령어
3.3.2. 호출/검색/필터링
3.3.2.1. cat
- concatenate. 여러 파일을 결합하거나 파일의 내용을 출력한다.
- cat 옵션 파일명
- 많은 명령어의 출력값이나 환경변수들은 여러 디렉토리에 분산 저장되어 있는 내용을 호출하는 것이기 때문에, 근거가 되는 구체적인 경로를 알면 여러 명령어나 환경변수를 몰라도 되는 경우가 많다.(예 : $SHELL, whoami는 /etc/passwd에서 가져온다)
- which(Which command is being executed?) 명령어로 해당 명령어의 경로를 출력할 수 있다. 그러나 그 파일이 실행파일인 경우에는 cat으로 출력해도 대체로 기계어라는 어려움이 있다. 그러나 화면에 출력되는 문자열은 그대로 포함하기에 string명령어와의 결합으로 찾아낼 수도 있다.
pwd는 실행파일이기에 기계어로 출력된다. - 함께 쓰기 좋은 명령어는 하기와 같다.
명령어 및 기본형태 | 내용 |
head 파일 | 파일 앞에서 몇 줄만 출력한다. (기본 10줄) |
tail 파일 | 파일 뒤에서 몇 줄만 출력한다. |
more 파일 | 파일을 전부 읽고 파일 내용을 한 페이지 단위로 출력. 단방향 지원 |
less 파일 | 파일을 읽어가면서 파일 내용을 한 페이지 단위로 출력. 양방향 지원 |
comm 파일1 파일2 | 두 파일의 내용을 같은 행끼리 비교하여 단순하게 출력. (onl1, only2, common) |
diff 파일1 파일2 | 두 파일의 내용을 같은 행끼리 비교하여 구체적으로 출력 (추가, 삭제, 변경) |
3.3.2.2. find
- 지정된 디렉토리의 모든 서브디렉토리/파일을 중 조건에 맞는 것들을 출력한다.
- find 경로 옵션 조건
- find 명령은 상대경로로 지정하면 상대경로로 출력되고, 절대경로로 지정하면 절대경로로 출력된다. 여기서 주의할 것은 그 "/"를 포함하여 출력된 경로 전체를 대상으로 조건을 살핀다.
의미 없는 sp/t를 조건으로 잡아도 출력되는 모습. 절대경로의 경우에는 잡히지만 상대경로는 잡히지 않는 모습을 알 수 있다. 절대경로에선 test[]의 위치가 /home/osp/test[] 이지만, 상대경로에선 ./test[]이기 때문이다. - ls | grep과 상당히 유사하다. 특히 ls의 -R(서브디렉토리), -l(세부정보)를 이용하면 대단히 비슷하다. 다만 find과 grep은 *의 용법이 다르다.(와일드카드/정규표현식)
find의 경우에는 서브디렉토리까지 한 번에 검색하지만 ls의 경우에는 -R 옵션을 입력해야 서브디렉토리까지 검색한다. 또한 ls는 대상 파일의 경로도 출력하지 않는다. 참고로 /home/osp = .이다.
3.3.2.3. grep
- global regular expression print. 정규표현식에 일치하는 부분을 및 그 행을 출력한다.
- grep 옵션 조건 파일명
- 시각적으로 편리한 도구이기 때문에 파이프(|)로 다른 함수의 출력을 입력으로 받아서 원하는 걸 찾을 때 쓰기 좋다.
형태 | 내용 | 예시 |
grep "ab" testgrep | testgrep 파일의 내용에서 ab문자열 부분과 그 행을 출력 | 하기 |
cat testgrep | grep "ab" | testgrep 파일의 내용에서 ab문자열 부분과 그 행을 출력 | |
cat /etc/passwd | grep "/bin/bash" | /etc/passwd 파일의 내용에서 /bin/bash문자열 부분과 그 행을 출력 | 계정챕터 |
3.3.2.4. cut
- cut. 지정된 구분자를 기준으로 필드를 잘라내어 출력한다.
- cut 옵션 파일/출력
- 구분점이 있거나 크게 잘라내는 등 동작 단순할 때 유용하다. 옵션은 작업내용이며, 파이프 친화적이다.
3.3.2.5. awk
- aho, weinberger, and kernighan(각 개발자들의 성).
- awk '조건{동작}' 파일/출력
- 하나의 awk에 여러 '{}'을 넣을 수는 없지마 하나의 '{}'에 여러 조건/동작을 넣을 수는 있다.
- 정교한 cut이라고 할 수 있다. 구분자를 여러 개 지정할 수 있을 뿐 아니라 조건문, 반복문을 지정할 수도 있다. 내부에서 변수선언도 가능하기에, 이 안에서 스크립팅을 짤 수도 있다. 이 역시 파이프친화적이다.
3.3.2.6. sort
- sort. 파일 내 텍스트를 정렬하여 출력한다.
- sort 옵션 파일
- 리다이렉션을 통해 그 출력값을 새로운 파일에 저장하는 방식이 흔히 사용된다.
- 행 앞의 아스키ID를 기반으로 한 오름차순 정렬을 디폴트로 한다.(내림차순 : -r, 열기반 : -k)
3.3.2.7.sed
- stream editor. 파일 내 텍스트를 편집해 출력한다.
- sed 작업 파일
- 일정한 규칙성이 있는 파일에 대해 그 규칙성을 다른 규칙으로 대체할 때 사용한다. 대상 파일이 짜임새를 갖추었을 때 유용하며, 변수 지정 철학이 천방지축인 경우 짱구 엄빠보다 머리가 복잡해진다.
3.3.2.8. tr
- translate. 문자를 변환하여 출력한다.
- tr 옵션 oldtxt newtxt
- 조건이 단순하고, 예외나 지정같은 게 없어 일괄적으로 바꾸는 단순한 문자 변환에 이용된다. 텍스트 처리 자동화 스크립트의 초반부에 위치하기 쉽다.
3.3.2.9 strings
- strings. 파일 내의 텍스트 문자열을 출력한다.
- strings 파일명
- 유니코드, ASCII 외에도 특히 실행파일은 바이너리/기계어로 저장되어 있기도 하다. 다만 이 때에도 어차피 출력하는 내용들은 유니코드/ASCII 그대로 포함되어 있기 때문에 그 부분만 출력하는 것.
- 텍스트를 보고 소스코드를 추론하는 리버스엔지니어링에 의미가 크다.
옵션 | 내용 |
-n 길이 | 출력되는 문자열의 최소 길이 (디폴트=4) |
-e 인코딩방법 | -e b : 7비트 ASCII (디폴트) -e l : 리틀 엔디안 유니코드 -e B : 빅 엔이안 유니코드 |
3.3.2.10. 암호화/인코딩
- Encryption /Encoding. 어떤 문자열을 특정 규칙에 따라 다른 문자열로 변환해 출력한다.
- 일방향성/양방향성, 보안성/호환성의 목적성이 반대되나 입력값에 대해 변환 규칙을 제공하는 함수라는 측면에서는 같다. 말하자면 f(x)의 f이다.
명령어 및 기본 형태 | 풀네임 | 기능 |
iconv -f 인코딩A -t 인코딩B 파일 | internationalization conversion | 파일/표준입력을 디코딩A후 인코딩B 하여 출력한다. |
base64 파일형태 | base 64 | 파일/표준입력을 base64로 인코딩 후 출력한다. |
shasum 옵션 파일 | secure hash algorithm checksum | 파일/표준입력을 문자열의 SHA 해시값을 출력한다.(디폴트 SHA-1) |
md5sum 파일 | message digest algorithm 5 checksum | 파일/표준입력을 문자열의 MD5 해시값을 출력한다. |
openssl 기능 옵션 | open source sockets layer | 인코딩/디코딩, 암호화/복호화, 해시출력 등 다양한 보안 기능을 갖는다. |
3.3.2.11. pwd
- present working directory. 현재 작업중인 디렉토리를 출력한다.
- 프롬프트 셸에서는 출력되고, 사용자의 기본 디렉토리는 ~로 기호화된다는 점을 알면 셸에서는 크게 쓸 일이 없다. 다만 스크립트를 짜려면 알아두는 게 좋다.
- 특정 디렉토리에 저장된 값을 불러오는 것이 아니기에 cat으로 호출할 수 없다.
3.3.2.12. hostname, whoami, $SHELL
- hostname. 시스템(컴퓨터 또는 단말) 이름을 출력한다.
- whoami. 사용자 이름을 출력한다.
- $SHELL. 셸 환경 값을 가지고 있는 변수이다.
- hostname은 /etc/hostname에, whoami와 $SHELL은 /etc/passwd에서 불러온다.
- 다만 hostname같은 경우에는 /etc/hosts 에서 IP주소와 호스트명을 매핑하므로 /etc/hostname과 /etc/hosts의 동기화가 권장된다.
3.3.2.13. file
- file type. 대상의 종류를(디렉토리, 텍스트파일, 바이너리파일, 실행파일) 출력한다.
- file 파일명
- 정확히는 호출이 아니라 대상 파일에 대한 정보를 분석/연산해서 그 종류를 식별하는 알고리즘이고, 특정 디렉토리에 저장된 값을 불러오는 것이 아니기에 cat으로 호출할 수 없다.
- .txt혹은 .exe등의 확장자명은 편리한 식별 기준이지만 실제 파일 형식과 항상 일치하는 것은 아니고 file 명령어를 사용하는 것이 신뢰성이 높다.
3.3.2.14. ps, top
- process status. 현재 실행중인 프로세스 상태를 단발성으로 출력한다.
ps는 현재 터미널 세션에 대한 프로세스만을, ps aux는 시스템에서 실행중인 모든 프로세스를 출력한다. - table of process. 프로세스 상태와 리소스 사용량을 실시간으로(디폴트 3초) 모니터링한다. 윈도우의 ctr+atl+del와 대등하다.
d를 눌러 갱신 주기를 확인하는 모습이며, esc로 명령모드로 전환한 다음 q를 눌러야 프롬프트로 복귀한다.
3.3.2.15. df, du
- disk free. 파일시스템 단위로 디스크 사용량을 확인한다. 단위를 보면 알 수 있듯 디렉토리 지정 옵션이 없다.
옵션이 없으면 KB, -h옵션을 붙이면 MB/GB단위로 출력된다. - disk usage. 디렉토리/파일 단위로 디스크 사용량을 확인한다. 디렉토리를 지정해서 확인할 수 있다.
du는 디렉토리의 디스크 사용량만 나오고, du -a 옵션은 디렉토리와 파일의 디스크 사용량을 출력한다.
3.3.2.16. history
- history. 현재 세션과 과거 세션의 모든 커맨드 기록을 출력한다.
- 현재 세션의 커맨드 기록은 메모리에 기록되며, 세션 종료시 숨김파일인 /home/osp/.bash_history에 기록된다.
- 현재 세션의 커맨드 기록은 history -w로 숨김파일에 저장할 수 있으며 -c옵션으로 제거할 수 있다.
- 과거 세션의 커맨드 기록은 rm ./.bash_history 또는 > ./.bash_history)로 제거할 수 있다.
과거 세션 커맨드 기록 | 현재 세션 커맨드 기록 |
./.bash_history에 저장 | 메모리에 저장(파일 형태 X) |
파일 제거/덮어쓰기로 삭제 | history -c로 삭제 |
history -w 또는 -a 옵션으로 현재 세션의 커맨드 기록을 ./.bash_history에 저장할 수 있다. |
'CS > OS' 카테고리의 다른 글
운영체제 : 3.Linux OS 이용/관리 : 3.명령어 : 4. 입력/실행/변경 (0) | 2024.12.06 |
---|---|
운영체제 : 3.Linux OS 이용/관리 : 3.명령어 : 3. 와일드카드/정규표현식 (2) | 2024.12.06 |
운영체제 : 3.Linux OS 이용/관리 : 3.명령어 : 1. 관리일반 (0) | 2024.12.05 |
운영체제 : 3.Linux OS 이용/관리 : 2.특징/구조 (0) | 2024.12.03 |
운영체제 : 3.Linux OS 이용/관리 : 1.계정 관리 (0) | 2024.12.01 |