cat和echo命令的使用频率非常高,但有一点需要注意,这两个命令通常是需要结合管道符配合其它的命令才可以体现出这两个命令的强大的哦,说通俗点,也就是这两个命令是基础的命令,并且具有极高的扩展性。
一,cat 命令
cat命令是查看文本文档的命令,这里需要啰嗦一下啦,请注意是文本文档,如果你想使用cat命令打开二进制文件,那么,不好意思,会是乱码哦。二进制文件的查看通常是反编译或者使用strings命令查看二进制文件的某些细节。
cat命令的用途:查看各类配置文件,日志文件获取到有用的信息,通过管道符,将原有文本文件或者新文本内容追加,在脚本内生成指定的配置文件。
如果是单独使用cat命令,那么,我们通常将该命令用在查看某些配置文件,某些服务的日志方面。而对于日志文件,有些时候会是十分巨大的文本文件,如果直接使用cat命令并不是一个好的主意(cat命令逐行读取文件并打印在屏幕上,文件如果很大,会耗费非常多的时间,并且对CPU等硬件也是一个考验啦,因此,大文件的查看通常并不是cat命令而是tail命令哦)。
小结:
别嫌弃我啰嗦,这里做一个简单总结,1,cat命令只是看文本文档文件的命令,二进制文件对于cat命令并不适用(会造成乱码)。
2,cat命令并不适合查看大的文本文件,比如,超过200M大小的日志文件(打开文件会需要非常多的时间,对CPU也是一个极大的考验,因此,大文件的查看通常是用tail 查看最后几行,大概看看得了)
cat命令和管道符的联合应用:
(1)重定向符 > 和>>联合结束分解符EOF(EOF是结束分解符,可以自定义)将全部或者部分文档写入指定文件。例如:
[root@gsenterprise ~]# cat >aaa <<EOF
> wo ai beijing
> beijing bu ai wo
> EOF
[root@gsenterprise ~]# cat aaa
wo ai beijing
beijing bu ai wo
新建一个文本文件名称为aaa,将wo ai beijing beijing bu ai 我 写在这个文件内。如果重定向符更改为 >> 那么,在执行上次的两行内容会保留。
[root@gsenterprise ~]# cat >>aaa <<EOF
wo ai beijing
beijing bu ai wo
EOF
[root@gsenterprise ~]# cat aaa
wo ai beijing
beijing bu ai wo
wo ai beijing
beijing bu ai wo
这一使用方式通常用在脚本内,自动生成配置文件而使用的,比如,某些服务的自启脚本,可以写在安装部署脚本内,通过cat 重定向自动生成。
[root@gsenterprise ~]# cat <<AAAA >aaa
> bbbbdsfdsfsd
> dsfdsfewwerf
> dwfwefew
> AAAA
[root@gsenterprise ~]# cat > aaa <<BBBB
> 123213213
> 1234325325
> 12443434343434343454
> BBBB
[root@gsenterprise ~]# cat aaa
123213213
1234325325
12443434343434343454
注意,一定要注意,EOF只是约定俗成,可以任意自定义的哦,比如,我可以定义AAAA,也可以定义成BBBB,也可以是小写,这些都无所谓,但最好定义成你自己明白的东西,并且必须是一对的。
(2)通过>或者>> 合并文件
这里需要明确一点,任意的文件都可以合并,即使cat后内容我们并不认识,但不影响我们合并文件(虽然这样很可能会无意义)。此种使用方式通常用在合并zip或者rar的分片文件合并成一个完整压缩文件时使用。例如,我在Windows下利用WinRAR切割了一个比较大的rar文件为2份,那么,cat 分文件1,分文件2>总文件。然后再rar x 总文件就可以使用啦。(>> 是覆盖重定向,>是全新重定向,这里在强调一次)
(3)脚本内的逻辑编写纽带
cat命令什么都可以看,虽然有些文件用cat后,它输出的并不是我们能理解的内容,但不影响cat命令的查看功能完成。
比如,我们需要知道现有系统到底是什么系统?
[root@gsenterprise ~]# cat /etc/os-release | grep ^PRETTY |awk -F= '{print $2}'
"CentOS Linux 7 (Core)"
小总结:
cat命令在实际工作中,主要的应用在编辑,生成配置文件,查看配置文件,通过管道符 |grep 提取关键的有用信息,合并分片文件,以及在脚本内传递参数变量这些功能,本文写的十分简单,实际的工作生产中,会由于管道符的配合加入,使得cat命令的应用极为灵活多变,本文只是讲述了一小点内容。
二,echo
echo 是一个专门输出自定义内容以及自定义和内置变量的值的命令,这么说好像有点绕口,不过有过编程学习,就会知道,这个是类似于Python,java这样的编程语言的内置函数print的简化版命令。
(1)echo 自定义内容
[root@gsenterprise ~]# echo 123abc
123abc
[root@gsenterprise ~]# echo '123 abc'
123 abc
[root@gsenterprise ~]# echo "123 {abc}"
123 {abc}
在Linux中,其实自定义内容也就是等于java的字符串,通常加单引号或者双引号,命令执行后返回字符串。在脚本编写进入调试阶段时,通常需要在脚本内echo特定内容以判定脚本是否执行正确。
(2)echo Linux内系统变量
在安装部署时,通常,echo $? 会返回上一条命令执行是否成功,通常,编译安装时,仅凭经验不好判断是否编译正确,比如,make 后,通过echo $? 如果返回数字0表示make 成功,否则失败。
未完待续~~