首页 文章

将所有输出重定向到文件[重复]

提问于
浏览
654

这个问题在这里已有答案:

我知道在Linux中,要将屏幕输出重定向到文件,我可以使用 >tee . 但是,我不确定为什么部分输出仍然输出到屏幕而不写入文件 .

有没有办法将所有输出重定向到文件?

10 回答

  • 24

    这可能是标准错误 . 你可以重定向它:

    ... > out.txt 2>&1
    
  • 38

    使用 >> 追加:

    command >> file

  • 71

    使用此 - "require command here" > log_file_name 2>&1

    Detail description of redirection operator in Unix/Linux.

    运算符通常将输出重定向到文件,但它可以是设备 . 你也可以使用>>来追加 .

    如果未指定数字,则会假定标准输出流,但您也可以重定向错误

    > file redirects stdout to file
    1> file redirects stdout to file
    2> file redirects stderr to file
    &> file redirects stdout and stderr to file
    

    / dev / null是一个空设备,它接受你想要的任何输入并抛弃它 . 它可以用来抑制任何输出 .

  • 136

    归功于osexp2003和j.a. ...


    而不是放

    &>> your_file.log
    

    在一条线后面

    crontab -e
    

    我用

    #!/bin/bash
    exec &>> your_file.log
    …
    

    在BASH脚本的开头 .

    优点:您的脚本中有日志定义 . 适合Git等

  • 14

    例如,要在控制台和文件 file.txt 中获取输出 .

    make 2>&1 | tee file.txt
    

    注意: & (在 2>&1 中)指定 1 不是文件名而是文件描述符 .

  • 7

    该部分写入stderr,使用 2> 重定向它 . 例如:

    foo > stdout.txt 2> stderr.txt
    

    或者如果你想要在同一个文件中:

    foo > allout.txt 2>&1
    

    注意:这适用于(ba)sh,检查shell是否有正确的语法

  • -3

    在Linux Mint中,此命令字符串将执行脚本和错误路由到单个txt文件 . bash -x ./setup.sh > setup.txt 2>&1 . 脚本名称为setup.sh,输出目标为setup.txt .

  • 14

    所有POSIX操作系统have 3 streams:stdin,stdout和stderr . stdin是输入,可以接受stdout或stderr . stdout是主输出,使用 >>>| 重定向 . stderr是错误输出,它是单独处理的,因此任何异常都不会传递给命令或写入可能会中断的文件;通常,即使重定向stdout,也会将其发送到某种日志或直接转储 . 要将两者重定向到同一个地方,请使用:

    命令&> / some / file

    EDIT :感谢Zack指出上述解决方案不可移植 - 请改用:

    *command* > file 2>&1
    

    如果要使错误静音,请执行以下操作:

    *command* 2> /dev/null
    
  • 1037

    您可以使用 exec 命令稍后重定向任何命令的所有stdout / stderr输出 .

    示例脚本:

    exec 2> your_file2 > your_file1
    your other commands.....
    
  • 15

    命令:

    foo >> output.txt 2>&1
    

    appends 到output.txt文件,而不替换内容 .

相关问题