Как перенаправить команду `stdin `, а также `stdout `на вывод

Чтобы открыть несколько терминалов в Fedora, откройте терминал, перейдите в строку меню и нажмите «Файл» > «Новое окно» или «Файл» > «Новая вкладка». Лично я предпочитаю последнее, так как вы можете просто переключаться между вкладками, а затем открыть все окно, и все они будут доступны. Каждая вкладка представляет собой отдельный сеанс оболочки, как и каждое окно.

5
15.03.2021, 11:02
1 ответ

Аналогично тому, что вы уже (протестировали с помощьюpython3):

tee -a output.txt | python ask.py 2>&1 | tee -a output.txt

Как недостаток, вам нужно будет явно ввести что-то после завершения скрипта Python, чтобы сделать первую teeпопытку записи в канал, получить SIGPIPEи выйти. Вы можете обойти это ограничение с помощью:

tee -a output.txt | { python ask.py 2>&1; kill 0; } | tee -a output.txt

Где killиспользуется для уничтожения всех процессов в текущей группе процессов (, т. е. выделенной группе процессов, конвейер запускается как ). (Но учтите, что могут применяться оговорки).

Альтернативой, если scriptдоступна для вас, может быть:

script -q -c 'python ask.py' output.txt

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

7
18.03.2021, 22:24

Теги

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