这儿有几个命令和程序用于查看文件内容在Linux上。
工作中使用文件是艰巨的任务之一,大多数的计算机用户无论是新手、普通用户、高级用户、开发人员或者管理员等等。工作中使用文件能有效和高效都是一门技术!
今天,这篇文章我们就将讨论最受欢迎的命令:head、tail、cat。
我们大多数已经用到过这些命令了,但是,当我们使用它们的时候却很少使它们很有效。
1.head命令
这个head命令能够查看所给任何文件的头十行,基本的语法是:
head [options] [file(s)]
例如,下面这个命令将显示'/etc/passwd'文件的头十行.
[root@taoteng ~]# head /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
如果给定多个文件的话,head命令将会分开显示每个文件的头十行,例如,下面的命令将会分开显示每个文件的前十行:
[root@taoteng ~]# 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$KRjRBRefgWtx8eNP$xWrfedJsYdhyt0FnA1P4VHe8neGza4SLpHeXlk7Ys3G.EAzeCL4PqVe61FHDDLeY6B1Yg.je1HEHY3ri43Sx90:16120:0:99999:7:::
bin:*:15240:0:99999:7:::
daemon:*:15240:0:99999:7:::
adm:*:15240:0:99999:7:::
lp:*:15240:0:99999:7:::
sync:*:15240:0:99999:7:::
shutdown:*:15240:0:99999:7:::
halt:*:15240:0:99999:7:::
mail:*:15240:0:99999:7:::
uucp:*:15240:0:99999:7:::
如果希望检索比默认十行多/少呢,则可使用"-n"参数,以及告知一个整数来检索行数,例如,下面的命令将显示"/var/log/yum.log"文件的前5行:
[root@taoteng ~]# head -n5 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i686
Feb 20 19:57:01 Installed: hesiod-3.1.0-19.el6.i686
Feb 20 19:57:07 Installed: procmail-3.22-25.1.el6.i686
Feb 20 19:59:22 Installed: sendmail-8.14.4-8.el6.i686
Feb 20 22:21:37 Installed: mailcap-2.1.31-2.el6.noarch
事实上,可以不必加入"-n"参数,仅用连字符和指定一个整数(不能有空格)就能得到相同的结果和上面命令:
[root@taoteng ~]# head -5 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i686
Feb 20 19:57:01 Installed: hesiod-3.1.0-19.el6.i686
Feb 20 19:57:07 Installed: procmail-3.22-25.1.el6.i686
Feb 20 19:59:22 Installed: sendmail-8.14.4-8.el6.i686
Feb 20 22:21:37 Installed: mailcap-2.1.31-2.el6.noarch
这个head也能够显示任何想要的字节数通过使用“-c”参数,例如,下面命令将显示前45个字节:
[root@taoteng ~]# head -c45 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i
2.tail 命令
这个tail命令允许你去显示一个文档的最后十行。同上面的命令很相似,tail也支持"-n"参数和"-c"参数:
基本的语法是:
# tail [options] [filename]
例如,下面的命令将显示文件"anaconda.log"的后十行:
[root@taoteng ~]# tail /var/log/a
anaconda.ifcfg.log anaconda.storage.log anaconda.yum.log
anaconda.log anaconda.syslog audit/
anaconda.program.log anaconda.xlog
[root@taoteng ~]# tail /var/log/anaconda.log
08:49:23,479 DEBUG : writeksconfig is a direct step
08:49:23,481 INFO : Writing autokickstart file
08:49:25,295 INFO : leaving (1) step writeksconfig
08:49:25,296 INFO : moving (1) to step setfilecon
08:49:25,296 DEBUG : setfilecon is a direct step
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
如果提供多个文件,tail也将会分开显示每个文件的后十行:
[root@taoteng ~]# tail /var/log/anaconda.log /var/log/anaconda.syslog
==> /var/log/anaconda.log <==
08:49:23,479 DEBUG : writeksconfig is a direct step
08:49:23,481 INFO : Writing autokickstart file
08:49:25,295 INFO : leaving (1) step writeksconfig
08:49:25,296 INFO : moving (1) to step setfilecon
08:49:25,296 DEBUG : setfilecon is a direct step
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
==> /var/log/anaconda.syslog <==
00:06:20,507 INFO kernel:EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts:
00:06:20,510 DEBUG kernel:SELinux: initialized (dev sda5, type ext4), uses xattr
00:06:21,062 INFO kernel:EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts:
00:06:21,062 DEBUG kernel:SELinux: initialized (dev sda3, type ext4), uses xattr
00:06:21,429 INFO kernel:EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts:
00:06:21,429 DEBUG kernel:SELinux: initialized (dev sda2, type ext4), uses xattr
00:41:20,368 DEBUG kernel:SELinux: 2048 avtab hash slots, 225596 rules.
00:41:20,530 DEBUG kernel:SELinux: 2048 avtab hash slots, 225596 rules.
00:41:21,620 DEBUG kernel:SELinux: 9 users, 12 roles, 3576 types, 179 bools, 1 sens, 1024 cats
00:41:21,620 DEBUG kernel:SELinux: 81 classes, 225596 rules
相应的,你也可以打印文件的后几行使用"-n"参数:
[root@taoteng ~]# tail -5 /var/log/anaconda.log
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
你也可以使用"-c"参数显示文件的后N个字节:
[root@taoteng ~]# tail -c50 /var/log/anaconda.log
step
08:49:56,256 INFO : Copying anaconda logs
3.cat 命令
这个"cat"命令是使用最广泛、最通用的工具。它拷贝标准输入到标准输出,这个命令也支持滚屏如果文本文档不在当前屏幕。
cat的基本的语法是:
# cat [options] [filename] [-] [filename]
cat使用最频繁是查看一个文件的内容,所有这一切都要求打开一个文件去读是cat之后加空格和文件名
[root@taoteng ~]# cat /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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
...
cat命令也可以使文件数连在一起:
# echo 'Hi Tecmint-Team' > 1
# echo 'Keep connected' > 2
# echo 'Share your thought' > 3
# echo 'connect us tecmint.com@gmail.com' > 4
# cat 1 2 3 4 > 5
# cat 5
Hi Tecmint-Team
Keep connected
Share your thought
connect us tecmint.com@gmail.com
它也可以用来创建的文件。它是通过执行cat其次是输出重定向操作符和要创建的文件名来实现。
[root@taoteng ~]# cat > test.cat
This is a test file cat command
Create a folder test
我们也可以对cat自定义end表示,下面就是它的实现:
[root@taoteng ~]# cat > test.cat.end << end
> This is a test file cat command
> I am Avishek
> Here i am writing this post
> end
[root@taoteng ~]# cat test.cat.end
I am Avishek
Here i am writing this post
永远不要低估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
相对cat的命令是什么呢?对!!它就是"tac"也是Linux下面的一个命令,说任何事情不如展现它的功能更好。
创建一个有关所有月份的文件"month",每个月份都占用一行:
[root@taoteng ~]# cat month
January
February
March
April
May
June
July
August
September
October
November
December
对比更明显:
[root@taoteng ~]# cat month && tac month
January
February
March
April
May
June
July
August
September
October
November
December
December
November
October
September
August
July
June
May
April
March
February
January
想了解更多cat命令的用法,请点击:13 cat Command Usage
现在就这些,我也正在研究另一个有趣的文章,至此敬请关注!!