在 Linux 或 Unix 上使用 sudo 命令时如何将文本附加到文件
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 终端/ssh |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 3 分钟 |
图 01:如何在 Linux 或类 Unix 系统上使用 sudo 将文本附加/插入到文件中?
方法 1:使用 tee 命令通过 sudo 附加到文件
tee 命令从标准输入(如键盘)读取并写入标准输出(如屏幕)和文件。语法如下
示例输出:
$ echo 'text' | sudo tee -a /path/to/file
$ echo '192.168.1.254 router' | sudo tee -a /etc/hosts
Password: 192.168.1.254 router
此解决方案很简单,您无需使用 root 权限运行 bash/sh shell。只需附加或写入需要 root 权限的部分。现在使用cat 命令(或bat 命令,如果您想查看精美的输出):
$ cat /etc/hosts
Bash:使用 sudo 和 tee 附加到文件
想要在使用 sudo 时将文本附加到多个文件?尝试:使用cat 命令
$ echo 'data' | sudo tee -a file1 file2 fil3
验证您是否刚刚以 sudo 身份附加到文件:
我们可以使用 sudo 命令附加到文件:
附加文本时将 tee 输出重定向到 /dev/null 是个好主意。换句话说,当您不希望 tee 命令写入标准输出(例如屏幕)时使用。
$ cat file1
$ cat file2
$ cat my_file.txt | sudo tee -a existing_file.txt > /dev/null
>/dev/null
了解 tee 命令选项
- -a或--append:附加到给定的文件,不覆盖
- -i或--ignore-interrupts:忽略中断信号
- -p:诊断写入非管道时的错误
通过输入以下 man 命令或 help 命令查看 tee 命令手册页:
$ man tee
$ tee --help # GNU/Linux
方法 2:使用 bash/sh shell
使用 bash/sh 或任何其他支持附加文本和传递选项(如)的现代 shell 时,语法如下-c。例如:
例如:
选项传递给 sh/bash 以从参数字符串中读取命令。请注意,您正在以 root 权限运行 bash/sh shell,并且重定向发生在该 shell 会话中。但是,引用复杂命令可能会有问题。因此,向所有人推荐 tee 命令方法。
$ sudo sh -c 'echo text >> /path/to/file'
$ sudo -- sh -c "echo 'text foo bar' >> /path/to/file"
$ sudo -- bash -c 'echo data >> /path/to/file'
$ sudo bash -c 'echo data text >> /path/to/file'
$ sudo sh -c 'echo "192.168.1.254 router" >> /etc/hosts'
-c
结论
我们了解到,使用 sudo 命令有多种方法可以将文本附加到文件。使用 help 命令或 man/info 命令查看以下手册页。例如:
$ info bash
$ man bash