- Linux管理员教程
- 首页
- CentOS概述
- 基本的CentOS Linux命令
- 文件/文件夹管理
- 用户管理
- 配额管理
- Systemd服务启动和停止
- 使用systemctl进行资源管理
- 使用cgroups进行资源管理
- 进程管理
- 防火墙设置
- 在CentOS Linux中配置PHP
- 在CentOS Linux中设置Python
- 在CentOS Linux中配置Ruby
- 为CentOS Linux设置Perl
- 安装和配置Open LDAP
- 创建SSL证书
- 安装Apache Web服务器CentOS 7
- 在CentOS 7上设置MySQL
- 设置Postfix MTA和IMAP/POP3
- 安装匿名FTP
- 远程管理
- CentOS中的流量监控
- 日志管理
- 备份和恢复
- 系统更新
- Shell脚本
- 包管理
- 卷管理
- Linux管理员有用资源
- Linux管理员 - 快速指南
- Linux管理员 - 有用资源
- Linux管理员 - 讨论
Linux管理员 - cat命令
cat命令用于连接文件并打印到标准输出。之前,我们已经演示了cat命令的使用和滥用。cat服务于以下不同的目的:
显示文件内容
将一个文件的内容写入另一个文件
将多个文件合并到一个文件中
支持特殊功能:添加行号、显示特殊字符、消除空行
开关 | 操作 |
---|---|
-b | 编号非空行 |
-E | 显示行尾 |
-T | 显示制表符 |
-s | 压缩空白,抑制重复的空行 |
如前所述,在使用grep、sort和uniq等实用程序时,我们希望尽可能避免将cat的输出通过管道传输。我们之前在简单演示管道命令时这样做了。但是,知道何时使用grep之类的实用程序执行操作才能将Linux管理员与Linux最终用户区分开来。
坏习惯
[root@centosLocal centos]# cat /etc/passwd | sort -t: -k1 | grep ":0" halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync [root@centosLocal centos]#
好习惯
[root@centosLocal centos]# grep ":0" /etc/passwd | sort -t: -k 1 halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync [root@centosLocal centos]#
注意 - 将cat通过管道传输到诸如sort或grep之类的辅助命令仅在需要时才应执行。
cat的一个常见用法是处理Windows格式的行分隔符。Linux和Windows都根据内部设计,使用不同的控制代码来表示行尾(EOL):
* Linux line break is always a Line Feed: LF or depicted as "\n". * Windows is Carriage Return followed by a Line Feed: CR LF or depicted as "\r\n". * Macintosh, in all moderne releases of OS X and now macOS, has adopted the Linux/Unix standard of LF or "\n"
因此,假设我们在像gedit这样的GUI文本编辑器中打开我们的文件,或者在应用过滤命令时遇到随机问题。文本显示在单行上,或者过滤命令无法按预期运行。
特别是当文本文件是从互联网上下载时,我们希望检查行分隔符。以下是cat显示EOL字符的示例输出。
[root@centosLocal centos]# cat -E ./Desktop/WinNames.txt $ed:Daniel:101 $enny:Colon:608 $ana:Maxwell:602 $arian:Little:903 $obbie:Chapman:403 $icolas:Singleton:203 $ale:Barton:901
注意每行前面的“$”?Linux正在读取CR“\n”,从而中断文件。然后将回车符转换到每个文件的第一个字符上。
在没有-E开关的情况下查看时,文件看起来不错:
[root@centosLocal centos]# cat ./Desktop/WinNames.txt Ted:Daniel:101 Jenny:Colon:608 Dana:Maxwell:602 Marian:Little:903 Bobbie:Chapman:403 Nicolas:Singleton:203 Dale:Barton:901
幸运的是,使用Linux过滤命令,这是一个简单的修复:
[root@centosLocal centos]# sed -i 's/\r$//g' ./Desktop/WinNames.txt [root@centosLocal centos]# cat -E ./Desktop/WinNames.txt Ted:Daniel:101$ Jenny:Colon:608$ Dana:Maxwell:602$
注意 - 使用-E开关查看时,所有Linux换行符都将以$结尾。
cat还可以用于将多个文件合并到一个文件中。
[root@centosLocal centos]# cat linux.txt CentOS Ubuntu Red Hat Suse Debian [root@centosLocal centos]# cat windwos.txt NT 3.5 NT 4.0 Server 2000 Server 2003 Server 2008 Server 2012 Server 2016 [root@centosLocal centos]#
现在让我们使用cat将这两个文件合并。
[root@centosLocal centos]# cat windwos.txt linux.txt > server_class_operating_sytems.txt [root@centosLocal centos]# cat server_class_operating_sytems.txt NT 3.5 NT 4.0 Server 2000 Server 2003 Server 2008 Server 2012 Server 2016 CentOS Ubuntu Red Hat Suse Debian [root@centosLocal centos]#
最后,我们可以使用-n开关对每一行输出进行编号。这将给我们一个总行数。
[root@centosLocal centos]# cat -n ./server_class_operating_sytems.txt 1 NT 3.5 2 NT 4.0 3 Server 2000 4 Server 2003 5 Server 2008 6 Server 2012 7 Server 2016 8 CentOS 9 Ubuntu 10 Red Hat 11 Suse 12 Debian [root@centosLocal centos]#
basic_centos_linux_commands.htm
广告