跟老男孩学Linux运维-核心系统命令实战-第3章-文件过滤及内容编辑处理命令-cat合并文件或查看文件内容
3.1.cat合并文件或查看文件内容(*****)
3.1.1.命令详解
其功能是连接多个文件并且打印到屏幕输出,或者重定向到指定的文件中。此命令常用来显示单个文件内容,或者将几个文件内容连接起来一起显示,还可以从标准输入中读取内容并显示,生产环境中它常与重定向或追加符号配合使用。
| 序号 | cat命令常用功能 | 简要例子说明 |
| 1 | 查看文件内容 | 例如:cat file.txt,这是 cat 最基本的功能之一 |
| 2 | 把多个文件合并成一个 | 例如:cat file1.txt file2.txt >newfile.txt |
| 3 | 创建编辑新文件 | 例如:输入 cat >file1.txt,后面接要编辑的内容,使用快捷键 Ctrl+d 或 Ctrl+c 可结束编辑,此功能应用不多,了解即可 |
| 4 | 非交互式的编辑或追加内容到文件尾部 |
这是生成工作中最重要的一个应用了,所以必须要熟练掌握,这里先给一个命令格式: cat>>file1.txt<<EOF I am oldboy training.welcome to my blog. EOF |
| 5 | 清空文件内容 | 例如:使用 cat /dev/null >file1.txt 命令就可以把文件内容清空,但是文件还是存在的,这个功能生产工作中也会用到 |
选项说明
#-n 从 1 开始对所有输出的内容按行编号 ---常用--- #-b 和 -n 选项功能类似,但会忽略显示空白行行号 ---常用--- #-s 当遇到有连续两行以上的空白行时,就替换为一行空白行 #-A 等价于 -vET 三个选项的功能之和 #-e 等价于 -vE #-E 在每一行的行尾显示$符号 #-t 与 -vT 等价 #-T 将 Tab 符号显示为 ^I #-v 除了 LED 和 TAB 之外,使用 ^ 和 M- 引用
3.1.2.使用范例
1.基础范例
#3-1:执行如下的完整命令生成 text.txt 文件内容
#方法1
cat >test.txt<<EOF
welcome to my blog.http://oldboy.blog.51cto.com
if you like my blog\'s contents,pls support me.
bye! boys and girls.
EOF
#方法2,结尾的 EOF 可以不用顶格,但要用 tab 缩进
cat >test.txt<<-EOF
welcome to my blog.http://oldboy.blog.51cto.com
if you like my blog\'s contents,pls support me.
bye! boys and girls.
EOF
#3-2:直接执行cat命令,不带任何选项
cat test.txt
#3-3:执行cat命令,分别带 -n 及 -b 选项,并对比区别
cat -n test.txt
cat -b test.txt
#3-4:执行 cat 命令,带 -E 选项,就是把文件结尾的隐藏结束标识符 $ 符号显示出来
cat -E test.txt
#3-5:执行cat命令,带 -s 选项
cat -s text.txt
#3-6:执行 cat 命令编辑新文件
#注意问题
#1.结束编辑可以用 Ctrl+d 或 Ctrl+c 退出,但是必须要先执行回车,将光标定位到新的未输入的行才行
#2.使用此种方式输入时,会发现如果输入错了,只按退格键将会无法删除,需要按住 Ctrl+退格键 才能删除
#3.此操作为特殊编辑方法,作为扩展知识点提及,实际生产环境中使用得很少
cat >text3.txt
#输入
hi,here is linux os.
#查看
cat text3.txt
#3.7:执行 cat 命令连接并显示多个文件
cat text.txt text3.txt
2.生产案例
#3-8:利用 cat 实现一键优化 Linux 系统脚本
cat opt_sysctl.sh
#内容如下
#!/bin/bash
/bin/cp /etc/sysctl.conf /etc/sysctl.conf.'date +%F_%T'
cat>>/etc/sysctl.conf<<EOF
#added by oldboy at 2007 start
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#end
EOF
sysctl -p &>/dev/null
#执行
sh opt_sysctl.sh
tail -16 /etc/sysctl.conf
#3-9:利用 cat 在脚本中显示帮助菜单
cat exportfs_usage.sh
#内容如下
#!/bin/bash
exportfs_usage()
{
cat <<EOF
USAGE:$0 {start|stop|monitor|status|validate-all}
END
}
exportfs_usage
#执行
sh exportfs_usage.sh
#3-10:利用 cat 在脚本中显示内容选择菜单
cat menu.sh
#内容如下
#!/bin/bash
menu() {
cat <<EOF
1.[apple]
2.[pear]
3.[banana]
4.[cherry]
5.[orange]
please select one that you like:
END
}
menu
#执行
sh menu.sh
#3-11:利用 cat 连接多文件合并 Web 集群日志
cat web01_access_20130522.log web02_access_20130522.log >web_access_20130522.log
#查看
cat web_access_2010128.log
sort -k 4 web_access_2010128.log
#3-12:利用 cat 命令实现一键 MySQL 主从同步
cat |mysql -uroot -p'oldboy'<<EOF
CHANGE MASTER TO
MASTER_HOST='10.0.0.16',
MASTER_PORT=3306,
MASTER_USER='oldboyrep',
MASTER_PASSWORD='oldboyrep',
MASTER_LOG_file='mysql-bin.000025',
MASTER_LOG_POS=4269;
EOF
posted on 2019-12-16 06:31 herisson_pan 阅读(21) 评论(0) 收藏 举报
浙公网安备 33010602011771号