Bae's Digital Dialogues

리눅스[Linux] cat, grep, 리다이렉트, less, tar 본문

Linux

리눅스[Linux] cat, grep, 리다이렉트, less, tar

배디훈 2024. 6. 10. 04:34

파일의 내용을 화인하는 cat

$ cat Docekrfile #Dockerfile의 내용 출력)
$ cat nginx.conf #nginx의 내용 출력

 

 

2024.06.03 - [Linux] - 리눅스[Linux] vi 편집기 사용

 

리눅스[Linux] vi 편집기 사용

가끔 편집기가 설치되어 있지 않은 환경에서 파일을 작성해야 하거나 터미널 환경에서 파일을 수정하는 것이 더 빠르게 해결할 수 있는 경우가 있다. 이번에는 Linux OS에서 기본으로 제공해주는

baddiehoon.tistory.com

저번에 vi 편집기로 만든 파일들을 모두 cat 명령으로 확인해보자

 

 

 

ls 명령을 사용해 저번에 만든 3개의 파일을 확인할 수 있다. (Dockerfile, nginx.conf, myfirstfile)

 

 

cat myfirstfile #myfirstfile의 내용 확인
cat Dockerfile #dockerfile의 내용 확인
cat nginx.conf #nginx.conf의 내용 확인

 

 

Hello Vi!의 내용이 출력되는것을 확인하였다

 

 

수정한 내용들이 반영되어 저장되어 있는것을 확인하였다.

 

 

nginx.conf의 내용도 잘 출력이 되는 것을 확인하였다.

 

 

출력 내용을 검색하는 grep

파이프 '|' 과 함께 사용한다

[이전 명령어] | [이후 명령어]

명령어의 출력을 다음 명령으로 전달

 

[출력명령어] | grep [검색어]

 

파일의 내용 검색:cat [파일명] | grep [검색어]

이전 n라인 출력:grep -B n [검색어]

이후 n라인 출력:grep -A n [검색어]

대소문자 구분 없이 검색:grep -i [검색어]

 

검색어에 공백이 있을 경우 '검색어'로 묶어서 입력한다.

 

 

grep 명령어를 사용해보겠다.

 

$ cat Dockerfile | grep CMD #Dockerfile의 내용중 CMD 검색

이렇게 한 줄이 검색되는 것을 확인할 수 있다.

 

 

$ cat nginx.conf | grep location #nginx.conf의 내용 중 location 검색

동일한 방식으로 nginx.conf 파일에 grep 명령을 사용해서 location 단어를 검색해 보겠다.

 

 

이렇게 총 3개의 라인이 검색되는 것을 확인할 수 있다.

 

 

$ cat Dockerfile | grep -i -B 2 cmd #dockerfile의 내용 중 대소문자 구분 없이 cmd 검색, 검색 결과의 이전 2줄까지 포함하여 출력

 

이번에는 grep 명령을 사용해서 먼저 -i 옵션을 줘서 대소문자 구분 없이 검색해볼겠다. 그리고 -B 옵션을 줘서 한 칸 띄고 숫자 2를 입력해서 검색된 결과의 이전 두 번째 라인까지 출력해볼것이다.

 

 

이렇게 대소문자 구분 없이 대문자 CMD가 검색된 것을 확인할 수 있다. 그리고 CMD 라인의 두 번째 전 라인까지 검색된 것을 확인할 수 있다.

 

 

$ cat nginx.conf | grep -A 2 -B 3 'access_log off' #nginx 파일의 검색된 결과에 이전 세 번째 라인과 이후 두 번째 라인까지 검색어를 출력

검색된 결과의 이전 두 번째 라인과 이후 세 번째 라인을 출력해 볼 것이다.

 

 

 

 

다음으로 출력 결과를 저장하는 리다이렉션 명령에 대해 알아보자

출력 결과를 저장하는 리다이렉션 >, >>

[이전 명령어] > 파일명

이전 명령어의 출력을 파일로 저장

 

>:기존 파일이 있을경우 덮어쓰기

>>:기존 파일이 있을경우 내용추가

 

 

