相关背景:

相关背景:

相关背景:

重定向标准输出

command > file
command 1> file

重定向标准错误

command 2> file

将标准输出和标准错误重定向到单独的文件

command 2> error.txt 1> output.txt

将标准输出和标准错误重定向到同一文件

command > file 2>&1
command &> file # bash only? 
# For all I know, all the examples are bash-only, but the article called it out explicitly on this line

警告:以下示例重定向仅有的标准输出到文件。发生这种情况是因为在 stdout 重定向到文件之前 stderr 被重定向到 stdout

command 2>&1 > file # incorrect! 

问题:

在我看来,这些符号完全是任意的,因此很难记住。我知道如何别名命令,但是有没有办法给这些符号起别名,让它们更容易记住呢?像这样的东西:

将标准输出和标准错误重定向到同一文件

command redirectStandardOutputAndError file

甚至更好:

command >outerr file

如果这适用于 zsh 和 bash,那就加分了,但我 bash 是唯一的要求。

答案1

您不能在 bash 中使用别名来执行此操作,它们不够强大。但是您可以使用函数,这可能会对您有所帮助。

这种方法确实需要您以不同的方式考虑重定向。您首先声明重定向,然后声明命令,因此如果您想保存ls -lin的输出,/tmp/dir_listing您可以键入save_in /tmp/dir_listing ls -l

save_in(){ # save stdout in file
    "${@:2}" > "$1"
}

save_all(){ # save both stdout and stderr in file
     "${@:2}" > "$1" 2>&1
}

save_each(){ # save stdout and stderr in different files
     "${@:3}" > "$1" 2>"$2"
}

save_base(){ # save stdout and stderr into different file, just give base
    "${@:2}" > "$1.out" 2>"$1.err"
}

困难在于想出令人难忘的合理名称。

相关内容