본문 바로가기
리눅스 마스터

리눅스 마스터 5

by 윤라경 2024. 6. 30.

[2024.06.29]

 

01. 문자열 추출

 

1) cut

#cut <옵션> [필드] [파일명]

 

> [TAB] 키로 단어 구분

 

#cut -f1 passwd  <-- 첫 번째 필드 문자열 추출

#cut -f1,3 yrg.txt  <-- 첫 번째, 세 번째 문자열 추출

#cut -f1-4 yrg.txt  <-- 첫 번째에서 네 번째 문자열 추출

 

 

파일을 만들 때 TAB 키가 아닌 스페이스로 띄어쓰기를 하면 적용이 되지 않고 화면처럼 보인다

 

 

다시 TAB 키를 이용하여 띄어쓰기 수정

 

 

수정 후 명령어를 다시 실행하면 첫 번째 문자열을 추출한다

 

 

f2를 넣게 되면 두 번째 문자열 추출   

 

 

이렇게 연속으로 추출하고 싶을 때 사용할 수 있는 명령어다 

 

 

-d:의 경우 콜론(:)을 필드 구분자로 지정하기 때문에

첫 번째 필드의 콜론(:)을 기준으로 문자열을 추출한다

 

 

확인을 위해 기존 passwd 파일 확인 시 앞에 오는 문자만 추출된 걸 확인할 수 있다

 

 

필드 구분자를 기준으로 세 번째, 네 번째 문자열 추출

 

 

여러 개의 필드를 동시에 추출할 수도 있다

 

 

해당 명령어는 필드 구분자를 기준으로 첫 번째부터 네 번째 필드까지를 추출하는 의미이다

 

 

파이프(|) 연산자를 통하여 명령어를 이어서 한번에 수행할 수도 있다 

 

 

2) awk

# awk <옵션> [필드] [파일명]

 

#cat yrg.txt | awk '{print $0}'  <-- 전체 필드 출력

#cat yrg.txt | awk '{print $1}'  <-- 첫 번째 필드 출력

#cat yrg.txt | awk '{print $1, $3}'  <-- 첫 번째, 세 번째 필드 출력

 

#awk 'NR==5' passwd  <-- 다섯 번째 행 출력

#awk 'NR==5 || NR==10' yrg1.txt  <-- 다섯 번째 행과 열 번째 행 출력

#awk 'NR>=' yrg1.txt  <-- 다섯 번째 행 이상 모두 출력

#awk 'NR>=5 && NR<=7' yrg1.txt  <-- 다섯 번째 행 이상 일곱 번째 행 이하까지 출력

 

 

차례대로 전체 필드, 첫 번째 필드, 첫 번째와 세 번째 필드 출력 화면 

 

 

실습 진행을 위해 해당 화면으로 yrg1.txt 파일 생성

 

 

차례대로 다섯 번째 행 출력과 다섯 번째 행과 열 번째 행 출력 화면이다

 

 

이밖에도 다양한 연산자를 사용하여 명령어 처리를 할 수 있다

 

 

02. 정렬

 

#sort [옵션] [파일명]

 

#sort yrg3.txt  <-- 기본 오름차순 정렬

#sort -r yrg3.txt  <-- 내림차순 정렬

#sort -k 1 yrg3.txt  <-- 첫 번째 필드를 기준으로 오름차순 정렬

#sort -k 3 yrg3.txt  <-- 세 번째 필드를 기준으로 오름차순 정렬

#sort -k 3 -r yrg3.txt  <-- 세 번째 필드를 기준으로 내림차순 정렬

 

 

기본 오름차순 정렬

 

 

내림차순 정렬

 

 

해당 화면처럼 yrg3.txt 파일 생성

 

 

기본 오름차순 정렬 

 

 

내림차순 정렬 

 

 

첫 번째, 두 번째, 세 번째 필드를 기준으로 오름차순 정렬

 

 

기본은 오름차순이며, -r 옵션을 주면 세 번째 필드를 기준으로 정렬을 하되 내림차순으로 출력한다

 

 

03. 파일 내용

 

1) cmp

#cmp [파일1] [파일2]

 

2) comm

#comm [파일1] [파일2]

 

3) diff

#diff [파일1] [파일2]

 

 

cp 명령어를 통해 passwd와 같은 passwd7 파일을 하나 더 생성한다

 

 

passwd7 파일에 윗줄에 test라는 문자를 임의로 삽입 후 저장 

 

 

저장 후 cmp 명령어를 사용하게 되면 두 파일을 바이트 단위로 비교하여 첫 번째 차이를 출력해 준다

기본적으로 cmp는 두 파일이 다른 위치를 발견하면 그 위치까지 알려 준다

 

 

이번에는 각각의 파일에서 임의로 수정을 해 준다

 

 

그 후 cmp 명령어를 사용하게 되면 아까와 다른 바가 없다

 

 

이럴 때는 알려 준 대로 틀린 부분을 수정하게 되면

 

 

그 다음에 수정해야 될 위치를 알려 준다 

 

 

이번에도 임의로 test 문자를 삽입

 

 

diff 명령어를 사용하게 되면 수정해야 될 위치와 수정해야 될 부분까지 자세하게 알려 준다 

 

 

위에서는 passwd7을 이용하여 진행했지만 기존 passwd로 수정해도 동일하다

 

 

위에서 확인할 수 있듯이 수정할 부분과 수정할 위치까지 전부 확인할 수 있다

 

 

04. 링크 파일

> 편의성

 

1) 하드 링크

# ln [원본 파일명] [링크 파일명]

 

> 링크 수 증가

> i-node 번호 같음

> 원본 파일이 삭제되어도 링크 파일 사용할 수 있음

