[RHEL6] 파일 보기 명령어 1탄(access, cat, chattr, file, head)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 파일 보기 명령어 1탄(access, cat, chattr, file, head)

by 찬찬이 아빠 2020. 3. 27.
반응형
  1. access(권한 확인)

 1) 경로 : /usr/bin/access

 2) 요약 : 지정한 파일의 존재 유무와 권한을 확인

 3) 사용 방법 : access [모드] [파일명]

 4) 옵션

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

현재 사용자 권한으로 지정한 파일이 존재 하는지, 읽기/쓰기/실행 권한이 있는지를 확인할 수 있습니다. 독립적으로 사용되기보다 쉘 스크립트 안에서 사용됩니다. "모드" 인수에는 r(읽기), w(쓰기), x(실행)을 대입하여 파일에 권한이 있는지를 질의할 수 있습니다. 읽기(r), 쓰기(w) 권한이 있는 테스트 파일을 access 명령어를 이용하여 권한을 확인해 봅니다.

# ls -l testfile
-rw-rw-r--	1	chan	chan	0	Mar 27 14:20	testfile

 

현재 터미널 사용자는 chan이며 아래와 같이 testfile은 chan 사용자와 그룹에 읽기(r), 쓰기(w) 권한이 있는 것을 알 수 있습니다. access 명령어를 실행하면 인수를 제대로 입력하여도 아무런 결과도 출력되지 않습니다. echo "$?" 명령어를 이용하여 access 명령어의 결과가 성공(0) 했는지, 실패(1) 했는지 확인 할 수 있습니다.

# access rw testfile
$ echo "$?"
0

 

testfile에 읽기(r), 쓰기(w) 권한은 있지만 실행(x) 권한은 없으므로, 모든 인수를 rwx로 질의할 경우 결과는 실패(1)를 출력합니다.

# access rwx testfile
# echo "$?"
1

 

 

 

  2. cat(파일 보기)

 1) 경로 : /bin/cat

 2) 요약 : 텍스트 파일 내용을 출력

 3) 사용 방법 : cat [옵션] [파일]...

 4) 옵션

 -A, --show-all : -vET 옵션과 같음

 -b, --number-nonblank : 각 문자 앞에 번호를 표시해 줌. 공백 줄은 번호를 표시하지 않음

 -e : -vE와 같음

 -E, --show-ends : 개행 문자를 $로 표시. 줄 바꿈 표시

 -n, --number : 각 문자 앞에 번호를 표시. 공백 줄도 번호를 표시

 -s, --squeeze-blank : 공백이 여러 줄일 경우, 한 줄만 공백으로 보여주고 나머지 줄은 무시

 -t : -vT 옵션과 같음

 -T, --show-tabs : 탭 문자를 ^I(대문자 아이)로 출력

 -v, --show-nonprinting : ^와 M 표시법으로 출력. 줄 바꿈 문자와 탭 문자는 표시하지 않음

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

cat은 파일 내용을 출력하는 대표적인 명령어 입니다. cat은 파일 내용을 한 번에 출력해서 문서의 양이 많을 경우 제대로 볼 수가 없습니다. 이때는 more 명령이나 less, tail 명령어를 사용하거나 출력 내용을 파이프를 통해 다른 명령과 조합하여 사용합니다.

 

다음의query 파일을 cat으로 살펴봅니다. 한 줄이 너무 길 때 어디서 개행(줄바꿈)되었는지 구별이 쉽지 않습니다.

# cat query
select date_format(uregdate, '%Y%m') date,count(uid) from cst_users u,
cst_productregs p, cst_productregdetail d
where u.uno =p.preguno
and p.pregno=d.preggno
group by date

 

이런 경우 -n 옵션으로 줄 번호를 붙여 줍니다. 이 파일은 총 4줄입니다.

# cat -n query
1 select date_format(uregdate, '%Y%m') date,count(uid) from cst_users u, cst_productregs p, cst_productregdetail d
2 where u.uno =p.preguno
3 and p.pregno=d.preggno
4 group by date

 

문서의 양이 많은 경우 파이프를 통해 more 명령어에 출력을 넘겨 한 페이지씩 살펴볼 수 있습니다. 다음 페이지를 보려면 Space Bar 키를 입력하고, 한 줄씩 내려가려면 Enter 키를 입력합니다.

 

cat은 간단한 라인 편집기의 역할을 할 수 있습니다. 라인 편집기란 현재 입력하고 있는 행은 수정할 수 있지만 이미 지나 온 행은 수정할 수 없는 것으을 말합니다.

