Bash 将Shell脚本输出复制到文件中

Bash 将Shell脚本输出复制到文件中,bash,terminal,copy,output,Bash,Terminal,Copy,Output,我有两个脚本的组合别名。以下别名在我的操作系统设置中运行良好 alias build_command 'directory_1/foo.sh build' alias copy_command 'directory_2/bar.sh' alias build_copy 'build_command && copy_command' alias bc build_copy 问题是当我想将终端输出转储到文件中时。谁能告诉我怎么做?仅供参考,我在终端中尝试了bc>temp.txt,但

我有两个脚本的组合别名。以下别名在我的操作系统设置中运行良好

alias build_command 'directory_1/foo.sh build'
alias copy_command 'directory_2/bar.sh'
alias build_copy 'build_command && copy_command'
alias bc build_copy
问题是当我想将终端输出转储到文件中时。谁能告诉我怎么做?仅供参考,我在终端中尝试了bc>temp.txt,但不起作用,不允许修改生成和复制脚本:

提前感谢:

来自man bash:

对于几乎所有用途,别名都被shell函数取代

输入bc>temp.txt时的问题是bash将别名扩展为:

directory_1/foo.sh build && directory_2/bar.sh > temp.txt
因此,只有目录_2/bar.sh的输出被重定向

要解决此问题,请使用:

{ bc; } > temp.txt
因此,由于分组,full命令的输出被重定向

另一种选择是使用函数:

bc() { build_copy; }
现在bc>temp.txt做你所期望的


另一方面:bc是一个相当糟糕的名称选择,因为已经有一个名为bc的实用程序…

首先,您不应该使用别名,而应该使用函数。现在,如果确实要使用bc别名并重定向输出,请使用:{bc;}>temp.txt,否则只重定向copy_命令的输出。