> 파일만 링크 가능

> 파일 용량 변화 없음(원본 그대로)

 

 

실습 진행을 위해 모두 삭제 후 passwd 파일만 복사한다

 

 

ln 명령어를 이용하여 passwd와 같은 passwd7 생성

생성 후 확인하게 되면 용량도 같고 i-node 번호도 같게 되며, 이 둘은 동일한 파일로 볼 수 있다

 

 

passwd 파일을 passwd77777... 파일에 이동시켜 passwd77777...의 이름으로 변경된다 

 

 

ln 명령어는 passwd77777... 파일에 대한 하드 링크를 passwd라는 이름으로 생성한다

하드 링크는 동일한 파일에 대해 여러 이름을 가질 수 있게 하는 기능으로,

동일한 파일에 대해 서로 다른 이름을 가지지만 동일한 데이터 블록을 가리킨다

 

 

그렇기 때문에 passwd 파일을 수정하고 passwd77777... 파일을 확인해도 똑같이 수정되어 있는 화면이다

 

 

반대로 passwd77777... 파일을 수정하고 passwd 파일을 확인해도 수정 내용은 같다

고로 같은 파일임을 확신할 수 있다

 

 

2) 심볼릭 링크

#ln -s [옵션] [원본 파일/디렉터리명] [링크 파일/디렉터리명]

 

> 링크 수 변함없음

> i-node 번호 다름

> 원본 파일이 삭제되어도 링크 파일 사용할 수 없음

> 자동으로 모든 사용자에게 읽기/쓰기/실행 권한이 부여됨

> 파일 용량 변화됨(원본보다 적어짐)

 

 

해당 명령어는 passwd 파일에 대한 심볼릭 링크를 passwd7이라는 이름으로 생성하는 것이다

심볼릭 링크는 실제 파일의 위치를 참조하는 특수한 파일이다

 

 

심볼릭 링크를 실행 후 강제로 삭제하고 다시 확인 시 화면처럼 표시된다

passwd7 심볼릭 링크는 여전히 존재하지만, 이제는 passwd 파일을 참조할 수 없게 되는 경우다

 

 

 

 

심볼릭 링크 실행 시 i-node 번호가 다른 것을 확인할 수 있다

이때 이 i-node 번호는 파일 시스템에서 파일을 식별하는 데 사용한다

그렇기 때문에 번호가 다르다는 것은 서로 다른 파일을 가리킨다는 것을 의미하게 된다

 

 

꼭 파일이 아니더라도 디렉터리도 똑같이 생성할 수 있다

 

 

일반 파일을 생성할 때와 심볼릭 링크로 생성할 때의 차이도 확연하게 드러난다

 

 

05. 파일/디렉터리 압축/해제

 

1) gzip

#gzip [옵션] [파일/디렉터리]

 

> 해제

#gzip -d passwd.gz

#gunzip passwd.gz

#gzip passwd.gz shadow.gz  <-- 여러 개의 파일 한번에 압축 해제

 

> 확장자: *.gz

 

2) bzip2

#bzip2 [옵션] [파일/디렉터리명]

 

> 압축

#bzip2 passwd

#bzip2 passwd shadow  <-- 여러 개의 파일 한번에 압축

 

> 해제

#bzip2 -d passwd.gz

#bunzip2 passwd.bz2

#bunzip2 passwd.bz2 shadow.bz2  <-- 여러 개의 파일 한번에 압축 해제

 

> 확장자: *.bz2

 

3) xz

> 압축

#xz passwd

#xz passwd shadow  <-- 여러 개의 파일 한번에 압축

 

> 해제

#xz -d passwd.xz

#unxz passwd.xz

#unxz passwd.xz shadow.xz  <-- 여러 개의 파일 한번에 압축 해제

 

> 확장자: *.bz2

 

4) compress

> 압축

#compress passwd

#compress passwd shadow  <-- 여러 개의 파일 한번에 압축

 

> 해제

#uncompress passwd.Z

#uncompress passwd.Z shadow.Z  <-- 여러 개의 파일 한번에 압축 해제

 

> 확장자: *.Z

 

5) zip

> 압축

#zip [압축될 파일명] [원본 파일명]

#zip passwd

 

> 해제

#unzip passwd.zip

#unzip passwd.zip shadow.zip  <-- 여러 개의 파일 한번에 압축 해제

 

> 확장자: *.zip

 

 

ex)

 

*용량이 없어도 압축 헤더가 포함되어 용량이 늘어날 수 있다

 

 

 

 

06. 파일 묶기/풀기

 

#tar [옵션] [생성 파일명] [묶을 파일명]...[파일명5]

 

<옵션>

-c: 묶음 파일 생성

-f: 아카이브 파일 지정

-r: 묶인 파일에 다른 파일을 추가

-f: 묶인 파일 해제하지 않고 목록 확인

-v: 과정 출력

-x: 묶음 해제

-z: gzip으로 압축

-j: bzip2로 압축

-J: xz로 압축

 

 

ex)

 

 

 

강의 소감

오늘도 여러 명령어에 대해 배웠지만 링크 파일 부문의 하드 링크와 심볼릭 링크가 어려웠다

처음에는 헷갈렸지만 계속 손으로 입력해 보고 확인하니까 현재는 완벽히 이해하게 됐다

꾸준한 연습과 복습이 확실히 나를 더 성장시키는 것 같다

'리눅스 마스터' 카테고리의 다른 글

리눅스 마스터 7  (0) 2024.07.13
리눅스 마스터 6  (1) 2024.06.30
리눅스 마스터 4  (0) 2024.06.23
리눅스 마스터 3  (0) 2024.06.23
리눅스 마스터 2  (0) 2024.06.18