사용법은 다음과 같습니다.

# cat > [파일명]

 

그러면  실제로 파일을 만들어 저장해 봅니다. 파일을 다 쓰고 나서는 Ctrl + D 키를 눌러 cat 명령을 종료합니다.

# cat > boa.txt
You Still my No. 1,
날 찾지 말아 줘.
나의 슬픔 가려줘. 저 구름 뒤에
너를 숨겨 빛을 닫아 줘.
Ctrl + D

 

노래 가사를 입력해 보았습니다. 그러면 제대로 저장이 되었는지 새로 만들어진 boa.txt 파일을 읽어보면 저장 내용을 확인 할 수 있습니다.

# cat boa.txt
You Still my No. 1,
날 찾지 말아 줘.
나의 슬픔 가려줘. 저 구름 뒤에
너를 숨겨 빛을 닫아 줘.

 

그러나 리다이렉션(>)으로 저장 할 때 주의할 점은 추가할 때 마다 기존 파일의 내용을 덧씌운다는 것입니다. 100m.txt 파일의 내용을 화면에 출력하는 대신 리다이렉션으로 boa.txt 파일에 입력하고 저장해 봅니다.

# cat 100m.txt > boa.txt
# cat boa.txt
저기 보이는 노란 찻집
오늘은 그녀를 세 번째 만나는 날

 

앞서 작성한 boa.txt의 내용이 사라지고 100m.txt의 내용이 저장되었습니다. 그렇다면 기존 내용에 새 내용을 추가하려면 어떻게 해야 할까요? 이 때에는 >>를 사용합니다.

# cat sarah.txt >> boa.txt

 

 

  3. chattr(파일 보호)

 1) 경로 : /usr/bin/chattr

 2) 요약 : 파일 시스템의 파일 속성을 변경하여 파일 손상을 방지

 3) 사용 방법 : chattr [옵션] [+- 속성] 파일...

 4) 옵션

 -R : 현재 디렉터리 이하의 모든 디렉터리와 파일의 속성을 변환

 -V : 변환된 속성의 자세한 정보를 출력

 -v : 버전 정보 출력

 

<속성>

a : 파일을 추가 모드로만 열 수 있음

c : 커널에 의해 디스크 상에 압축 상태로 저장

d : dump 명령 수행 시 백업하지 않음

i : 파일의 수정을 바지. 오직 슈퍼 유저만이 다시 이 속성을 변경할 수 있음

s : 파일이 지워질 때 일단 블록들이 모두 0이 된 다음 디스크에 기록

S : 파일이 수정될 때 그 변화가 디스크 상에 동기화

u : 파일이 지워지면 내용을 저장

 

 5) 추가 설명

파일 시스템의 파일 속성을 변경하는 명령어입니다. 보호해야 하는 파일을 실수로 지우거나 덮어쓰지 않게 합니다. + 속성은 파일에 속성을 추가하고, -속성은 파일에서 속성을 제거합니다. =속성은 파일이 오로지 주어진 속성만 갖도록 합니다.

 

chattr +i 명령으로 /root/passwd_backup 파일에 수정 방지 속성을 부여해 봅니다. 이 속성을 추가하면 파일을 지우거나 이름을 변경하지 못하며 내용의 추가나 링크를 생성할 수도 없습니다.

# chattr +i /root/passwd_backup

 

lsattr 명령으로 파일 속성을 확인할 수 있습니다.

# lsattr /root/passwd_backup
---i--------- /root/passwd_backup

 

/root/passwd_backup 파일을 삭제해 봅니다. 속성을 제거하기 전까지는 삭제할 수 없습니다. 마찬가지로 파일 내용 변경도 불가능합니다. VI 에디터로 파일을 열어도 읽기 전용으로 열립니다.

# rm -rf /etc/passwd
rm: cannot unlink '/etc/passwd': Operation not permitted

 

그럼 chattr -i로 수정 방지 속성을 제거해 봅니다.

