Команда для открытия новой вкладки в текущем терминале и передача команды для запуска на новой вкладке

Команда для открытия новой вкладки в текущем терминале и передача команды для запуска на новой вкладке

Я знаю, что это gnome-terminalоткроет новое окно, но мне интересно, есть ли способ открыть новую вкладку, а не просто новое окно?

После этого есть ли способ передать команду новому окну, например

gnome-terminal && cd /

Что приведет к

  1. Открытие нового терминала
  2. Затем запускается новый терминалcd /

[Изменить] Эти ответы скажут, как передать cmds на другой терминал, но не ответят, как открыть новыйВКЛАДКА. Это то, что мне нужно, я не хочу, чтобы было открыто больше одного терминала.

решение1

GNOME Terminalне предлагает универсального решения командной строки для открытия новой вкладки в уже существующем окне.

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

Хаки, такие как имитация нажатия пользователем клавиши, существуют, как уже было сказано в ответе, но работают только под X.Org, а не под Wayland.

Начиная с будущей версии 3.28, команда gnome-terminal --tabоткроет новую вкладку в окне терминала GNOME, откуда она выполняется,еслиэта команда выполняется из Терминала GNOME.

(Как он узнает, в каком окне открывать новую вкладку в этом случае? Он узнает это, заранее установив определенную переменную среды на разное значение в каждом из открываемых им терминалов. Эта переменная среды позволяет ему найти нужное окно.)

Итак, в вашем конкретном случае вы могли бы сделать следующее:

gnome-terminal --tab -- bash -c 'cd /; exec bash'

Таким образом, вы получите запущенную оболочку в новой вкладке после cd /завершения. Если вы только что сделали gnome-terminal --tab -- some command, то вкладка закроется сразу после some commandвыхода. При использовании bash -c 'some command; exec bash'вместо этого вкладка будет иметь запущенный bashпроцесс после some commandзавершения.

решение2

Вы должны имитировать нажатие shift+ ctrl+ Tв терминале. Существуют программы, которые это делают:

Если вы хотите сделать это из командной строки

Например, вы можете использовать xdotoolпрограмму, которая позволяет имитировать ввод с клавиатуры.

sudo apt-get install xdotool

затем введите в терминале:

xdotool key ctrl+shift+t

Это будет имитировать нажатие комбинации клавиш.

Связанный контент