Linux

[Linux] 리눅스 명령어 - 파일 보기(cat, more, less, head, tail, grep ..)

TTOII 2022. 2. 16. 10:51
728x90

✅ cat 명령어

  • concatenate에서 따온 명칭으로 여러 파일의 내용을 하나로 합쳐주는 역할
  • 텍스트 파일의 내용의 화면에 출력하는 명령어
  • >, >> 와 같은 리다이렉션 기호와 함께 사용하여 파일을 생성, 저장하는 용도로 사용한다.
  • 텍스트로 된 파일의 경우 그 내용을 정상적으로 출력하지만 바이너리 파일의 경우 출력은 하지만, 알아볼 수 없다.
  • 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.

✅ 입출력 리다이렉션

리다이렉션 기호 방향 의미
> 표준 출력 명령 > 파일 : 명령의 결과를 파일로 저장
>> 표준 출력(추가) 명령 >> 파일 : 명령의 결과를 기존 파일에 "추가"하여 저장
< 표준 입력 명령 < 파일 : 파일의 내용을 명령에 입력

✅ cat 옵션

  • -A : vET 옵션과 동일한 효과를 보여줍니다.
  • -b : 줄번호 표시하지만 공백은 제외합니다
  • -e : 제어문자를 ^로 출력, 행 변경시 $를 표시합니다.
  • -E : 행마다 끝에 $를 표시 합니다.
  • -n : 공백도 포함하여 줄번호를 표시합니다.
  • -s : 반복되는 공백행을 하나의 행으로 처리합니다. (연속되는 여러 공백행을 하나의 행으로 처리)
  • -t : vT 옵션과 동일한 효과를 보여줍니다.
  • -T : 탭문자를 출력합니다.
  • -v : 제어문자를 ^,M-형태로 출력하고, 탭과 행변경 문자를 표시하지 않습니다.
  • --help : 도움말
  • --version : 버전정보 확인

✅ more 명령어

  • 파일을 읽어 화면 단위로 끊어서 출력하는 명령어
  • 파일만 볼 수 있다.

✅ more 옵션

  • h : more 명령어상태에서 사용할 수 있는 키 도움말 확인
  • Space Bar : 한 화면씩 뒤로 이동하기 (f와 동일)
  • Enter : 현재행에서 한 행씩 뒤로 이동하기
  • q : more 명령어 종료하기
  • f : 한 페이지씩 뒤로 이동하기(Space Bar 와 동일)
  • b : 한 페이지씩 앞으로 이동하기
  • = : 현재 위치의 행번호 표시하기
  • /문자열 : 지정한 문자열을 검색하기
  • n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
  • !쉘명령어 : more 명령어상태에서 쉘명령어를 실행하기
  • v : more 명령어로 열려있는 파일의 현재위치에서 vi를 실행하기

✅ less 명령어

  • 한번에 보여지는 만큼만 읽어서 출력하기 때문에 대용량의 파일을 읽어 빠르게 사용할 수 있다.
  • 명령의 결과를 다른 변수에 담아서 처리하는 형태의 프로그래밍의 경우 오류 발생 가능성이 크다.
  • Enter 키를 입력하면 한줄씩 출력되고, Space bar를 입력하면 한 화면씩 출력된다.
  • 방향키로 페이지 이동이 가능하며 vi 텍스트 에디터와 유사하지만 파일 수정은 불가능하다.

✅ less 옵션

  • 텍스트 모드 단축키
    • q: 종료 후 쉘창으로 복귀
    • enter: 1행 아래로 이동
    • space bar: 아래로 1페이지 이동
    • 위 방향키: 위로 1행 이동
    • 아래 방향키: 아래로 1행 이동
    • PageUp: 위로 1페이지 이동
    • PageDoen: 아래로 1페이지 이동
  • -? : less에서 사용할 수 있는 명령들에 대한 도움말 출력
  • -c : 필요 시 전체 화면을 다시 갱신
  • -i : 대소문자를 구분하여 탐색
  • -s : 연속되는 공백 라인은 하나의 행으로 처리
  • -x [숫자] : 수치를 지정해서 탭 간격 조정, 기본값 8
  • 행번호 : 지정된 행 다음부터의 내용을 출력
  • --help : 해당 명령어의 도움말을 보여주고 실행이 종료
  • --version : version 정보를 출력하고 실행이 종료

