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 第2章 新手必须掌握的 Linux 命令 --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) 2.6 文本文件编辑命令 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 第2章 @GNOME-DESKTOP @GUEST-AGENTS @GUEST-DESKTOP-AGENTS @INPUT-METHODS @INTERNET-BROWSER @MULTIMEDIA @PRINT-CLIENT @X11 %END 6.wc 命令 wc 命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。 每次我在课堂上讲到这个命令时,总有同学会联想到一种公共设施,其实这两者毫无关联。Linux 系统中的wc 命令用于统计文本的行数、字数、字节数等。如果为了方便自己记住这个命令的作用, 也可以联想到上厕所时好无聊,无聊到数完了手中的如厕读物上有多少行字。 在 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 bject_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: - 2.6 文本文件编辑命令 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 第2章 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 |