HOW TO HACK/Basics

해커라면 알아야 할 리눅스 기초-9 : 파일 내용 조회, 출력

Mr. Rootable 2016. 4. 15. 16:50

# 본 게시글은 작성자 본인의 스터디 목적으로 작성된 글입니다.


# 본 게시글에는 일부 잘못된 정보가 포함되어있을 수 있습니다.


# 이 글을 열람하는 것은 위 사항에 동의하는 것으로 간주합니다.


# 잘못된 정보에 대한 태클 및 지적질 적극 환영합니다.



이번 포스팅에서는 파일의 내용을 출력하는 몇 가지 명령어에 대해 다뤄보려고 한다.

지금부터 cat, head, tail 등의 명령어의 기본적인 사용법을 알아볼 것이다.



Step 1 : 파일 전체 읽기 (cat)


이건 뭐.. 아주 기본이다..

cat 명령어는 파일의 내용을 한꺼번에 출력하는 명령어이다. 파일의 길이가 길때는 좀 불편하다.. (개인적으로~)

이 명령어에 대해서는 더 말할 것도 없을 것 같다. cd 명령어를 이용해 /usr/share/nmap 디렉토리로 이동하여 nmap.xsl 파일내용을 확인해보자.


# cat nmap.xsl



눈깜짝할 사이 파일 내용이 터미널에 뿌려졌다.



Step 2 : 파일 상위 몇줄만 읽기 (head)


읽고자 하는 파일을 위에서 몇 줄만 읽는 방법이다.


Usage : head [옵션] [파일명]


아무 옵션을 주지 않고 사용하면 기본적으로 상위 10줄만 출력되게 되어있다.


# head nmap.xsl



옵션을 사용하여 원하는 라인까지 출력시켜보자. 

head -n 파일명 형식으로 옵션을 주면 되고, n은 출력하고자하는 라인수이다.

상위 2줄만 출력하기 위해 옵션으로 -2를 주었다.


# head -2 nmap.xsl



상위 2줄만 출력됨을 볼 수 있다.



Step 3 : 파일 하위 몇줄만 읽기 (tail)


사용법은 Step 2에서 알아본 head 명령과 동일하다. 


Usage : tail [옵션] [파일명]


역시 아무 옵션없이 아래 명령을 실행하면 하위 10줄만 출력된다.


# tail nmap.xsl



파일의 끝에서 원하는 라인수만 출력하고자 한다면 tail과 동일하게 -n 옵션을 사용한다.


# tail -2 nmap.xsl



참~~ 쉽다!!!!



Step 4 : 라인No와 함께 파일내용 출력하기 (nl)


라인No가 없는 소스코드 파일을 수정하거나, 분석해본 프로그래머는 라인No의 중요성을 뼈저리게 공감할 수 있다.

nl 명령어를 이용하면 리눅스 터미널환경에서도 라인No와 함께 파일의 내용을 출력할 수 있다.

아래 명령어를 터미널에서 실행해보자.


# nl nmap.xsl



유후~ 파일내용의 좌측에 라인No가 이쁘장하게 출력되었다. 



Step 5 : 파일에서 특정 텍스트가 포함된 부분 출력(grep)


grep 명령어는 이전에 포스팅했던 글에서도 휘리릭 지나가는 식으로 소개한바 있다. 소개라고 말할 수 있는 수준이었나....? 쩝..

어쨌든, 이 grep 이라는 명령어는 정말 유용하게 쓰인다.

스압(스크롤바 압박)이 있는 몇천, 몇만 라인의 파일에서 원하는 부분을 찾아볼 때 이 grep 명령어를 파이프라인(|)과 함께 사용하면 쉽게 찾을 수 있다.

파이프라인(|)은 파이프라인을 기준으로 왼쪽에 있는 명령의 실행결과를 오른쪽으로 전달해주는 역할을 한다고 보면 된다.


자, cat 과 grep 명령어를 사용하여 list 단어가 포함되어있는 부분만 출력해보았다.


# cat nmap.xsl | grep list



물론, 라인No를 출력하는 nl 명령어와 함께 사용할 수도 있다.


# nl nmap.xsl | grep list




Step 6 : 파일 내용 찾아서 바꾸기 (sed)


sed 명령어는 필터링과 텍스트를 변환하는 Stream Editor(스트림 편집기)로, 원본 파일은 건드리지 않고, 단지 출력되는 결과만을 변화시켜 보여주는 명령어이다.

옵션과 사용법에 따라 다른 기능도 지원되지만, 여기서 보여주고자 하는 것은 sed 명령어를 통해 주로 사용하는 기능,, 간단히 말해, '찾아서 바꾸기'이다.

왜.. 메모장이나 한글프로그램에 있는 기능 같은거 말이다.. 


'찾아서 바꾸기'를 하려면 아래와 같이 사용하면 된다.


Usage : sed 's/찾을텍스트/바꿀텍스트/' 파일명


그럼, 아래 스크린샷의 빨간 박스로 처리한 nmap.xsl 파일의 처음부분의 xml 태그의 version= 텍스트를 다른 텍스트로 변경하여 출력해보도록 하자.

편의상 맘대로 선택한 것이니 다른 텍스트를 변경해도 상관없다.



위에서 배운 문법대로 명령을 작성해서 날려보자.


# sed 's/version=/Mr Rootable/' nmap.xsl



스크린샷과 같이 version= 텍스트가 Mr Rootable 텍스트로 변경됐다. 

nmap.xsl 원본파일을 확인해보면 원본파일은 변경되지 않고, 출력될때만 변경되었음을 알 수 있다.



<끝>