1、查看文件内容
对于一个文本格式的配置文件,可以利用不同的查看方式来获知文件内容,如直接显示整个文件内容.分页查看文件内容,或者只查看文件开头或末尾的部分内容。在Linux操作系统中,分别由不同的命令来实现这些操作.
1.1、cat命令——显示并连接( Concatenate)文件的内容
cat命令本来用于连接(Concatenate)多个文件的内容,但在实际使用中更多地用于查看文件内容,cat命令是应用最为广泛的文件内容查看命令.使用该命令时,只需要把要查看的文件路径作为参数即可。例如,以下操作就可以查看/etc/sysconfig/netwark一scripts/ifcfg-ens33配置文件中的内容.并了解第一块以太网卡的配置信息。
[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b0e6fa3a-6cff-4b0d-b010-efbae499e2db
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.8.11
PREFIX=24
GATEWAY=192.168.8.2
DNS1=202.96.128.86
DNS2=119.29.29.29
IPV6_PRIVACY=no
如果需要同时查看多个文件的内容,可以添加多个文件路径作为查看对象,例如,以下操作将依次显示/etc/redhat—release、/proc/version文件的内容,前者记录了CnetOS系统的发行版本信息.后者记录了系统内核及开发环境、时间等信息,
[root@node1 ~]# cat /etc/redhat-release /proc/version
CentOS Linux release 7.6.1810 (Core)
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
1.2、more和less命令——分页查看文件内容
使用cat命令可以非常简单地直接显示整个文件的内容,但是当文件中的内容较多时,很可能只能看到最后一部分信息,文件前面的大部分内容都来不及看到。而more和less 命令通过采用全屏的方式分页显示文件.便于我们从头到尾仔细地阅读文件内容。
more命令是较早出现的分页显示命令,表示文件内容还有更多(mare)的意思,less 命令是较晚出现的分页显示命令.提供了比早期mare命令更多的一些扩展功能,两个命令的用法基本相同,
使用more命令查看超过一屏的文件内容时,将进行分屏显示.并在左下角显示当前内容在整个文件中的百分比。在阅读界面中,可以按Enter键向下逐行滚动查看,按Space可以向下翻一屏,按b键向上翻一屏.按q键退出并返回原来的命令环境,例如,以下操作将可以分屏查看/etc/httpd/canf /httpd.conf(网站配置文件)文件的内容。
[root@node1 ~]# more /etc/httpd/conf/httpd.conf
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
...省略...
more命令除了可以分屏查看文件内容以外,还可以结合管道符号”分屏查看执行命令时的输出信息,这在命令输出内容较多的情况下特别有用。例如,以下操作可以分页查看/etc/目录下扩展名为” . conf”的配置文件.
[root@node1 ~]# ls -lh /etc/*.conf | more
-rw-r--r--. 1 root root 55 10月 30 2018 /etc/asound.conf
-rw-r--r--. 1 root root 15K 10月 31 2018 /etc/autofs.conf
-rw-------. 1 root root 232 10月 31 2018 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root 22K 4月 11 2018 /etc/brltty.conf
...省略...
less命令使用方法与more命令基本类似,但是比more更好的是,less 命令结合管道符号分屏查看执行命令时输出的信息时,既可以向下翻页.也可以向上翻页。而mmore命令只能向下翻页.不能向上翻页。
1.3、head 和 tail命令——查看文件开头或末尾的部分内容
head 和 tail是一对作用相反的命令.前者用于显示文件开头的一部分内容,后者用于显示文件末尾的一部分内容,可以使用“--n”选项(n为具体的行数)指定需要显示多少行的内容,若不指定行数.默认只显示十行.
执行“head -4 /etc/passwd”命令,可以查看用户账号文件/etc/passwd 开头第--行至第四行的部分内容.
[root@node1 ~]# head -4 /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
tail命令则正好相反,用于查看文件末尾的内容,tail 命令通常用于查看系统日志(因为较新的日志记录总是添加到文件最后),以便观察网络访问.服务调试等相关信息。配合“~-f”选项使用时,还可以跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化。例如.以下操作可以查看系统公共日志文件/var/ log/messages的最后十行内容,并在末尾跟踪显示该文件中新记录的内容(按Ctrl+C组合键终止).
[root@node1 ~]# tail -f /var/log/messages
Jun 4 10:52:37 node1 chronyd[6174]: Selected source 119.28.206.193
Jun 4 10:53:26 node1 systemd: Created slice User Slice of root.
Jun 4 10:53:26 node1 systemd: Started Session 1 of user root.
Jun 4 10:53:26 node1 systemd-logind: New session 1 of user root.
Jun 4 10:53:26 node1 dbus[6094]: [system] Activating service name='org.freedesktop.problems' (using servicehelper)
Jun 4 10:53:26 node1 dbus[6094]: [system] Successfully activated service 'org.freedesktop.problems'
Jun 4 10:54:38 node1 chronyd[6174]: Selected source 193.182.111.142
Jun 4 10:54:54 node1 chronyd[6174]: Source 162.159.200.1 replaced with 111.230.189.174
Jun 4 10:56:56 node1 chronyd[6174]: Selected source 119.28.206.193
Jun 4 11:00:01 node1 systemd: Started Session 2 of user root.
2、统计和检索文件内容
在维护Linux操作系统的过程中,除了查看文件内容以外,有时还需要对文件内容进行统计.或者查找符合条件的文本内容,下面将学习统计和检索文件内容的两个命令工具。
2.1、wc命令——统计文件内客中的单词数量( Word Count)、行数等信息
wc命令用于统计文件内容中包含的行数.单词数量.字节数等信息.使用文件名作为参数,可以同时统计多个文件.较常用的选项如下所述。
- -c:统计文件内容中的字节数.
- -l:统计文件内容中的行数。
- -w:统计文件内容中的单词个数〈以空格或制表位作为分隔).
当文件的行数.单词数或字节数具有特定的意义时,使用wc命令可以巧妙地获得一些特殊信息。例如,Lirux操作系统中的用户账号数据保存在/etc/passwd文件中,其中每一行记录对应一个用户,则以下操作可以统计出当前Linux操作系统中拥有的用户账号数量.具体操作如下:
[root@node1 ~]# wc -l /etc/passwd
45 /etc/passwd
若将wc命令与管道符号一起使用,还可以对命令输出结果进行统计。例如,若要统计/etc/目录下共包含多少个扩展名为“.conf”的文件,可以先通过“find /etc --nane “e . conf"”命令找出符合条件的文件位置,由于find 命令的输出结果也是每行一个文件记录,因此只需结合管道符号执行“wc -l”操作即可得出符合条件的文件数量,具体操作如下;
[root@node1 ~]# find /etc -name "*.conf" | wc -l
461
使用不带任何选项的 wc命令时,默认将统计指定文件的字节数、行数、单词个数(相当于同时使用“-c”“-I”“-w”三个选项)。例如,以下操作统计出/etc/hosts文件中共包含2行.10个单词.158字节的内容,然后通过“cat /etc/hosts”命令列出文件内容,可核对统计结果是否正确.
[root@node1 ~]# wc /etc/hosts
2 10 158 /etc/hosts
2.2、grep命令——检索、过滤文件内容
grep命令用于在文件中查找并显示包含指定字符串的行.可以直接指定关键字符串作为查找条件,也可以使用复杂的条件表达式〔例如,“^word”表示以word开头."words”表示以ward结尾.“~$”表示空行}.使用grep命令的基本格式如下,
grep [选项]... 查找条件 目标文件
grep命令较常用到的几个选项如下.
- -i:查找内容时忽略大小写( lgnore Case).
- -v:反转查找(trvert),即输出与查找条件不相符的行.
例如,执行“grep "ftp" /etc/passwd”命令.可以在账号文件/etc/passwd中查找包含“ftp”字符串的行.实际上输出了名为ftp的用户账号的信息.具体操作如下:
[root@node1 ~]# grep "ftp" /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
在维护Linux操作系统的过程中,经常会遇到包含大量内容的配置文件,而其中往往包含了许多空行和以“#”开头的注释文字,当只需要分析其中的有效配置信息时,这些空行和注释文字的存在不利于快速浏览.使用grep命令可以过滤掉这些无关信息。例如,以下操作可以显示/etc/yumn,coni文件中以“#”开头的行和空行以外的内容.
[root@node1 ~]# grep -v "^#" /etc/yum.conf | grep -v "^$"
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release