웹사이트 검색

Linux에서 head, tail 및 cat 명령을 사용하여 효과적으로 파일 관리


파일 내용을 보기 위해 Linux에서 제공하는 여러 명령과 프로그램이 있습니다. 파일 작업은 어려운 작업 중 하나이며, 초보자, 일반 사용자, 고급 사용자, 개발자, 관리자 등 대부분의 컴퓨터 사용자가 수행합니다. 파일을 효과적이고 효율적으로 작업하는 것은 예술입니다.

오늘 이 기사에서는 head, tailcat라는 가장 인기 있는 명령에 대해 논의할 것입니다. 우리 대부분은 이미 이러한 명령을 알고 있습니다. 하지만 필요할 때 이를 구현하는 사람은 거의 없습니다.

1. 헤드 명령

head 명령은 주어진 파일 이름의 처음 10줄을 읽습니다. head 명령의 기본 구문은 다음과 같습니다.

head [options] [file(s)]

예를 들어, 다음 명령은 '/etc/passwd'라는 파일의 처음 10줄을 표시합니다.

head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

파일이 두 개 이상 제공되면 head는 각 파일의 처음 10줄을 별도로 표시합니다. 예를 들어, 다음 명령은 각 파일의 10줄을 표시합니다.

head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

기본 10줄보다 더 많은 줄을 검색하려면 검색할 줄 수를 알려주는 정수와 함께 '-n' 옵션이 사용됩니다. 예를 들어, 다음 명령은 '/var/log/yum.log' 파일의 첫 번째 5 줄을 표시합니다.

head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

실제로 '-n' 옵션을 사용할 필요가 없습니다. 하이픈만 입력하고 공백 없이 정수를 지정하면 위 명령과 동일한 결과를 얻을 수 있습니다.

head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

head 명령은 '-c' 옵션 뒤에 표시할 바이트 수를 사용하여 원하는 바이트 수를 표시할 수도 있습니다. 예를 들어, 다음 명령은 해당 파일의 처음 45바이트를 표시합니다.

head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. 꼬리 명령

tail 명령을 사용하면 텍스트 파일의 마지막 10줄을 표시할 수 있습니다. 위의 head 명령과 유사하게 tail 명령도 'n' 줄 수 및 'n' 문자 수 옵션을 지원합니다.

tail 명령의 기본 구문은 다음과 같습니다.

tail [options] [filenames]

예를 들어, 다음 명령은 'access.log'라는 파일의 마지막 10줄을 인쇄합니다.

tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

파일이 두 개 이상 제공되면 tail은 아래와 같이 각 파일의 마지막 10줄을 인쇄합니다.

tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

마찬가지로 아래와 같이 '-n' 옵션을 사용하여 마지막 몇 줄을 인쇄할 수도 있습니다.

tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

아래와 같이 '-c' 인수를 사용하여 문자 수를 인쇄할 수도 있습니다.

tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. 고양이 명령

'cat' 명령은 가장 널리 사용되는 범용 도구입니다. 표준 입력을 표준 출력으로 복사합니다. 텍스트 파일이 현재 화면에 맞지 않는 경우 이 명령은 스크롤을 지원합니다.

cat 명령의 기본 구문은 다음과 같습니다.

cat [options] [filenames] [-] [filenames]

cat의 가장 빈번한 사용은 파일의 내용을 읽는 것입니다. 읽기 위해 파일을 여는 데 필요한 것은 cat을 입력하고 그 뒤에 공백과 파일 이름을 입력하는 것뿐입니다.

cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

cat 명령은 여러 파일을 함께 연결하는 데에도 사용됩니다.

echo 'Hi Tecmint-Team' > 1 
echo 'Keep connected' > 2 
echo 'Share your thought' > 3 
echo 'connect us [email ' > 4
cat 1 2 3 4 > 5
cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email 

파일을 생성하는데도 사용할 수 있습니다. cat을 실행하고 출력 리디렉션 연산자와 생성할 파일 이름을 입력하면 됩니다.

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

'cat' 명령에 대한 사용자 정의 엔드 메이커를 가질 수 있습니다. 여기에서는 구현됩니다.

cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

파일 복사에 유용할 수 있는 'cat' 명령의 강력한 기능을 절대 과소평가하지 마세요.

cat avi.txt

I am a Programmer by birth and Admin by profession
cat avi.txt > avi1.txt
cat avi1.txt

I am a Programmer by birth and Admin by profession

이제 고양이의 반대는 무엇입니까? 네, ''이에요. 'tac'은 Linux에서 사용되는 명령입니다. 'tac'에 대해 이야기하는 것보다 'tac'의 예를 보여주는 것이 좋습니다.

한 줄에 한 단어가 나타나도록 모든 달의 이름이 포함된 텍스트 파일을 만듭니다.

cat month

January
February
March
April
May
June
July
August
September
October
November
December
tac month

December
November
October
September
August
July
June
May
April
March
February
January

cat 명령 사용법의 더 많은 예는 13 cat 명령 사용법을 참조하십시오.

지금은 여기까지입니다. 나는 알 가치가 있는 또 다른 흥미로운 기사를 가지고 다시 여기에 올 것입니다. 그때까지 Tecmint에 계속 관심을 갖고 연결해 주세요. 의견 섹션에 귀중한 피드백을 제공하는 것을 잊지 마십시오.