Я пишу функцию удара, из которой я хочу использовать вывод command-not-found
, расположенный в моей системе в /usr/lib/command-not-found
. Однако простой $ () не достаточен. Вывод переходит прямо к терминалу. Это привело меня полагать, что это записало это в STDERR, но использование $(/usr/lib/command-not-found $command 2>&1)
все еще записал в терминал. Это на самом деле пишет в TTY? Если так, я могу получить тот вывод так или иначе? Существует ли лучший путь (API, возможно)?
Я не уверен, почему это не работает на Вас, но здесь - то, что действительно работает над моей машиной...
, Как Вы видите ниже, я могу сохранить вывод к переменной и затем повторить содержание той переменной.
user@machine:~$ out=$(/usr/lib/command-not-found abc 2>&1) user@machine:~$ echo "$out" No command 'abc' found, did you mean: Command 'cbc' from package 'coinor-cbc' (universe) Command 'nbc' from package 'nbc' (universe) Command 'axc' from package 'afnix' (universe) Command 'bc' from package 'bc' (main) Command 'atc' from package 'bsdgames' (universe) Command 'ajc' from package 'aspectj' (universe) Command 'abe' from package 'abe' (universe) Command 'ab' from package 'apache2-utils' (main) Command 'asc' from package 'asc' (universe) Command 'aec' from package 'libaec-tools' (universe) Command 'arc' from package 'arcanist' (universe) Command 'arc' from package 'arc' (universe) Command 'abx' from package 'abx' (universe) Command 'alc' from package 'amule-utils-gui' (universe) Command 'ac' from package 'acct' (main) abc: command not found