centos7 文本文件编辑命令

  通过前面几个小节的学习,读者应该基本掌握了切换工作目录及对文件的管理方法。Linux系统中“一切都是文件”,而对服务程序进行配置自然也就是编辑程序的配置文件。如果不能熟练地查阅系统或服务的配置文件,那以后工作时可就真的要尴尬了。本节将讲解几条用于查看文本文件内容的命令。至于编辑器使用起来比较复杂,因此将放到第4章与Shell脚本内容一起讲解。

  1.cat命令

  cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。

  Linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件的。cat这个命令也很好记,因为cat在英语中是“猫”的意思,小猫咪是不是给您一种娇小、可爱的感觉呢?

  如果在查看文本内容时还想顺便显示行号的话,不妨在cat命令后面追加一个-n参数:

  [root@linuxprobe ~]# cat -n initial-setup-ks.cfg

  1    #version=RHEL7

  2    # X Window System configuration information

  3    xconfig  --startxonboot

  4

  5    # License agreement

  6    eula --agreed

  7    # System authorization information

  8    auth --enableshadow --passalgo=sha512

  9    # Use CDROM installation media

  10    cdrom

  11    # Run the Setup Agent on first boot

  12    firstboot --enable

  13    # Keyboard layouts

  14    keyboard --vckeymap=us --xlayouts='us'

  15    # System language

  16    lang en_US.UTF-8

  ………………省略部分输出信息………………

  2.more命令

  more命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。

  如果需要阅读长篇小说或者非常长的配置文件,那么“小猫咪”可就真的不适合了。因为一旦使用cat命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用more命令来查看。more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容。您还可以使用空格键或回车键向下翻页:

  [root@linuxprobe ~]# more initial-setup-ks.cfg

  #version=RHEL7

  # X Window System configuration information

  xconfig  --startxonboot

  # License agreement

  eula --agreed

  # System authorization information

  auth --enableshadow --passalgo=sha512

  # Use CDROM installation media

  cdrom

  # Run the Setup Agent on first boot

  firstboot --enable

  # Keyboard layouts

  keyboard --vckeymap=us --xlayouts='us'

  # System language

  lang en_US.UTF-8

  ignoredisk --only-use=sda

  # Network information

  network  --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto

  network  --bootproto=dhcp --hostname=linuxprobe.com

  --More--(43%)

  3.head命令

  head命令用于查看纯文本文档的前N行,格式为“head [选项] [文件]”。

  在阅读文本内容时,谁也难以保证会按照从头到尾的顺序往下看完整个文件。如果只想查看文本中前20行的内容,该怎么办呢?head命令可以派上用场了:

  [root@linuxprobe ~]# head -n 20 initial-setup-ks.cfg

  #version=RHEL7

  # X Window System configuration information

  xconfig  --startxonboot

  # License agreement

  eula --agreed

  # System authorization information

  auth --enableshadow --passalgo=sha512

  # Use CDROM installation media

  cdrom

  # Run the Setup Agent on first boot

  firstboot --enable

  # Keyboard layouts

  keyboard --vckeymap=us --xlayouts='us'

  # System language

  lang en_US.UTF-8

  ignoredisk --only-use=sda

  # Network information

  network  --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto

  [root@linuxprobe ~]#

  4.tail命令

  tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] [文件]”。

  我们可能还会遇到另外一种情况,比如需要查看文本内容的最后20行,这时就需要用到tail命令了。tail命令的操作方法与head命令非常相似,只需要执行“tail -n 20 文件名”命令就可以达到这样的效果。tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名”:

  [root@linuxprobe ~]# tail -f /var/log/messages

  May  4 07:56:38 localhost gnome-session: Window manager warning: Log level 16:

  STACK_OP_ADD: window 0x1e00001 already in stack

  May  4 07:56:38 localhost gnome-session: Window manager warning: Log level 16:

  STACK_OP_ADD: window 0x1e00001 already in stack

  May  4 07:56:38  localhost  vmusr[12982]: [ warning] [Gtk] gtk_disable_setlocale()

  must be called before gtk_init()

  May  4 07:56:50 localhost systemd-logind: Removed session c1.

  Aug  1 01:05:31 localhost systemd: Time has been changed

  Aug  1 01:05:31 localhost systemd: Started LSB: Bring up/down networking.

  Aug  1 01:08:56 localhost dbus-daemon: dbus[1124]: [system] Activating service

  name='com.redhat.SubscriptionManager' (using servicehelper)

  Aug  1 01:08:56 localhost dbus[1124]: [system] Activating service name='com.

  redhat.SubscriptionManager' (using servicehelper)

  Aug  1 01:08:57 localhost dbus-daemon: dbus[1124]: [system] Successfully activated

  service 'com.redhat.SubscriptionManager'

  Aug  1 01:08:57 localhost dbus[1124]: [system] Successfully activated service '

  com.redhat.SubscriptionManager'

  5.tr命令

  tr命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。

  在很多时候,我们想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用cat命令读取待处理的文本,然后通过管道符(详见第3章)把这些文本内容传递给tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写:

  [root@linuxprobe ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]

  #VERSION=RHEL7

  # SYSTEM AUTHORIZATION INFORMATION

  AUTH --ENABLESHADOW --PASSALGO=SHA512

  # USE CDROM INSTALLATION MEDIA

  CDROM

  # RUN THE SETUP AGENT ON FIRST BOOT

  FIRSTBOOT --ENABLE

  IGNOREDISK --ONLY-USE=SDA

  # KEYBOARD LAYOUTS

  KEYBOARD --VCKEYMAP=US --XLAYOUTS='US'

  # SYSTEM LANGUAGE

  LANG EN_US.UTF-8

  # NETWORK INFORMATION

  NETWORK --BOOTPROTO=DHCP --DEVICE=ENO16777728 --ONBOOT=OFF --IPV6=AUTO

  NETWORK --HOSTNAME=LOCALHOST.LOCALDOMAIN

  # ROOT PASSWORD

  ROOTPW --ISCRYPTED $6$PDJJF42G8C6PL069$II.PX/YFAQPO0ENW2PA7MOMKJLYOAE2ZJMZ2UZJ7

  BH3UO4OWTR1.WK/HXZ3XIGMZGJPCS/MGPYSSOI8HPCT8B/

  # SYSTEM TIMEZONE

  TIMEZONE AMERICA/NEW_YORK --ISUTC

  USER --NAME=LINUXPROBE --PASSWORD=$6$A9V3INSTNBWEIR7D$JEGFYWBCDOOOKJ9SODECCDO.

  ZLF4OSH2AZ2SS2R05B6LZ2A0V2K.RJWSBALL2FEKQVGF640OA/TOK6J.7GUTO/ --ISCRYPTED --

  GECOS="LINUXPROBE"

  # X WINDOW SYSTEM CONFIGURATION INFORMATION

  XCONFIG --STARTXONBOOT

  # SYSTEM BOOTLOADER CONFIGURATION

  BOOTLOADER --LOCATION=MBR --BOOT-DRIVE=SDA

  AUTOPART --TYPE=LVM

  # PARTITION CLEARING INFORMATION

  CLEARPART --NONE --INITLABEL

  %PACKAGES

  @BASE

  @CORE

  @DESKTOP-DEBUGGING

  @DIAL-UP

  @FONTS

  @GNOME-DESKTOP

  @GUEST-AGENTS

  @GUEST-DESKTOP-AGENTS

  @INPUT-METHODS

  @INTERNET-BROWSER

  @MULTIMEDIA

  @PRINT-CLIENT

  @X11

  %END

  6.wc命令

  wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。

  每次我在课堂上讲到这个命令时,总有同学会联想到一种公共设施,其实这两者毫无关联。Linux系统中的wc命令用于统计文本的行数、字数、字节数等。如果为了方便自己记住这个命令的作用,也可以联想到上厕所时好无聊,无聊到数完了手中的如厕读物上有多少行字。

  wc的参数以及相应的作用如表2-10所示。

  表2-10wc的参数以及作用

  参数作用

  -l只显示行数

  -w只显示单词数

  -c只显示字节数

  在Linux系统中,passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询,是不是很神奇:

  [root@linuxprobe ~]# wc -l /etc/passwd

  38 /etc/passwd

  7.stat命令

  stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。

  stat命令可以用于查看文件的存储信息和时间等信息,命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:

  [root@linuxprobe ~]# stat anaconda-ks.cfg

  File: ‘anaconda-ks.cfg’

  Size: 1213 Blocks: 8 IO Block: 4096 regular file

  Device: fd00h/64768d Inode: 68912908 Links: 1

  Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)

  Context: system_u:object_r:admin_home_t:s0

  Access: 2017-07-14 01:46:18.721255659 -0400

  Modify: 2017-05-04 15:44:36.916027026 -0400

  Change: 2017-05-04 15:44:36.916027026 -0400

  Birth: -

  8.cut命令

  cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。

  在Linux系统中,如何准确地提取出最想要的数据,这也是我们应该重点学习的内容。一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

  [root@linuxprobe ~]# head -n 2 /etc/passwd

  root:x:0:0:root:/root:/bin/bash

  bin:x:1:1:bin:/bin:/sbin/nologin

  [root@linuxprobe ~]# cut -d: -f1 /etc/passwd

  root

  bin

  daemon

  adm

  lp

  sync

  shutdown

  halt

  mail

  operator

  games

  ftp

  nobody

  dbus

  polkitd

  unbound

  colord

  usbmuxd

  avahi

  avahi-autoipd

  libstoragemgmt

  saslauth

  qemu

  rpc

  rpcuser

  nfsnobody

  rtkit

  radvd

  ntp

  chrony

  abrt

  pulse

  gdm

  gnome-initial-setup

  postfix

  sshd

  tcpdump

  linuxprobe

  9.diff命令

  diff命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。

  在使用diff命令时,不仅可以使用--brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如,先使用cat命令分别查看diff_A.txt和diff_B.txt文件的内容,然后进行比较:

  [root@linuxprobe ~]# cat diff_A.txt

  Welcome to linuxprobe.com

  Red Hat certified

  Free Linux Lessons

  Professional guidance

  Linux Course

  [root@linuxprobe ~]# cat diff_B.txt

  Welcome tooo linuxprobe.com

  Red Hat certified

  Free Linux LeSSonS

  ////////.....////////

  Professional guidance

  Linux Course

  接下来使用diff --brief命令显示比较后的结果,判断文件是否相同:

  [root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt

  Files diff_A.txt and diff_B.txt differ

  最后使用带有-c参数的diff命令来描述文件内容具体的不同:

  [root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt

  *** diff_A.txt 2017-08-30 18:07:45.230864626 +0800

  --- diff_B.txt 2017-08-30 18:08:52.203860389 +0800

  ***************

  *** 1,5 ****

  ! Welcome to linuxprobe.com

  Red Hat certified

  ! Free Linux Lessons

  Professional guidance

  Linux Course

  --- 1,7 ----

  ! Welcome tooo linuxprobe.com

  !

  Red Hat certified

  ! Free Linux LeSSonS

  ! ////////.....////////

  Professional guidance

  Linux Course

你可能感兴趣的:(centos7 文本文件编辑命令)