linux下EOF写法梳理
发布日期:2025-04-07 13:19:23 浏览次数:11 分类:精选文章

本文共 1364 字,大约阅读时间需要 4 分钟。

在平日的运维工作中,经常会遇到需要自动输入大量内容到文件中,但手动逐行输入显得非常低效的情况。对于少量的行文,可以使用echo追加命令,但对于大量内容则显得很不妥了。这个时候,EOF 结合 cat 命令就显得尤为实用。

EOF 详解

EOFEND Of File 的缩写,表示自定义终止符。作为自定义终止符,EOF并不像某些固定的终止符一样单一,用户可以根据需要自由设置别名。在 Linux 环境下,按下 Ctrl + D 即可输入 EOF

EOF 通常用于与 cat 命令配合,实现批量输入多行文本。在使用 EOF 之前,熟悉以下几个重定向符是非常重要的:

  • <: 输入重定向
  • >: 输出重定向
  • >>: 输出重定向,用于追加,不会覆盖之前内容
  • <<<: 从命令行输入的内容

实际案例

1. 向文件输入内容

cat << EOF > test.sh1231231233452354345asdfasdfsEOF

执行以上命令后,test.sh 文件中将包含以下内容:

cat test.sh1231231233452354345asdfasdfs

2. 追加内容(追加而 不覆盖)

如果希望在已有文件基础上追加内容,可以使用 >> 追加符:

cat << EOF >> test.sh77778888EOF

执行后,test.sh 的内容将变为:

cat test.sh1231231233452354345asdfasdfs77778888

3. 覆盖文件

如果希望完全覆盖文件内容,可以直接使用 > 追加符:

cat << EOF > test.sh55555EOF

此时,test.sh 文件将只包含以下内容:

cat test.sh55555

自定义终止符

除了默认的 EOF,我们还可以自定义终止符。例如,设定为 wang

cat << wang > haha.txtggggggg44444446666666wang

执行后,haha.txt 将包含以下内容:

cat haha.txtggggggg44444446666666

脚本化批量输入

如果需要将批量操作封装到脚本中,可以编写一个自动化的 sh 脚本:

#!/bin/bashtouch /usr/local/mysql/my.cnfcat > /usr/local/mysql/my.cnf << EOFport = 3306socket = /usr/local/mysql/var/mysql.sock...EOF

此脚本自动创建文件(如果文件不存在则自动创建)并批量输入内容。运行脚本后,可以通过以下命令验证结果:

cat /usr/local/mysql/my.cnf

自动新建分区并挂载

以下是一个用于自动新建分区并挂载的脚本示例:

#!/bin/bashfdisk /dev/sdb << EOFnp1
wqEOFmkfs.ext4 /dev/sdb1mount dataecho "label=\"data_disk\" ext4 defaults 0 2" > /etc/fstab

这段代码首先使用 fdisk 格式化分区,随后进行文件系统创建和挂载操作,最终生成 /etc/fstab 文件,完成分区配置。

上一篇:linux下FTP安装与配置
下一篇:linux下Emacs编译手记

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月18日 18时58分25秒