man: 매뉴얼(도움말 보기) 명령어
cat: 파일 내용 출력
more: 파일을 화면 단위로 끊어서 출력
less: 파일 내용 출력
head: 파일 앞부분 출력
tail: 파일 뒷부분 출력
아래의 각각의 명령어에 대해서도 알아놓자.
AWK(Aho Weinberger Kernighan)
리눅스의 어떤 다른 명령어보다 명령어 이름이 매우직 관적이지 않은 명령어입니다.
이 명령어를 개발한 사람들의 이름 약자(Aho Weinberger Kernighan)이기 때문에 mkdir(make directory), rm(remove) 같은 의미를 축약하여 만든 명령어와는 명령어 이름이 좀 그렇습니다. 이 명령어를 읽을때는 주로 오크라고 읽습니다. AWK는 유닉스에서 개발된 스크립트 언어로 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램입니다. 엄청나게 막강하고 다양한 기능을 담고 있기 때문에 여기서는 어떻게 사용하는지에 대해서만 알아보도록 하겠습니다.
그 전에 간단하게 기본 용어만 짚고 넘어가도록 합시다. 아래는 하나의 텍스트 파일에 기록된 내용을 보여주고 있습니다. 여기서 각 단어들은 공백으로 구분되어 집니다. 각 줄(line)은 레코드(Record)라고 칭합니다. 그리고 그 안에 각각의 단어들이 필드(Field)가 되겠습니다.
awk 명령어의 형식은 awk pattern {action}
cut 명령어 잘라내다. 즉 원하는 부분만 잘라서 출력할 수 있다.
join 명령어는 두 파일을 필드 단위로 합치는 명령어
paste 파일의 내용을 결합
sort 파일의 내용을 정렬하거나 정렬된 내용을 병합할 때 사용.
uniq 입력 내용에서 중복된 항목을 제거한다.
wc 명령어는 파일의 줄, 단어, 문자 수 를 계산하는데 사용
find : 파일 검색
터미널에서 파일을 검색하는데 가장 많이 사용되는 명령어 중 하나. 파일 권한, 소유권, 수정 날짜, 크기 등과 같은 특정 기준에 따라 파일을 검색.
🔆 명령어를 사용할 때 위치 선정을 하지 않으면 현재 디렉토리만 검색하기 때문에 원하는 내용을 찾을 수 없을 수도 있습니다. 꼭 위치를 지정해서 사용할 것.
$find <위치> <옵션> 검색할 내용
옵션 | 설명 |
---|---|
-name 내용 | 지정한 내용의 이름을 가진 파일을 찾음 |
-type <옵션> | 욥션에 따른 형태를 가진 파일을 찾음 |
대표적인 사용 예 로는
$ find . -name “이름*” # 찾을 파일 이름을 지정해서 찾기.
$ find . -name “이름*” -type d # 찾을 이름의 디렉토리만 찾기
$ sudo find / -size+10M # 파일 크기를 지정해서 찾기 -> 디렉토리 권한 떄문에 sudo 사용
$ find . -empty # 빈파일 찾기
$ find . -newer practice.txt # practice 파일 보다 최근에 변경된 파일 찾기.
locate : 특정 파일 위치 찾기
리눅스 시스템에서 파일의 위치를 모를 때 활용할 수 있는 가장 간단한 명령어. find 명령에 비해 매우 빠르지만 데이터베이스의 정기적인 업데이트를 필요로 한다. 속도 향상을 위해 만들어진 유틸리티이기 때문에 효율성과 정확성은 떨어진다.
locate(mlocate) 프로그램 설치하기
리눅스 배포판에 따라 locate 명령어가 기본으로 제공되는 경우도 있지만 없을 경우에는 설치해야 한다.
과거에는 locate 패키지를 사용했지만 최근에는 mlocate 패키지를 추천한다. (관리자 권한 필요)
$sudo apt-get install mlocate
locate 명령어가 빠른 이유는 검색 DB(파일 목록 데이터베이스, mlocate.db 파일)를 미리 생성하기 때문이다.
❗️locate 명령어를 처음 사용하는 경우라면 사용 전에 DB 를 먼저 만들어야 한다.
$locate gatsby.txt # 파일 이름으로 검색하기
$locate -n 10 *.txt # 검색할 파일 수 지정하여 찾기
which : 실행 파일 위치 식별
검색하려는 파일이 실행 파일인 경우 which 명령이 매우 유용하다. 이 명령은 특정 매개 변수를 취하여 $PATH 시스템 환경변수에서 이진 파일을 매우 효과적으로 검색한다.
which 명령어를 사용하면 현재 사용하고 있는 명령어 실행 파일(또는 링크)의 위치를 알아낼 수 있다.
$which ls
usr/bin/ls
which python3
/usr/bin/python3
grep : 텍스트 검색
grep 는 global, regular expression, print 에서 각각의 머릿글자를 따 온 것이며, 파일이나 표준 입력을 검색하여 주어진 정규 표현식과 맞는 줄을 찾아 프로그램의 표준 출력으로 출력 한다. 대량의 텍스트 파일에서 패턴을 검색할 때 사용할 수 있는 가장 강력한 정규식 터미널 명령 중 하나.
정규표현식 (regular expression)
정규 표현식이란 특정 규칙을 가진 문자열 집합을 표현하기 위한 형식 언어로써, 주로 문자열 패턴 매칭을 검사하거나 또는 문자열을 치환하기 위해 사용 된다. 문자열 검색에 정규 표현식을 적용을 하면 지정된 문자열의 문자 일치여부만 검사하는 것이 아니라 정규 표현식의 규칙에 부합하는지 여부가 검사된다.
**대상 파일에서 문자열 검색**
$grep "문자열" [filename]
$grep "Gatsby" gatsby.txt # gastby.txt 파일에서 Gastby 문자열 찾기
**현재 디렉토리의 모든 파일에서 문자열 검색**
$ grep "문자열" *
$ grep "Gatsby" * # 현재 디렉토리에서 Gatsby 문자열 검색
**특정 확장자를 가진 모든 파일에서 문자열 검색**
$ grep "문자열" *.txt # txt 확장자를 가진 파일에서 "문자열" 검색
**대소문자 구분하지 않고 문자열 검색**
$ grep -i "문자열" [filename]
$ grep -i "he" gatsby.txt # gatsby.txt 파일에서 he 문자 대소문자 구분없이 찾기
**매칭되는 패턴이 존재하지 않는 라인 선택**
$ grep -v "문자열" [filename]
$ grep -v "he" gatsby.txt # gatsby.txt 파일에서 he가 없는 라인 나타내기