+ Tip) pipeline은 선행 프로세스의 결과를 후행 프로세스의 입력으로 넣어준다. ex) ls -al /etc | more


✅ head 명령어

  • 파일의 앞부분부터 확인하는 명령어이다.
  • 기본적으로 행의 앞부분부터 10 행까지만 출력한다.
  • 일반적으로 text 기반의 내용을 보여주며 binary 파일은 실행은 되지만 알아볼 수 없는 문자로 출력이 되므로
    binary로 된 파일에서는 거의 사용하지 않는 것이 좋다.
  • 기본 사용법
$ head [-n lines | -c bytes] [file ...]

 

✅ head 옵션

옵션 설명
-n num num 수 만큼 출력해준다.
-c num num byte만큼 출력해준다.
-q 여러개의 파일을 출력할 때 제목을 출력하지 않는다.
-f 내용이 변경될 때마다 실시간으로 출력해준다.
로그파일 모니터링 등에 활용 (tail만 있음)

✅ tail 명령어

  • 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력하는 명령어
  • 기본값으로 10행을 출력해준다.
  • 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 유용하게 사용한다.
  • 기본 사용법
tail [옵션][파일명]

 

✅ tail 옵션

  • -f : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다.
  • -n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
  • -c (바이트 수) : 파일의 마지막부터 지정한 바이트만큼의 내용을 출력한다.
  • -q : 파일의 헤더와 상단의 파일 이름을 출력하지 않고 내용만 출력한다.
  • -v : 출력하기전에 파일의 헤더와 이름 먼저 출력한 후 파일의 내용을 출력한다.

Q. 총 47라인으로 구성되어있는 파일을 10번째 라인에서 20번째 라인까지만 출력해보기
여러개의 답이 나올 수 있다.

cat -n /etc/passwd | tail -n +10 | head -11	
cat -n /etc/passwd | head -n +20 | tail -n +10
tail -n +10 /etc/passwd | head -11



+ Tip
테스트 시에 다른 터미널에서 systemctl restart firewall 과 같은 시스템 명령을 하면 log 파일이 생성되고
생성되는 과정을 지속적으로 모니터링 할 수 있다.


✅ grep 명령어

  • 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어
  • 정규표현식에 의한 패턴 매칭 방식을 사용하여 수행된다.
  • 기본 사용법
grep [옵션][패턴][파일명]

 

✅ grep 옵션

  • -c : 일치하는 행의 수를 출력한다.
  • -i : 대소문자를 구별하지 않는다.
  • -v : 일치하지 않는 행만 출력한다.
  • -n : 포함된 행의 번호를 함께 출력한다.
  • -l : 패턴이 포함된 파일의 이름을 출력한다.
  • -w : 단어와 일치하는 행만 출력한다.
  • -x : 라인과 일치하는 행만 출력한다.
  • -r : 하위 디렉토리를 포함한 모든 파일에서 검색한다.
  • -m 숫자 : 최대로 표시될 수 있는 결과를 제한한다.
  • -E : 찾을 패턴을 정규 표현식으로 찾는다.
  • -F : 찾을 패턴을 문자열로 찾는다.

✅ grep 사용 예시

1) 문자열로 찾기

# 특정 파일에서 'error' 문자열 찾기
grep 'error' 파일명

# 여러개의 파일에서 'error' 문자열 찾기
grep 'error' 파일명1 파일명2

# 현재 디렉토리내에 있는 모든 파일에서 'error' 문자열 찾기
grep 'error' *

# 특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기
grep 'error' *.log

2) 정규표현식으로 찾기

# 특정 파일에서 문자열이 포함된 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 a로 시작하는 모든 단어를 찾는다.
grep 'a*' 파일명 

# 특정 파일에서 a로 시작하고 z로 끝나는 5자리 단어를 찾는다.
grep 'a...z' 파일명 

# 특정 파일에서 a,b,c로 시작하는 단어를 모두 찾는다.
grep [a-c] 파일명

# 특정 파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.
grep [aA]pple 파일명 

# 특정 파일에서 a나 b로 시작되는 모든 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 apple로 시작되고 09의 숫자로 끝나로 시작되는 모든 행을 찾는다.
grep 'apple'[0-9] 파일명

 

✅ grep 종류

명령어 설명 정규표현식 사용
grep 다중 패턴을 검색한다. O
egrep 정규 표현식 패턴으로 검색한다. O
fgrep 문자열 패턴으로 검색한다. X

 


📌 참고

728x90