我正在编写一个 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:未找到命令