Untuk menjaga ikhtisar saya suka menempatkan beberapa perintah selalu dalam urutan yang sama dan mulai secara bersamaan (gradle, git, database, scala-REPL, jboss ...)
-H (tahan) tampaknya berarti bahwa terminal tidak ditutup setelah penghentian, tetapi bagaimana cara saya mengakhiri proses seperti itu dengan sengaja? Tidak semuanya? Sedemikian rupa sehingga saya bisa terus menggunakan terminal.
Saya menggunakan xubuntu dengan dengan xfce4-terminal dan bash. Apakah ada solusi GUI yang lebih baik untuk memulai banyak perintah, dengan kemampuan untuk terus bekerja di jendela / tab itu?
Pembaruan: Jika Anda tidak tahu perintah-perintah ini: Jboss dan gradle terus-menerus menghasilkan output, yang Anda tidak ingin dicampur dalam terminal yang sama. Dan kadang-kadang mereka perlu diinterupsi dengan ^ C, dan restart. Saya tidak suka membuka kembali istilah xfce4 dan menavigasi ke direktori yang harus saya ikuti.
Database dan scala-REPL bersifat interaktif sehingga tidak ada gunanya memulai di latar belakang.
Skrip startup saya saat ini hanya menavigasi ke direktori yang diinginkan, dan membuka semua tab dalam urutan yang tepat untuk menemukannya selalu di posisi yang sama, menamai setiap tab untuk tujuannya:
xfce4-terminal -T eclipse --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
--tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
--tab -T bash --working-directory=/home/stefan/oximity \
--tab -T gradle --working-directory=/home/stefan/oximity/med \
--tab -T git --working-directory=/home/stefan/oximity/med \
--tab -T mysql --working-directory=/opt/mini/mysql \
--tab -T jboss --working-directory=/opt/mini/jboss \
--tab -T jboss-log --working-directory=/opt/mini/jboss/standalone/log \
--tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Eclipse dan arandr terlepas dari shell dan dijalankan di jendela mereka sendiri, sehingga param -e (eksekusi) berfungsi. Saya pikir untuk scala-REPL berfungsi karena ini adalah perintah terakhir dalam daftar.
sumber
xterm -e 'stuff;bash'
?Jawaban:
The
-H/-hold
pilihan adalah untuk menjaga terminal emulator Jendela terbuka sekali aplikasi mulai di dalamnya (shell atau lainnya) telah keluar. Dalam keadaan itu, tidak ada lagi yang bisa terjadi.Jika Anda ingin memulai perintah sebagai pekerjaan dari shell interaktif dalam emulator terminal xfce4-terminal dan tetap menjalankan shell dan menggunakannya secara interaktif setelah aplikasi keluar, dengan
bash
, Anda dapat menggunakan$PROMPT_COMMAND
variabel lingkungan, untukxfce-terminal
memulai shell interaktif yang memulai perintah yang diberikan tepat sebelum prompt pertama.Dengan begitu, perintahnya adalah pekerjaan shell itu yang berarti Anda dapat menangguhkannya dengan Ctrl-Zdan melanjutkannya nanti
fg/bg
seolah-olah Anda telah memasukkannya di prompt shell interaktif itu.Itu mengasumsikan bahwa Anda tidak mengatur
$PROMPT_COMMAND
di Anda~/.bashrc
. Perhatikan juga bahwa status keluar dari perintah tidak akan tersedia di$?
.Untuk membuatnya lebih seperti perintah yang dimasukkan pada prompt shell, Anda bahkan dapat menambahkannya ke daftar riwayat. Seperti:
Dengan begitu, begitu Anda keluar
vi
, Anda dapat menekan Uptombol untuk memanggil kembalivi
perintah yang sama .Cara yang lebih mudah untuk menulisnya:
Itu:
solusi seperti yang diberikan dalam jawaban lain berfungsi tetapi memiliki beberapa kelemahan:
cmd
sedang berjalan, itu akan membunuh bagian luarsh
karena hanya ada satu grup proses untuk keduanyash
dancmd
.cmd
$PROMPT_COMMAND
pendekatan, status keluar dari perintah tidak akan tersedia di$?
.Anda dapat mengatasi 1 di atas dengan melakukan:
Atau:
Dengan yang terakhir, Anda juga dapat menangguhkan proses dengan Ctrl-Z, tetapi Anda tidak akan dapat menggunakannya
fg/bg
. Anda akan dapat melanjutkannya di latar belakang dengan melakukankill -s CONT
pada pid daricmd
.sumber
bash
skrip, tidak ada riwayat sama sekali karena tidak ada pengeditan baris atau interaksi pengguna kecuali Anda gunakanread -e
dalam skrip Anda (dan Anda akan melihat bahwahistory -s text
berfungsi di sana untuk mengungguli riwayat yang dilihat oleh ituread -e
). Di sini, kami tidak menjalankanhistory -s
dari skrip, tetapi dari$PROMPT_COMMAND
kait shell interaktif.xfce4-terminal
karena setidaknya versi 0.6.3 sekarang menginginkan parameter tambahan ---disable-server
- untuk melewati lingkungan. Ref: lists.debian.org/debian-user/2017/10/msg00045.html .Sejauh yang saya mengerti pertanyaan Anda, Anda ingin menjalankan beberapa proses di terminal, dapat Ctrl+ + Cdan, setelah itu, biarkan jendela tetap terbuka, dengan shell.
Jika saya benar, ini bisa dilakukan dengan perintah seperti ini:
sumber
banyak aplikasi di
xfce4-terminal
tabMenambahkan shell interaktif ke setiap tab xfce
Anda dapat menggunakan retasan ini untuk menambahkan shell jika / ketika Anda Ctrl+Ctab:
Ini akan memberi Anda yang berikut:
sumber
Ketika keluar dari shell tanpa
-H
terminal akan ditutup juga. Dengan flag ini terminal akan tetap berjalan, tetapi proses shell ditutup dan tidak dapat dihidupkan kembali.Saya pikir Anda mencoba mengarsipkan bahwa Anda baru saja memulai terminal Anda dan lingkungan pengembangan Anda mulai?
Anda dapat membuat skrip shell dan memasukkan semua perintah Anda di dalamnya. Di akhir skrip, Anda baru memulai shell Anda:
Kemudian panggil skrip ini melalui
xfce4-terminal -e /the/script
. Ketika berhenti dari$SHELL
proses induk (skrip Anda) selesai dan tugas-tugas latar belakang akan menerima sinyal keluar dan berhenti juga.Jika Anda ingin membuatnya tetap hidup, gunakan misalnya
nohup jboss &
dalam skrip Andasumber