捕获未找到命令的输出

捕获未找到命令的输出

我正在编写一个 bash 函数,我想使用command-not-found位于我系统上的的输出/usr/lib/command-not-found。但是,简单的 $() 是不够的。输出直接发送到终端。这让我相信它将其写入了 STDERR,但使用$(/usr/lib/command-not-found $command 2>&1)仍然写入了终端。它实际上写入了 TTY 吗?如果是,我可以捕获以某种方式输出?有没有更好的方法(也许是 API)?

答案1

我不确定为什么这对你不起作用,但这是我的计算机上有效的方法......

正如您在下面看到的,我能够将输出保存到变量,然后回显该变量的内容。

用户@机器:~$ out=$(/usr/lib/command-not-found abc 2>&1)
用户@机器:~$ echo "$out"
没有找到命令‘abc’,您的意思是:
 来自包‘coinor-cbc’ (universe) 的命令‘cbc’
 来自包‘nbc’ (universe) 的命令‘nbc’
 来自包“afnix”(universe)的命令“axc”
 来自包‘bc’(主)的命令‘bc’
 来自包‘bsdgames’ (universe) 的命令‘atc’
 来自包‘aspectj’ (universe) 的命令‘ajc’
 来自包‘abe’ (universe) 的命令‘abe’
 来自包“apache2-utils”(主要)的命令“ab”
 来自包‘asc’ (universe) 的命令‘asc’
 来自包‘libaec-tools’ (universe) 的命令‘aec’
 来自包‘arcanist’(universe)的命令‘arc’
 来自包‘arc’ (universe) 的命令‘arc’
 来自包‘abx’的命令‘abx’(universe)
 来自“amule-utils-gui”包的命令“alc”(universe)
 来自包‘acct’(主)的命令‘ac’
abc:未找到命令

相关内容