Вопрос или проблема
Кажется, это довольно просто сделать, но я никак не могу понять, как это сделать. Я бы хотел, чтобы все bash (*.sh, *.bash) файлы открывались с терминалом, чтобы показывать их вывод.
Если вы собираетесь запустить какой-то скрипт из графического интерфейса и иметь возможность видеть его вывод, вы можете обернуть целевой скрипт в свой собственный. Ваш новый скрипт вызывает terminal
->bash
->your_script
и ждет, пока он не завершится и не выйдет. В скрипте ниже замените ./script.sh
на ваше имя скрипта и путь.
#!/bin/bash
# Пример скрипта меню Bash
xterm -e "bash -c \"./script.sh; exec bash\"" &
while [ `pidof xterm` ]
do
wait `pidof xterm`
done
ОБНОВЛЕНИЕ:
Согласно этим популярным ответам, в вашем случае нужно иметь два скрипта.
Если вы собираетесь запустить какой-то скрипт из графического интерфейса и иметь возможность видеть его вывод, вам нужно это включить.
Из Nautilus:
И тогда, когда вы нажмете на ваш скрипт, вам будет предложено:
Из командной строки:
gnome-terminal -e command
или
xterm -e command
или
konsole -e command
или
terminal -e command
Чтобы терминал оставался, когда команда завершится:
В konsole есть флаг –noclose.
В xterm есть флаг -hold.
В gnome-terminal зайдите в Edit -> Profile Preferences -> Title. Нажмите вкладку Command. Выберите Hold the terminal из выпадающего меню с надписью When command exits.
Вы должны создать новый профиль для этого и выполнить команду с помощью
gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
Ответ или решение
Для решения задачи открытия bash-скриптов (.sh, .bash) в терминале с выводом результатов выполним последовательность действий, которая позволяет интегрировать запуск скрипта через графический интерфейс пользователя (GUI), обеспечивая его автоматическое выполнение в терминале.
Теория
При запуске скрипта через GUI, стандартное поведение заключается в открытии текстового редактора, в то время как желаемый результат — это выполнение скрипта в терминальном окне с возможностью наблюдения за его выводом. Это достигается посредством так называемой "обертки": создаем вспомогательный скрипт или используем команду для исполнения целевого скрипта внутри терминального эмулятора.
Пример
Приведем простой скрипт, который запускает bash-скрипт внутри xterm
, приостанавливая закрытие окна до завершения его выполнения:
#!/bin/bash
# Пример меню скрипта
xterm -e "bash -c \"./your_script.sh; exec bash\"" &
while [ `pidof xterm` ]
do
wait `pidof xterm`
done
Здесь your_script.sh
— это файл скрипта, который вы хотите запустить. Альтернатива — использование других терминальных эмуляторов, таких как gnome-terminal
или konsole
, где также доступно управление поведением после выполнения команды.
Приложение
Из графического интерфейса Nautilus:
- Откройте Nautilus и найдите ваш скрипт.
- Кликните правой кнопкой мыши на скрипте и выберите пункт "Свойства".
- Вкладка "Разрешения": установите флажок "Позволить выполнение файла как программы".
При двойном клике на скрипте система предложит вам выбрать действие: "Запустить в терминале" и аналогичные варианты.
Командная строка:
Запустите ваш скрипт с конкретным терминальным эмулятором:
gnome-terminal -e "bash -c \"./your_script.sh; exec bash\""
xterm -e "bash -c \"./your_script.sh; exec bash\""
konsole -e "bash -c \"./your_script.sh; exec bash\""
Для предотвращения автоматического закрытия терминала после выполнения команды предусмотрены специальные флаги: --noclose
для konsole
; -hold
для xterm
. В gnome-terminal
изменение поведения при завершении осуществляется в настройках профиля.
Использование данных подходов позволит упростить и автоматизировать процесс выполнения bash-скриптов в терминальном окне прямо из графического интерфейса, предоставляя удобный доступ к выполнению и мониторингу работы скрипта.