#6.对文件内容操作的命令

对文件内容进行操作的命令


​ 上一篇博客介绍的是对文件夹操作的命令,这篇介绍一下对文件内容操作的命令。在 Linux中大部分都是文本文件,系统中提供了多个文件内容查看命令,以满足用户在不同情形下查看文本文件内容的要求。另外,通过grep命令还可以在某个文本文件中找到需要的某部分内容。

1. cat命令——显示文本文件内容

cat(concatenate)命令本来用于连接多个文件的内容,但在实际使用中更多的用于查看文本文件内容。**注意:cat后面不能加目录,只能加文本文件。**cat是应用最为广泛的文本文件内容查看命令,其语法格式为:

cat [选项] 文件名
操作功能
cat 文件名查看该文件的文件内容
cat -n 文件名给显示的内容加上行号
[root@localhost ~]# uname
Linux
[root@localhost ~]# uname -a	#结果中的3.10.0为内核版本
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

PS: cat命令有个缺陷,就是当显示的文本内容很多时,cat也是全部显示,用户看起来就很麻烦,因此引入more命令。

2. more命令——可换屏/换行的显示文本文件内容

对于很多行的文本文件,用cat命令显示出的内容用于逐行看会很麻烦,因此more命令可以让文件翻页显示或逐行显示。只要内容满一屏,显示自动暂停,按空格键继续显示下一页面;按回车键逐行显示;按q键跳离,适用于阅读长文件。其语法格式为:

more [选项] 文件名

3. less命令——可换屏/换行的显示文本文件内容

less命令和more命令使用功能基本一致,但less命令可以上下翻页,而more命令只能向下翻页。less命令不会自动退出,需要使用q键退出,而less命令可自动退出。

4. head和tail命令——查看文件开头或末尾的部分内容

head和tail命令用于显示文件的局部内容,默认情况下,head显示前10行的内容,tail显示后10行的内容。其语法格式为:

head [选项] 文件名
tail [选项] 文件名
操作功能
head 文件名显示文件的前10行
head -n 文件名显示文件的前n行
tail 文件名显示文件的后10行
tail -n 文件名显示文件的后n行
tail -f 文件名实时显示文件最后面增量内容
[root@localhost ~]# tail -5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tuqiuping:x:1000:1000:tuqiuping:/home/tuqiuping:/bin/bash
zj:x:1001:1001::/home/zj:/bin/bash

PS: tail -f命令主要是为了查看"/var/log/messages"下的内容

5. wc命令——文件内容统计

wc(word count)命令用于统计指定文件中的行数、单词数、字符数。

操作功能
wc 文件名统计指定文件中的行数、单词数、字符数
wc -l 文件名只显示文件的行数
[root@localhost ~]# wc /etc/passwd
  44   88 2309 /etc/passwd
[root@localhost ~]# wc -l /etc/passwd
44 /etc/passwd

6. echo命令——将引号内容输出或者写入至文本文件

echo命令通常用于输出指定的字符串或者是变量的值。

操作功能
echo ‘内容’在屏幕上输出内容
echo ‘内容’ > 文本文件名将内容写入至文本文件(覆盖形式写入)
echo ‘内容’ > > 文本文件名将内容追加保存到文件中(末端添加形式写入)
echo $变量名查看变量的内容
[root@localhost ~]# echo 'hello world!'
hello world!
[root@localhost ~]# echo 'hello world' > a.txt
[root@localhost ~]# cat a.txt
hello world
[root@localhost ~]# a=123
[root@localhost ~]# echo $a
123
[root@localhost ~]# b='students'
[root@localhost ~]# echo $b
students
[root@localhost ~]# c=456
[root@localhost ~]# echo $[$a+$c]
579

7. grep命令——查找文件内容

grep命令用于查找并显示文本文件中指定字符串的所有行,通过改命令,可以从杂乱的信息找到所需要的部分。语法格式为:

grep [选项] 查找条件 目标文件

PS: grep命令不支持通配符,而是支持正则表达式。例如符号"^“表示以什么字符开头,符号”$"表示以什么字符结尾。一般查找条件中不含符号时可以不加引号,但是有符号时必须加上引号

操作功能
grep -n 查找条件 目标文件输出符合查找条件的行,及其行号
grep -v 查找条件 目标文件找出不含查找条件的行
grep “^$” 目标文件查找目标文件的空白行
grep -i 查找条件 目标文件查找时忽略大小写
grep -w 查找条件 目标文件精确匹配单词
grep -r 查找条件 目标文件递归查找,查找指定目录及其子目录的所有文件中指定的关键字
[root@localhost ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
tuqiuping:x:1000:1000:tuqiuping:/home/tuqiuping:/bin/bash
zj:x:1001:1001::/home/zj:/bin/bash
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -v root /etc/passwd
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
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
chrony:x:993:988::/var/lib/chrony:/sbin/nologin
unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
gluster:x:990:984:GlusterFS daemons:/run/gluster:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tuqiuping:x:1000:1000:tuqiuping:/home/tuqiuping:/bin/bash
zj:x:1001:1001::/home/zj:/bin/bash
[root@localhost ~]# echo "the num is 10" > test.txt
[root@localhost ~]# echo "number" >> test.txt
[root@localhost ~]# grep num test.txt
the num is 10
number
[root@localhost ~]# grep -w num test.txt
the num is 10
[root@localhost ~]# grep -r pass /etc/ssh
/etc/ssh/sshd_config:# To disable tunneled clear text passwords, change to no here!
/etc/ssh/sshd_config:# Change to no to disable s/key passwords
/etc/ssh/sshd_config:# PAM authentication via ChallengeResponseAuthentication may bypass
/etc/ssh/sshd_config:# the setting of "PermitRootLogin without-password".

8. diff命令——文件内容对比

diff命令用于比较多个文本之间的差异,这在系统安全防范中极为重要。语法格式为:

diff 文件1 文件2
[root@localhost ~]# cp .bashrc .bashrc.bak
[root@localhost ~]# ls -a
.                .bash_profile  .esd_auth             .tcshrc       视频
..               .bashrc        .ICEauthority         test          图片
aaa.txt          .bashrc.bak    initial-setup-ks.cfg  test1         文档
anaconda-ks.cfg  .cache         inittab.bak           test.txt      下载
a.txt            .config        .local                .xauthDqXb3t  音乐
.bash_history    .cshrc         .mozilla              公共          桌面
.bash_logout     .dbus          rc.d                  模板
[root@localhost ~]# diff .bashrc .bashrc.bak
[root@localhost ~]# echo "hello" >> .bashrc.bak
[root@localhost ~]# diff .bashrc .bashrc.bak
12a13
> hello

PS:显示结果中,字母"a"、“d”、“c"分别表示添加、删除及修改操作。其中,以”<“开始的行属于文件1,以”>"开始的行属于文件2。所以以上结果就表示.bashrc的12行增加了,增加内容为hello

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值