Простое форматирование и перенаправление вывода команды на/dev/null
Я часто выполняю из команд оболочки (в моем случае Bash), которые я хочу разблокировать, и чей вывод я хочу игнорировать. Так часто на самом деле я создал script (silent
):
#!/bin/bash
[email protected] &> /dev/null &
Затем я могу запустить, например.
silent inkscape myfile.svg
и мой терминал не будет загрязнен отладочным результатом процесса, который я только раздвоил.
У меня есть два вопроса:
-
Есть ли "официальный" способ сделать это?, то есть что-то более короткое, но эквивалентное &> /dev/null &
?
-
Если нет, есть ли способ сделать работу по завершению работы после моей команды silent
, как если бы ее не было? Чтобы привести пример, после того, как я набрал silent inksc
, я хотел бы, чтобы bash автоматически завершил мою команду до silent inkscape
, когда я нажимаю [tab]
.
Ответы
Ответ 1
в стороне: возможно, нужно exec "[email protected]" &> /dev/null &
в silent
script, чтобы заставить его отказаться от суб-оболочки, а кавычки вокруг "[email protected]"
будут мешать пробелам.
Что касается №2: complete -F _command silent
должен делать что-то вроде того, что вы хотите. (Я называю свою версию этого script launch
и имеет complete -F launch
в моем .bash_profile
)
Ответ 2
Похоже, nohup делает больше или меньше того, что вы хотите. Проблема с завершением табуляции состоит в том, что bash считает, что вы пытаетесь завершить имя файла как аргумент script, тогда как его правила завершения знают, что nohup принимает команду в качестве своего первого аргумента.
Nohup перенаправляет stout и stderr на nohup.out и также оставит команду запущенной, если ваша оболочка завершена.
Ответ 3
Здесь немного script, которое я использую для запуска интерактивных (и chatty) X-приложений, например. xterm
#!/bin/bash
exe="$1"
shift
"$exe" "[email protected]" 2>/tmp/$$."$exe".err 1>&2 & disown $!
Нет вывода, не будет умирать, если терминал выйдет, но в случае, если что-то пойдет не так, журнал всех выходных данных в /tmp
Если вы не хотите, чтобы журнал просто использовал /dev/null вместо этого.
Также будет работать от функции, если вы script -алергический.
Ответ 4
Возможно, если бы вы могли "переподтвердить" ключ табуляции? Пример для суперпользователя Stackoverflow с ключом ввода. Это правильная идея?