在编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读取和写入文件。本文介绍如何使用重定向运算符和tee命令将文本写入Bash中的文件。使用重定向运算符写入文件在Bash中,输出重定向允许您捕获命令的输出并将其写入文件。将输出重定向和写入文件的一般格式如下:output>filenameoutput>>filename>重定向运算符将输出写入给定文件。如果文件存在,它将被截断为零长度。否则,将创建该文件。使用此运算符时要格外小心,因为您可能会覆盖重要文件。>>重定向运算符将输出附加到指定文件。如果该文件不存在,则创建它。您需要对该文件的写入权限。否则,您将收到权限被拒绝的错误。下面是一个简单的例子,展示了如何将echo命令的输出重定向到一个文件:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com">linuxmi.txt要防止覆盖现有文件,请使用setbuiltinEnable"noclobber"option:linuxmi@linuxmi:~$set-onoclobberlinuxmi@linuxmi:~$echo"welcometowww.linuxmi.com">linuxmi.txt输出如下:bash:linuxmi.txt:cannotoverwritefilethatalreadyexists>|Operation操作员允许您覆盖Bash的“noclobber”选项:linuxmi@linuxmi:~$set-onoclobber而不是覆盖文件:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com">>linuxmi.txt使用printf命令创建一个复杂的输出:printf"Hello,I'm%s.\n"$USER>Linuxmi.com.txt如果你想向文件写入多行,请参考这里文档(Heredoc)重定向。例如,您可以将内容传递给cat命令并将其写入文件:cat<linuxmi.com.txt当前工作目录为:$PWD您以$(whoami)EOF身份登录要附加这些行,在文件名前加上>>修改>:cat<>linuxmi.txt当前工作目录为:$PWD您以$(whoami)EOF登录您可以将任何命令的输出写入文件:linuxmi@linuxmi:~$date+"Year:%Y,Month:%m,Day:%d">xxvi.txtdate命令的输出将写入文件。使用tee命令写入文件tee命令从标准输入读取数据,同时将数据写入标准输出和一个或多个文件。linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com"|teelinuxmi.txttee命令的默认行为是覆盖指定的文件,与>运算符相同。要将输出附加到文件,请使用-a(--append)选项调用命令:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com"|tee-alinuxmi.com.txt如果你不想tee要写入标准输出,您可以将其重定向到/dev/null:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com"|teewww.linuxmi.com.txt>/dev/null将文本写入多个files,将文件指定为tee命令的参数:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com"|teefile_1.txtfile_2.txtfile_3.txttee命令的另一个优点是您可以将它与sudoother一起使用用户有文件组合使用,写在里面。要将文本附加到您没有写入权限的文件,请在sudo前面加上tee:linuxmi@linuxmi:~$echo"welcometowww.linuxmi.com"|sudoteelinuxmi.txtcho命令输出作为输入传递给tee,tee将提升sudo特权并将文本写入文件。总结在Linux中,要将文本写入文件,请使用>和>>重定向运算符或tee命令。