Linux에서 head, tail 및 cat 명령을 사용하여 효과적으로 파일 관리
파일 내용을 보기 위해 Linux에서 제공하는 여러 명령과 프로그램이 있습니다. 파일 작업은 어려운 작업 중 하나이며, 초보자, 일반 사용자, 고급 사용자, 개발자, 관리자 등 대부분의 컴퓨터 사용자가 수행합니다. 파일을 효과적이고 효율적으로 작업하는 것은 예술입니다.
오늘 이 기사에서는 head, tail 및 cat라는 가장 인기 있는 명령에 대해 논의할 것입니다. 우리 대부분은 이미 이러한 명령을 알고 있습니다. 하지만 필요할 때 이를 구현하는 사람은 거의 없습니다.
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에 계속 관심을 갖고 연결해 주세요. 의견 섹션에 귀중한 피드백을 제공하는 것을 잊지 마십시오.