编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读写文件。
本文介绍了如何使用重定向操作符和tee命令将文本写入Bash中的文件。
使用重定向运算符写入文件
在Bash中,输出的重定向使您可以捕获命令的输出并将其写入文件。
重定向并将输出写入文件的一般格式如下:
- output > filename
- output >> filename
>重定向操作符将输出写入给定的文件。如果文件存在,它将被截断为零长度。否则,将创建文件。使用这个操作符时要格外小心,因为你可能会覆盖一个重要的文件。
>>重定向操作符将输出追加到指定的文件。如果文件不存在,则创建该文件。
您需要对该文件具有写权限。否则,您将收到一个权限被拒绝的错误。
这是一个简单的示例,显示了如何将echo命令的输出重定向到文件:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" > linuxmi.txt
为了防止覆盖现有文件,请使用set内置功能启用“ noclobber”选项:
- linuxmi@linuxmi:~$ set -o noclobber
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" > linuxmi.txt
输出如下:
bash: linuxmi.txt:无法覆盖已存在的文件
>|操作符允许你覆盖Bash的" noclobber "选项:
- linuxmi@linuxmi:~$ set -o noclobber
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" >| linuxmi.txt
>>操作符将输出追加到文件的末尾,而不是覆盖文件:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" >> linuxmi.txt
使用printf命令创建一个复杂的输出:
- printf "Hello, I'm %s.\n" $USER > Linuxmi.com.txt
如果要将多个行写入文件,请参考Here document(Heredoc)重定向。
例如,您可以将内容传递给cat命令并将其写入文件:
- cat << EOF > linuxmi.com.txt
当前的工作目录是: $PWD
您以以下身份登录 $(whoami)
EOF
要附加这些行,在文件名之前用>>修改>:
- cat << EOF >> linuxmi.txt
当前的工作目录是: $PWD
您以以下身份登录 $(whoami)
EOF
您可以将任何命令的输出写入文件:
- linuxmi@linuxmi:~$ date +"Year: %Y, Month: %m, Day: %d" > xxvi.txt
date命令的输出将被写入文件。
使用tee命令写入文件
tee命令从标准输入读取数据,并同时向标准输出和一个或多个文件写入数据。
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" | tee linuxmi.txt
该tee命令的默认行为是覆盖指定文件,与>操作员相同。要将输出附加到文件,请使用-a(--append)选项调用命令:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" | tee -a linuxmi.com.txt
如果您不希望tee写入标准输出,则可以将其重定向到/dev/null:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" | tee www.linuxmi.com.txt >/dev/null
要将文本写到多个文件中,请指定文件作为tee命令的参数:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" | tee file_1.txt file_2.txt file_3.txt
该tee命令的另一个优点是,您可以将其与sudo其他用户拥有的文件结合使用并写入其中。要将文本追加到您没有写许可权的文件中,请sudo在之前加上tee:
- linuxmi@linuxmi:~$ echo "welcome to www.linuxmi.com" | sudo tee linuxmi.txt
echo命令输出作为输入传递给tee, tee将提升sudo权限并将文本写入文件。
总结
在Linux中,要将文本写入文件,请使用>和>>重定向运算符或tee命令。
以前只会/ abc(!def).+/.exec("abcdef\nabczzz"), 匹配到 abczzz, 这种简单的...
因此,在我接触那么多种语言当中,asp是最不严格的一种,是对程序员要求最低的一...
一、前言 这段时间在楼下遛娃的时候发现了一个比较奇怪的现象我们小区的精英人士...
我将会使用xheditor作为新的在线编辑器,我希望它可以能通过一个php函数就能调用...
使用Visual Studio IDE编写程序时不显示窗口,或窗口一闪而逝,遇到这个问题并不...
前提 win 系统安装植物大战僵尸这里有一个百度云网盘是从网上找的我用了应该没有...
前言 本文主要给大家介绍的是关于读取数据库数据整合成3D饼图并在jsp中显示的相...
什么是Webpack WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,...
一、简介 基于matlab GUI最小半径泊车方法仿真 二、源代码 function varargout b...
文章来源尤肖虎,张川,谈晓思,金石,邬贺铨.基于AI的5G技术——研究方向与范例[J]....