Как получить печатный журнал от 'терминала гнома-x'?

Когда я даю команду sudo fio myjog | tee mylog в окне терминала я могу сохранить fio войдите mylog файл.

Но если я даю команду sudo gnome-terminal -x sudo fio myjog | tee mylog, mylog файл будет создан без любого текста внутри.

Как получить печатный журнал от gnome-terminal -x ?

2
задан 8 October 2015 в 10:48

2 ответа

Каждая команда запускается в командной строке в следующем порядке:

  • интерпретируется оболочкой;
  • интерпретируется исполняемым файлом;

В В этом случае | оболочка интерпретирует sudo gnome-terminal -x sudo fio myjog | tee mylog как две команды, переданные друг другу по конвейеру (sudo gnome-terminal -x sudo fio myjog и tee mylog, первая - по второй).

Результатом этого является то, что вывод sudo gnome-terminal -x sudo fio myjog передается по каналу tee mylog; поскольку gnome-terminal ничего не выводит, mylog пусто.

Используйте опцию -e для передачи команды, которая будет выполнена в качестве аргумента;

Команды, пропущенные через опции -e, выполняются в sh;

В этом случае Так как вы хотите использовать канал, который является функцией bash (и других оболочек), вам нужно явно запустить команду в bash (примечание: вам не нужно sudo для запустите gnome-terminal, если вы собираетесь использовать sudo в аргументе для опций -x / -e):

gnome-terminal -e "bash -c \"sudo fio myjog | tee mylog\""
3
ответ дан 2 December 2019 в 01:58

Попросите gnome-терминал запустить bash с определенной командой. Например,

gnome-terminal -x bash -c " printf "YOLO"; sleep 5 " 

В вашем случае сделайте его

gnome-terminal -x bash -c "sudo fio myjog | tee mylog"

Альтернативным,

попросите команду script зарегистрировать вывод вместо tee. Пример,

gnome-terminal -x script -c "sudo apt-get update" myLog 
2
ответ дан 2 December 2019 в 01:58

Другие вопросы по тегам:

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