먼저 tree 명령을 사용해서 /etc 경로를 탐색해 보겠다.

$ tree /etc | trep sh #tree /etc 명령의 결과 중 sh 검색

이렇게 sh가 붙어 있는 라인만 검색되는 것을 확인할 수 있다.

 

 

$ tree/etc | grep sh > tree_result.txt #tree /etc 명령의 결과 중 sh 검색된 결과를 파일로 저장

위의 sh만 검색된 결과를 tree-result.txt 파일로 저장해 보겠다.

 

 

cat 명령을 사용해서 tree-result.txt 파일을 열어 보면 이전에 etc 경로에서 sh를 검색한 결과를 파일로 저장할 수 있는걸 확인하였다.

 

 

$ cat nginx.conf > tree_result.txt #cat 명령의 결과를 tree_result.txt 파일로 생성

이 cat 명령의 결과를 리다이렉트 하나를 사용해서 tree_result.txt 파일에 추가하겠다.

 

 

cat 명령을 사용해서 tree_result 파일을 확인해 보면 기존에 우리가 작성했던 내용들은 사라지고 nginx.conf 파일의 내용만 있는 것을 확인할 수 있다.

 

 

$ tree /etc | trep sh >> tree_result.txt #tree /etc 명령의 결과 중 sh 검색된 결과를 tree_result.txt 파일로 저장(이미 있을경우 내용 추가)

이번에는 리다이렉션 문자를 두 개 입력해서 명령어를 실행해 보겠다.

 

 

cat 명령어로 파일의 내용을 확인해 보면 이번에는 기존의 nginx.conf의 파일의 내용이 그대로 남아있는 상태에서 새로운 내용이 추가된 것을 확인할 수 있다.

 

 

이렇게 리다이렉션 문자를 사용하면 명령어의 출력 결과를 파일로 저장할 수 있다.

 

다음 명령어는 큰 파일을 읽을 때 사용하는 less 명령어이다.

큰 파일을 읽을때는 less

 

 

$ less tree_result.txt #내용이 많은 tree_result.txt 파일읽기

less 명령을 사용해서 tree_result.txt 파일을 열어보겠다.

 

 

이렇게 아주 긴 파일이더라도 맨 첫 번째 라인부터 출력하는 것을 확인할 수 있다.

 

엔터를 누르면 바로 다음 라인을 확인할 수 있고, 스페이스를 누르면 페이지 단위로 이동할 수 있다.

그래서 큰 파일을 읽을 때는 less 명령을 사용하는 것이 더 편리하다.

 

다시 터미널로 돌아가려면 q를 입력하면 된다.

 

 

이번에는 tar 명령에 대해 알아보겠다.

아카이브로 묶는 tar

 

아카이브란?

  • 여러 파일이나 디렉터리를 하나의 파일로 묶음

압축

  • 데이터를 더 작은 크기로 줄이는 과정 포함

 

일반적으로 사용하는 압축과는 다른 개념이다.

 

파일이나 디렉터리 아카이브:

tar -cvf [결과파일.tar] [디렉터리 또는 파일]

 

파일이나 디렉터리 아카이브 해제:

tar -xvf [결과파일.tar]

 

 

$ tar -cvf hoonlinux.tar . #4개의 파일을 하나의 tar 파일로 아카이브

지금까지 실습에서 생성한 4개의 파일들을 하나의 tar 파일로 묶어 보겠다.

 

 

잘 생성이 된 것을 확인할 수 있다.

 

 

$ tar -xvf hoonlinux.tar #hoonlinux.tar 아카이브 해제

이제 현재 경로에서 tar 파일의 아카이빙을 해제해 보겠다.

 

 

현재 경로에 4개의 파일이 모두 파일로 풀린 것을 확인할 수 있다.

 

 

동일한 방식으로 압축도 실행할 수 있다.

 

파일이나 디렉터리 압축:

tar -czvf [압축파일.tar.gz] [디렉터리 또는 파일]

 

파일이나 디렉터리 압축 해제:

tar -xzvf [압축파일.tar.gz]