美文网首页
Linux tee 命令

Linux tee 命令

作者: 追风骚年 | 来源:发表于2022-04-18 14:26 被阅读0次

    我们一定有着这样的烦恼,使用 Linux 中的命令写入文件的时候,控制台是不显示写入的内容,往控制台写入内容的时候又无法往文件中写入。如果我想一边写入文件一遍还要在控制台显示对于单向的管道来说是做不到的。

    $ echo "secret"
    secret
    
    $ echo "secret" > secret.txt
    

    这时候 tee 就应运而生,它接受一个标准输入,可以将内容输出到标准输出和多个文件。

    $ echo "secret" | tee secret.txt
    secret
    
    $ cat secret.txt
    secret
    

    或者多个文件

    $ echo "secret" | tee secret1.txt secret2.txt
    secret
    
    $ cat secret1.txt
    secret
    
    $ cat secret2.txt
    secret
    

    更为常见的一个场景是当前文件没有权限写入

    $ touch secret3.txt
    
    $ chmod 447 secret3.txt // 模拟当前用户没有写入权限
    
    $ sudo echo "secret" > secret3.txt
    zsh: permission denied: secret3.txt  // echo 是 sudo,但是重定向不是,所以是无法写入的
    
    $ echo "secret" | sudo tee secret3.txt
    secret
    
    $ cat secret3.txt // success
    secret
    

    再看一个 vim 的场景

    你肯定不想编辑了半天的文件写入不了,需要重新来过

    $ vi secret3.txt 
    // 修改一些内容
    
    $ :wq  
    E45: 'readonly' option is set (add ! to override)
    
    $ :w !sudo tee % // success,% 为一个变量,内容为当前文件名
    

    相关文章

      网友评论

          本文标题:Linux tee 命令

          本文链接:https://www.haomeiwen.com/subject/rrsdertx.html