Jak utworzyć skrypt otwierający okna terminalu i wykonujący w nich polecenia?

113

Mam trzy skrypty, które muszę uruchomić po uruchomieniu komputera Ubuntu, uruchamiają usługi, których używam w moim środowisku programistycznym.

Aby to zrobić, ręcznie otwieram trzy terminale i wpisuję polecenia.

Czy istnieje sposób utworzenia skryptu, który otworzy trzy terminale i wykona jedno polecenie w każdym z nich? (Każde polecenie powinno znajdować się w osobnym oknie terminalu, aby można było zobaczyć ich wyniki).

    
zadawane JSBach 02.06.2011, 21:58
źródło

5 odpowiedzi

116
gnome-terminal -e command

lub

xterm -e command

lub

konsole -e command

Dość dużo

terminal -e command

Aby terminal pozostał, gdy polecenie się zakończy:

W konsoli znajduje się flaga --noclose .

W xterm znajduje się flaga -hold .

W gnome-terminal przejdź do Edytuj - > Preferencje profilu - > Tytuł . Kliknij kartę Command . Wybierz opcję Przytrzymaj terminal z menu rozwijanego oznaczonego Po wyjściu polecenia . Powinieneś utworzyć dla niego nowy profil i wykonać go za pomocą

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
odpowiedział nickguletskii 02.06.2011, 22:03
źródło
48

Zamiast sztywnego kodowania gnome-terminal , konsole i tak dalej, użyj systemu Alternatives. Program wykonujący domyślny emulator terminalu to:

x-terminal-emulator

W moim systemie otwiera nowe wystąpienie Konsole za każdym razem, gdy wykonuję to polecenie.

Na szczęście terminale obsługują opcję -e dla wykonania polecenia (zweryfikowałem to dla konsole i gnome-terminal ). Argumenty po komendzie są przekazywane do wywoływanego polecenia. Bash odmawia pozostania otwartym w moim terminalu, potrzebny jest dodatkowy skrypt, aby uzyskać terminal:

#!/bin/sh
"$@"
exec "$SHELL"

Jeśli zapisałeś poprzedni skrypt jako /home/user/hacky i uczyniłeś go wykonywalnym, uruchamiałbyś skrypty przy pomocy:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

Wymagana jest pełna ścieżka, a /home/user/hacky musi być wykonywalna.

Moja poprzednia próba uruchomienia skryptu w nowym oknie terminala można znaleźć w poprawce nr 2 , to było wcześniej Zrozumiałem, że argumenty można przekazać do x-terminal-emulator .

    
odpowiedział Lekensteyn 02.06.2011, 22:29
źródło
8

Po prostu -

#!/bin/bash

/etc/init.d/ccpd status

To wystarcza dla innych poleceń, które nie muszą wyświetlać niczego na terminalu. Ale tutaj trzeba zobaczyć wyświetlany stan Musi więc działać w oknie terminala

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

Inna wiadomość , której celem jest []

Tutaj "NAMEOFTHEPROFILE" należy zastąpić nazwą profilu "Zatrzymuje terminal po wyjściu polecenia".

    
odpowiedział Karthik T 23.01.2013, 10:31
źródło
1

Komentowanie odpowiedzi przez Lekensteyn. Wiem, że to stary post, ale dla każdego, kto uzna to za przydatne (tak jak ja właśnie) Zamiast tworzyć kolejny "hacky skrypt" wystarczy umieścić funkcję wewnątrz skryptu, do którego dzwonisz

hacky_function()
{
"$@"
exec "$SHELL"
}

Wywołaj skrypt za pomocą "x-terminal-emulator -e / path / to / script hacky_function opcjonalne argumenty tutaj"

Nie zapomnij umieścić "$ @" na końcu skryptu

    
odpowiedział Sruli 06.12.2017, 21:11
źródło
-2

Użyj polecenia ekranu i -d odłączyć od istniejącej sesji screen i ponownie ją tu podłączyć wymusić nową sesję screenową -S utwórz sesję nazwaną zamiast domyślnej nazwy

    
odpowiedział Jack Heath 13.04.2014, 22:00
źródło

Przeczytaj inne pytania na temat tagów