Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Ярлык для запуска команды в терминале с показом результатов  (Прочитано 821 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн baron_P

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • We do what we must because we can
    • Просмотр профиля
Доброго дня.
Есть необходимость запускать команду в терминале и видеть результат выполнения. Команда одна и та же, хочется не лезть ради этого в терминал, а жмакать ярлык на раб.столе, чтобы терминал открылся сам и показал результат выполнения, а потом закрыть окно терминала мышью.
Сделал кнопку запуска приложения в терминале, но проблема в том, что терминал открыватся, возможно, выполняет команду и тут же закрывается. Пробовал добавить в ярлык TerminalOptions=\s--noclose , но ничего не изменилось. Если в Exec вместо команды засунуть read t, то терминал ждет нажатия кнопки перед закрытием. Но если сделать Exec=ls -ll; read t , то опять закрывается. Пробовал через вызов в ярлыке mate-terminal -e "ls -ll", но тут таже проблема.
Подскажите, как это сделать?
OS: Ubuntu Mate 20.04, Lubuntu 16.04

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8003
    • Просмотр профиля
Жмакай не бестолковый ярлык, а 'ctrl+alt+t'. Установи mc, он тебе заменит и рабочий стол, и терминал, и меню, и ярлыки, и текстовый редактор. И закрывать не надо.
А с терминалом, есть какой-то трюк, чтобы не закрывался. Поищи на форуме.

Оффлайн AlexDem

  • Активист
  • *
  • Сообщений: 725
    • Просмотр профиля
pause в конце команды добавь
Или
read -p "Press enter to continue"

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8003
    • Просмотр профиля
Пара трюков.
Проверил несколько вариантов. Сработал только вариант с созданием скрипта:
$ cat /opt/script
#!/usr/bin/env sh
ls -ll
read -p "Press any key..." key

$ cat /usr/share/applications/term.desktop
[Desktop Entry]
Name=Terminal not close
Exec=/opt/script
Icon=terminal
Terminal=true
Type=Application

Оффлайн baron_P

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • We do what we must because we can
    • Просмотр профиля
Спасибо, работает.
Скрипт .script.sh положил в хомяк
#!/bin/bash
ls -ll
read -p "Press any key..." key
Ярлык такой:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Name[ru_RU]=terminal
Exec=/home/username/.script.sh
Icon=terminal
Icon[ru_RU]=ke
Name=terminal
Я и сам думал в эту сторону, но пытался сделать через ~/.script.sh в ярлыке, а оно только абсолютный путь понимает.
Насчет MC это да, я бы и не женился в свое время, если бы у меня MC был. Но юзеркейс у меня фаерфокс-либреофис-тандерберд, изредка этот скрипт жмакнуть. MC тут лишний.
OS: Ubuntu Mate 20.04, Lubuntu 16.04

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 428
    • Просмотр профиля
Exec=x-terminal-emulator -e sh -c "ls -ll; echo -n Press ENTER to exit... ; read a"?

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8003
    • Просмотр профиля
Замечания хочешь?
Имя скрипта. Первая точка понятно, сам от себя спрятать хочешь. Но зачем расширение? Зачем расширение 'sh', если в шебанге 'bash'? А bash у тебя действительно в '/bin'?

Цитировать
...а оно только абсолютный путь понимает
Десктоп-файл это всё-таки не полноценный шелл, сложностей он не понимает. '~/' вообще много где может не сработать. Положил-бы скрипт в /usr/local/bin, можно было-бы писать только имя, без пути.
'Name[ru_RU]=terminal', а написал по не русски.


Пользователь добавил сообщение 04 Июля 2025, 15:18:56:
Skif_off, одного 'read' мало, ещё и 'echo'.  Пробовал, может некоторые терминалы и понимают, но далеко не все. И 'Exec=...' сложностей не понимает.
« Последнее редактирование: 04 Июля 2025, 15:18:56 от andytux »

Оффлайн baron_P

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • We do what we must because we can
    • Просмотр профиля
Замечания это хорошо.
. чтобы глаза не мозолило. Расширение по привычке, в книжке по башу скрипты с расширением были, с тех пор и пишу. /bin  у меня ссылка на /usr/bin, там он и лежит.

x-terminal-emulator у меня нет, а mate-terminal ругается на -c.
OS: Ubuntu Mate 20.04, Lubuntu 16.04

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8003
    • Просмотр профиля
x-terminal-emulator у меня нет...
Он есть у всех, если конечно ты сам его не удалил. Это симлинк на терминал по умолчанию.
Примерно с 2020г /bin у всех ссылка. Только поэтому твой скрипт сработает.
Gnome-terminal уже давно ругается, что '-c' - устаревший.
« Последнее редактирование: 04 Июля 2025, 15:44:17 от andytux »

Оффлайн bezbo

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1878
    • Просмотр профиля
видеть результат выполнения

в скрипте последней строкой
$SHELL

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 428
    • Просмотр профиля
Skif_off, одного 'read' мало, ещё и 'echo'.
Оно там есть.
Просто взял команду из настроек Double Commander. Сейчас проверил в Xubuntu 24.04 - работает как задумано.
mate-terminal ругается на -c.
Gnome-terminal уже давно ругается, что '-c' - устаревший.
С чего вдруг эмулятору терминала ругаться на "-c", если "-c" - параметр sh, а не эмулятора терминала? По идее он должен передать его sh и не лезть не в своё дело.

Пользователь добавил сообщение 04 Июля 2025, 20:23:58:
К слову, если память не изменяет, "Version=1.0" необязательно указывать. Я бы не стал во избежание недоразумений.
« Последнее редактирование: 04 Июля 2025, 20:23:58 от Skif_off »

Оффлайн Morisson

  • СуперМодератор
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 390
    • Просмотр профиля

Онлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8003
    • Просмотр профиля
"Утро вечера мудренее."

Увидел вчерашние ошибки и решил наделать новых.
Вариант без скрипта. За основу взял систему, где у меня несколько разных терминалов, и подсказку Skif_off.

На скриншоте. В левой панели mc содержимое десктоп-файла, этот десктоп-файл закреплён на левой панели, откуда и запускается.
Симлинк /etc/alternatives/x-terminal-emulator перенаправляет на разные эмуляторы терминала. Проверялись gnome-terminal, lxterminal, xterm. Справа, сверху вниз соответствующие им открытые окна.
Если симлинк направлен на gnome-terminal, то окно сразу закрылось. Осталось открытым, если симлинк направлен на gnome-terminal.wrapper.

ТС, по сложившейся традиции, не сказал, ни какая система, ни какой терминал. Только по некоторым обмолвкам можно предположить, что mate-terminal и наверное система ubuntu-mate.
Сейчас заглянул в неё. Есть xterm. Можно пробовать сравнивать с ним.
По аналогии с гномом, есть mate-terminal, и есть mate-terminal.wrapper. По умолчанию, x-terminal-emulator указывает как-раз на mate-terminal.wrapper. Аналогично и в xubuntu.
« Последнее редактирование: 05 Июля 2025, 09:14:36 от andytux »

Оффлайн baron_P

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • We do what we must because we can
    • Просмотр профиля
С mate-terminal.wrapper работает, спасибо. Без скрипта, конечно, красивее получается.
С системой все сложно. По запаре подумал про домашнюю Ubuntu MATE 20.04, но делалось все на рабочем ноуте с RED OS 7.3. Там тоже MATE, но вот x-terminal-emulator нет.
OS: Ubuntu Mate 20.04, Lubuntu 16.04

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.