Bir terminal uygulaması için başlatıcıyla, program tamamlandıktan sonra terminali nasıl açık tutabilirim?


24

Bir uygulama başlatıcısından çalıştırdığım bir terminal komutum var. Bu harika çalışıyor, ancak bazen komut başarısız oluyor, bu yüzden terminalin açık kalmasını istiyorum böylece sonuçları görebiliyorum. Bunu nasıl yapabilirim?

Yanıtlar:


23

Komutunun çağrıldığını varsayarsak, mycommandfırlatıcımı bunu çalıştırmak için değiştiririm:

gnome-terminal -e "mycommand|less"

Daha kalıcı, belki de daha temiz bir çözüm istiyorsanız, GNOME terminalini açın, Düzenle, Profil tercihleri ​​bölümüne gidin ve Başlık ve Komut sekmesini tıklayın. "Komut çıktığında" seçeneğini "Terminali açık tut" olarak değiştirin.

Komutları çalıştırdığınızda, bir şey çalıştığında terminali açık bırakması gerekir.

Düzenleme: Eğer terminali gerçekten önemsemiyorsanız, sadece xterm'in tutma bayrağını kullanabilirsiniz:

xterm -e "mycommand" hold

7
Varsayılan terminal 'komut çıktığında' eylemi sürdürmek için yeni bir terminal profili oluşturmanızı, komut çıktıktan sonra açık kalmasını ve gnome-terminal --tab-with-profile=PROFILENAMEseçeneğini geçmenizi öneririm . Farklı bahaviours bu şekilde :-) için birçok profile sahip olabilir
invert

1
xterm -hold -e mycommand

8

Fırlatıcı doğru bir komut dosyası çalışıyor?

Komut dosyanızın sonunda ekle

read -p "Press any key to exit > " -n1 junk
echo 

Sonra senaryonuzu bitirene kadar bekleyecek.


1
+1 ve istemi yalnızca komut başarısız olursa (sıfır olmayan bir çıkış kodu döndürürse) birinin yapabileceğini göstermek içincommand || read -n1 -p "Command failed. Press any key to exit..."
Jukka Matilainen

8

.Desktop kısayolunuzda bunu kullanın

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

Komut dosyanız bittikten sonra, Bash işlemi kendisini yeni bir çağrı ile değiştirecektir.

Alıntılanan argümanları betiğinize aktarmanız gerekirse, alıntılardan kaçmanız gerekir:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

Diğer cevaplardan biraz farklı bir yaklaşım: Komutunuzu çalıştırın ve bu başarısız olursa bir kabuk çekin. Bu şekilde terminali açık tutmanız gerekmez (bu komutun başarısı veya başarısızlığı arasında ayrım yapmaz) ve bu kabuğu özellikle başarısızlıkta yararlı bulabilirsin. Kapatmak için sadece Ctrl-D (EOF), "exit", Alt-F4 (veya pencere yöneticiniz pencereleri kapatmak için ne kullanıyorsa) kullanın.

başarı ya da kabuk

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Bu dosyayı ~ / bin gibi bir yere yerleştirin, ardından başlatıcınızda "orjinal komutunuzu başarılı ya da kabuklayın" kullanın.


0

Bu cevap , ne istersen onu yapmak için şimdiye kadar gördüğüm en iyi cevabı veriyor. --İnit-file parametresiyle çalıştırmak ve kullanmak için komutlarla bir komut dosyası oluşturmanızı önerir (bash özel, ancak muhtemelen aynı şeyi csh / tcsh / zsh, vb. İçin de yapabilirsiniz):

#!/bin/bash --init-file
commands to run

... ve şu şekilde çalıştırın:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

0

watchKomutu kullan .

Biçim: watch -n60 myCommandveyawatch -n60 "my command string"

  • -nçağrıları arasında beklenecek saniye sayısını belirtilen myCommand ; örn: Yukarıdaki komut arayacak myCommand sonsuza kadar her 60 saniyede bir.
  • Komut birden kelimeler ise, o içeride çift tırnak koyun: "my command string".

Diyelim ki disk kullanımını görüntüleyen ve okuyucunun görmesi için açık kalan bir Başlatıcı istiyorsanız. Bu komutu sadece her 60 saniyede bir
watch -n60 "df -h"çağıran Başlatıcı: içinde kullanırdım df -h.

Kabul edilen cevabını gnome-terminal -e "mycommand|less"beğeniyorum çünkü varsayılan olarak farklı bir terminal kullanan Xubuntu kullanıyorum.


0

Başlatıcıya sağ tıklayıp özellikleri girmeyi deneyin.

Terminal penceresini açık tutmak için bir seçenek olmalı görüntü tanımını buraya girin

.Desktop dosyasında giriş bulunmalıdır X-KeepTerminal=true

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.