# chattr -i /etc/passwd
# lsattr /etc/passwd
------------- /etc/passwd

 

 

 

  4. file(파일 종류 확인)

 1) 경로 : /usr/bin/file

 2) 요약 : 파일의 종류와 파일 정보를 출력

 3) 사용 방법 : file [옵션] 파일

 4) 옵션

 -b, --brief : 지정한 파일명은 출력하지 않고, 파일의 유형만을 출력

 -f, --files-from 파일목록 : 파일 목록에서 지정한 파일들에 대해서 명령을 실행

 -i, --mime : 사람이 읽을 수 있는 전통적인 형식이 아니라 MIME 타입 문자를 출력(예를 들어 ASCII text를 text/plain; charset=us-ascii 형태로 출력)

 -L, --dereference : 심볼릭 링크된 파일을 추적하여 원본 파일 정보를 출력

 -m, --magic-file 매직파일 : 매직파일을 지정(기본값은 /usr/share/file/magic)

 -v, --version : 버전 정보 출력

 -z, --uncompress : 압축된 파일의 내용을 출력

 --help : 사용법 출력

 

 5) 추가 설명

file 명령어는 파일 종류를 구분 짓는 유틸리티로 file 명령 뒤에 파일명을 입력하면 ascii나 text나 date 같은 파일 속성을 출력합니다. /usr/share/magic나 /usr/lib/magic에 저장한 파일 정보를 참고하여 파일 속성을 출력합니다. 아래 예제는 test 파일 속성을 알려줍니다.

# file test
test: ASCII text

 

-b 옵션은 저장한 파일명은 제외하고 유형만을 출력합니다.

# file -b test
ASCII text

 

-i 옵션은 MIME 타입을 볼 수 있습니다.

# file -i test
file: Using regular magic file '/usr/share/magic.mime'
test: text/planin; charset=us-ascii

 

 

 

  5. head(파일 앞부분 보기)

 1) 경로 : /usr/bin/head

 2) 요약 : 파일의 첫 번째 부분을 출력

 3) 사용 방법 : head [옵션] [파일명]

 4) 옵션

 -숫자 : 출력을 원하는 줄수를 지정. 기본값은 10을 사용하여 열 줄을 출력.

 -c, --bytes=SIZE : 출력을 원하는 용량을 정할 수 있음. 사이즈(SIZE)는 b(block=512bytes), k(Kilo bytes), m(Mega Bytes)를 숫자 뒤에 붙여 용량을 구분. 뒤에 단위가 없을 때는 바이트 단위로 출력

 -n, --lines=N : 출력을 원하는 줄 수를 지정

 -q, --quiet, --silent : 출력 할 때 파일명을 출력하지 않음

 -v, --verbose : 출력하는 파일명을 출력

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

파일의 앞 부분을 보여주는 명령어로 행 수나 용량을 지정할 수 있습니다. 이 명령어는 대용량 파일의 앞 부분의 내용을 볼 때 유용하며 특히 로그 파일을 확인 할 때 tail 명령어와 함께 자주 사용합니다.

 

head 명령어를 이용하여 mail 파일의 처음 10줄을 읽어봅니다. -v 옵션은 출력되는 파일명을 제일 먼저 출력합니다.

# head -v /var/mail/chan
==> /var/spool/mail/root <==
From root		Fri Mar 27 16:40:11 2020
Return-Path: <root@apache.com>
Received: (from root@localhost)
			by apache.com (9.10.1/9.10.1) id g1emr2oi3
            for root; The 26 Mar 2020 12:00:11 +900
Date: Fri 27 Mar 2020 16:40:11 +0900
From: root <root@apache.com>
Message-Id: <2020032612000.g1emr2oi3@apache.com>
To: root@apache.com
Subject: File intergrity report

 

위의 예는 10개행으로 이루어진 메일의 처음을 출력합니다.

 

아래 예제는 읽을 범위를 지정하여 12번째 줄까지 읽어보도록 합니다.

# head -12 /var/mail/chan
==> /var/spool/mail/root <==
From root		Fri Mar 27 16:40:11 2020
Return-Path: <root@apache.com>
Received: (from root@localhost)
			by apache.com (9.10.1/9.10.1) id g1emr2oi3
            for root; The 26 Mar 2020 12:00:11 +900
Date: Fri 27 Mar 2020 16:40:11 +0900
From: root <root@apache.com>
Message-Id: <2020032612000.g1emr2oi3@apache.com>
To: root@apache.com
Subject: File intergrity report
Hello~!!!
You must read this mail and send you answer.

 

-c 옵션을 사용하여 파일 용량을 기준으로 일정 용량까짐나 읽을 수 있습니다.

# head -v -c 74 /var/mail/chan
==> /var/spool/mail/root <==
From root		Fri Mar 27 16:40:11 2020
Return-Path: <root@apache.com>

 

74 바이트 만큼 출력합니다.

반응형

댓글