Как запустить программу из оболочки bash, не выполняя ее в процессе оболочки

Как указал подстановочный знак, это будет работать только в том случае, если ваш файл правильно отформатирован, в котором нет специальных символов, которые оболочка будет интерпретировать как глобусы, и вы довольны правилами разделения слов по умолчанию. Если есть какие-либо вопросы о том, пройдут ли ваши файлы этот тест, не используйте этот подход.

Одна из возможностей - использовать printf , как

printf '%s\t%s\n' $(cat your_file)

. Это будет выполнять разделение слов в содержимом your_file , объединить их в пары и распечатать с вкладками между ними. . Вы можете использовать больше строк формата % s в printf , чтобы иметь дополнительные столбцы.

2
23.12.2016, 17:06
2 ответа

Вы имеете в виду, как выполнить команду в фоновом режиме?

Вы можете сделать это, завершив такую ​​команду с помощью "&"

Пример:

$ nemo &
2
27.01.2020, 21:49
exec Nemo

не будет запускать Nemo в подпроцессе оболочки , то есть он будет выполнять Nemo в процессе оболочки, поэтому замените оболочку на ] Немо .

Но не похоже, что вы этого хотите.

Похоже, вы хотите, чтобы команда запускалась в отдельном процессе, но чтобы оболочка не ждала завершения этого процесса перед выдачей следующего приглашения.

Для этого вы должны использовать:

Nemo &

Это запускает Nemo асинхронно. Когда это делается из интерактивной оболочки, Nemo также помещается в фоновый режим, чтобы предотвратить чтение с терминала или его уничтожение из-за SIGINT, если вы нажмете Ctrl + C.

Обратите внимание, что команда по-прежнему будет в таблице заданий оболочки. Вы можете вернуть его на передний план с помощью fg . Оболочка также попытается убить его при выходе (по крайней мере, в некоторых оболочках).

С некоторыми оболочками, включая bash , вы также можете использовать команду disown , чтобы заставить оболочку забыть об этом. С помощью zsh вы также можете запустить его как:

Nemo &!

, чтобы запустить его в фоновом режиме и сразу отказаться от него.

11
27.01.2020, 21:49

Теги

Похожие вопросы