为什么是它关于文本追加到系统文件一样,几乎所有的指令fstab和/etc/apt/sources.list.d/<name>.list涉及使用tee 与 echo所述文本追加?
以以下示例为例,它们以 root 身份运行:
## 1
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee -a file1
## 2
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' >> file2
Run Code Online (Sandbox Code Playgroud)
运行diff -u file1 file2没有任何回报;运行md5sum file1 file2显示他们的校验和是相同的,这让我回到我原来的问题:
为什么| tee <FILENAME>在 Ubuntu 文档中如此普遍,这只是一种很好的做法,否则仅使用示例 2 而不是将输出从echoto传递会不会更容易tee?
Rin*_*ind 99
有一个区别:tee 复制输出:它将它发送到文件和显示器。
但还有更多:
例如,如果您想一次将一些字符串写入两个文件,则可以使用带有 tee 的命令是:
echo "some text" | tee file1 > file2
Run Code Online (Sandbox Code Playgroud)tee 可以帮助您的另一件事是在使用 sudo 时避免一个问题。正常的输出重定向操作符始终以您的用户权限执行,当您在生成 STDOUT 文本的命令前编写 sudo 时也是如此。换句话说,如果您没有写入该文件的权限,这将失败:
sudo echo "something" > bar
Run Code Online (Sandbox Code Playgroud)
但是有了 T 恤,一切都会顺利:
echo "something" | sudo tee bar
Run Code Online (Sandbox Code Playgroud)来自该站点的2 个示例。它还有一些。
Kaz*_*lfe 15
首先,tee它本身不附加文本,>.
附加文本是tee -a它及其补充>>。
我不相信所有的 shell 都支持这个>>功能,所以这就是为什么tee更常用的原因。(想想只是简单的旧sh)。Tee 是命令,while>>是运算符。
如果您使用 (我个人最喜欢的) bash,>并且>>更好/更容易。
Usingtee还允许您只 sudo 该命令,因此您不必 sudo 整个语句,如sudo sh -c "echo foo > bar". tee还允许您拆分输出。当然,这一切都可以在man tee. 这主要只是你的个人喜好。
| 归档时间: |
|
| 查看次数: |
36241 次 |
| 最近记录: |