跟老男孩学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)    收藏  举报

导航