Bash:写入文件
admin
2023-08-03 05:26:09
0

编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读写文件。

本文介绍了如何使用重定向操作符和tee命令将文本写入Bash中的文件。

使用重定向运算符写入文件

在Bash中,输出的重定向使您可以捕获命令的输出并将其写入文件。

重定向并将输出写入文件的一般格式如下:

output > filename 
output >> filename 

复制

  • >重定向操作写入输出到指定的文件。如果文件存在,则将其截断为零长度。否则,将创建文件。使用此运算符时请格外小心,因为您可能会覆盖重要文件。
  • >>重定向操作符追加输出到指定的文件。如果文件不存在,则创建该文件。

您需要对该文件具有写权限。否则,您将收到一个权限被拒绝的错误。

这是一个简单的示例,显示了如何将echo命令的输出重定向到文件:

echo \"this is a line\" > file.txt

为了防止覆盖现有文件,请使用set内置功能启用“ noclobber”选项:

set -o noclobberecho \"this is a line\" > file.txt
bash: file.txt: cannot overwrite existing file

>|运算符允许您覆盖Bash的“ noclobber”选项:

set -o noclobberecho \"this is a line\" >| file.txt

>>运营商将输出追加到文件末尾,而不是覆盖该文件:

echo \"this is a line\" >> file.txt

使用printf命令创建复杂的输出:

printf \"Hello, I\'m %s.\\n\" $USER > file.txt

如果要将多个行写入文件,请使用此处文档(Heredoc)重定向。

例如,您可以将内容传递给cat命令并将其写入文件:

cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

复制

要追加行,改变>>>文件名前:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

复制

您可以将任何命令的输出写入文件:

date +\"Year: %Y, Month: %m, Day: %d\" > file.txt

date命令的输出将被写入文件。

使用tee命令写入文件

tee命令从标准输入读取并同时写入标准输出和一个或多个文件。

echo \"this is a line\" | tee file.txt

tee命令的默认行为是覆盖指定文件,与>操作员相同。要将输出附加到文件,请使用-a--append)选项调用命令:

echo \"this is a line\" | tee -a file.txt

如果您不希望tee写入标准输出,则可以将其重定向到/dev/null

echo \"this is a line\" | tee file.txt >/dev/null

要将文本写到多个文件中,请指定文件作为tee命令的参数:

echo \"this is a line\" | tee file_1.txt file_2.txt file_3.txt

tee命令的另一个优点是,您可以将其与sudo其他用户拥有的文件结合使用并写入其中。要将文本追加到您没有写许可权的文件中,请sudo在之前加上tee

echo \"this is a line\" | sudo tee file.txt

echo命令输出作为输入提供给传递tee,这提升了须藤权限和文本写入到文件中。

结论

在Linux中,要将文本写入文件,请使用>>>重定向运算符或tee命令。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
如何在电报Telegram中隐... 点击进入:ChatGPT工具插件导航大全 在Android上的电报中隐藏您的电话号码 您可以通过切换...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
Hive OS 部署 PXE ... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
在 iCloud 上关闭“查找... 如果您是 Apple 的长期用户,您肯定会遇到过 Find My 应用程序,它本机安装在 iPhon...
如何在 iPhone 14 P... Apple 的 iPhone 14 Pro 是第一款配备 48MP 传感器的 iPhone。所有以前...