Как создать то же самое со сценарием оболочки, который работает на каждой платформе на основе unix?
То, о чем вы просите, немного необоснованно. Подумайте об этом так: в Windows вы всегда находитесь внутри своего Desktop Window Manager, периода, и единственный выбор у вас есть между Powershell и cmd.exe
. Но на Linux, это немного сложнее:
- Как вы сказали, что вы можете иметь либо
rxvt
или xterm
установлен.
- Это не единственный вопрос - вы можете использовать любой оконный менеджер. Хотя это не имеет большого значения здесь,
- Вы можете использовать Xorg или Wayland. Продолжение дальше,
- Вы не можете использовать какую-либо графическую среду вообще, например. запустите все в консоли Linux! Что, если вы не используете причудливые программы, такие как
fbterm
или tmux
, в значительной степени неспособны к многозадачности, но в одиночку порождают новые окна.
- Это, как говорится, вы даже не можете использовать этот компьютер физически вообще, потому что вы подключаетесь к нему из SSH. Здесь нет удаленных окон (если вы не используете материал как переадресацию X11).
- Наконец, вы можете использовать
zsh
, bash
, sh
, fish
и т. Д., Что все они имеют свои особенности.
IMO Ваш лучший выбор, чтобы проверить в сценарии, где устанавливаются программы или сценария вокруг терминального мультиплексора, такие как tmux
и требуют его установки на целевом компьютере. tmux
в действии:
(. Это будет работать в любой SSH, консоли Linux или любой другой сценарий выше)
Если вы, однако, не заботятся о выходе команд, «повторно собирается бежать, вы можете просто отделить их от текущего сеанса терминала, как это:
command1 &>/dev/null &
command2 &>/dev/null &
command3 &>/dev/null &
Помните, что это:
- Выполняет команды параллельно.
- Не покажет вам никакого выхода. Если вы удалите
&>/dev/null
, выходные данные каждой команды будут переплетаться друг с другом, что, вероятно, не то, что вы хотите.
- Закрытие терминала обычно убивает его дочерние процессы, которые в этом случае убьют ваши
command
экземпляры, которые работают в фоновом режиме.
Вопросы, о которых говорилось выше, могут быть обработаны, но я считаю, что это немного выходит за рамки этого ответа.
Лично я бы пошел либо для tmux
, либо для отсоединения решения в зависимости от того, нужно ли мне видеть вывод консоли.
Я не знаю идеальных решений для этого. Вы можете получить оболочку по умолчанию через переменную среды '$ SHELL', но открытие нового терминала - это не то же самое, что открытие нового окна терминала * - открытие новой оболочки с помощью' exec '$ SHELL "' не должно открывать новую окно. Вы можете сделать «sudo apt-get install xdotool» и «xdotool key ctrl + shift + n' - это может быть несколько« кросс-дистрибутив »-решения, так как большинство оконных менеджеров поддерживают ctrl + shift + n для открытия новых окон. – jDo
Check [ это] (https://askubuntu.com/questions/641683/how-can-i-send-commands-to-specific-terminal-windows) out (используя xdotool для открытия трех окон терминала и отправки команд им) – jDo