ud
只需在终端中输入 调用即可。ud
在我的定义中如下~/.bash_aliases
:
alias ud='sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get clean -y'
快速搜索后,我发现建议使用以下方法来维护日志文件(使用make install
原始帖子中的):
$ make install > file.txt 2>&1
问题就在这里;如果我根据自己的需要进行调整,则无法从以下语法中获得预期的结果:
$ ud > file.txt 2>&1
我得到的结果是命令执行到屏幕标准输出并生成一个 0 字节的文本文件。我希望实现的是为 创建一个类似于以下内容的输出文本文件ls
:
$ ls > file.txt 2>&1
我可以请人向我解释一下发生了什么事吗?
最后,出现了以下我无法解释的结果:
$ $(ud) > file.txt
La commande « Ign » est introuvable, vouliez-vous dire :
La commande « tgn » du paquet « tgn » (universe)
Ign : commande introuvable
$ echo $(ud) > file.txt
答案1
在子 shell 中运行命令:
(ud) > file.txt 2>&1
这将使别名中的命令ud
在子 shell 中运行,并且所有命令的 STDOUT 和 STDERR 将被定向到父 shell,以便我们可以一次将所有命令的 STDOUT 和 STDERR 从父 shell 重定向到同一个文件。
或者按照@steeldriver 建议的那样,您也可以设置以下别名,以便将所有命令组合在一起,并且它们的 STDOUT 和 STDERR 将立即重定向:
alias ud='{ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get clean -y ;}'
现在您可以按如下方式运行命令:
ud > file.txt 2>&1
现在,让我们看看你做错了什么:
您已将别名设置为:
alias ud='sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get clean -y'
现在你运行:
ud > file.txt 2>&1
只有最后一个成功或失败的命令的 STDOUT 和(或)STDERR 才会重定向到file.txt
,所有之前的命令都会运行,并且&&
下一个命令将根据该命令的退出代码(成功)运行。因此,在您的情况下,所有命令都成功了,并且 as 会默默地从中sudo apt-get clean -y
删除所有文件,而不会显示任何 STDOUT,您得到的是一个空文件。.deb
/var/cache/apt/archives