Как я могу открыть новый сеанс терминала в скрипте, а затем взаимодействовать с ним?

awk+grepраствор:

awk '/^[^>0-9]/{ 
         m = ""; cmd = sprintf("grep -m1 %s file2", $0);
         cmd | getline m; close(cmd);
         if (m) next; 
     }1' file1
  • cmd-критическая grepкоманда
  • m-переменная, заполненная возможным совпадающим элементом

Выход:

1
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGTTTTTTTTT
2
3
4
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCCGTCCGTAG
0
07.01.2020, 03:50
2 ответа

Это то, что нужно:

mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""

Объяснить:Нам нужно запустить две команды (, а может и другие)

ffmpeg -i $name -acodec copy output.mp4
read -p'Press Enter to quit'

Объединив их вместе с bash -c

bash -c "ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'"

В контексте терминала mate -нам нужно экранировать обе двойные кавычки:

bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\"

mate -terminal -e принять единственный аргумент, который дает:

mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""
0
28.01.2020, 02:57

Безусловно, сеанс терминала — это не совсем то же самое, что оболочка. Оболочка — это интерпретатор команд, сеанс терминала открывает новый виртуальный терминал, который запускает оболочку [интерпретатор команд]. Вы также можете просмотреть окно терминала — это необязательная оболочка оболочки, которая позволяет вам видеть вывод и потенциально взаимодействовать с оболочкой. Окно обычно закрывается, когда оболочка, в которой оно запущено, завершает работу.

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

Кроме того, вы можете попросить эмулятор терминала оставить окно открытым, даже когда оболочка завершила выполнение команды и завершила работу (из-за отсутствия интерактивности ). Например, xtermиспользует опцию -hold, чтобы окно оставалось открытым.

Таким образом, чтобы применить это на примере xterm, вам понадобится такая команда:

xterm -hold -e ffmpeg -i "$name" -acodec copy output.mp4

Обратите внимание, что -eдолжен быть последним аргументом для xterm.

0
28.01.2020, 02:57

Теги

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