Saya memiliki tiga skrip yang harus saya jalankan ketika saya memulai mesin Ubuntu saya, mereka memulai layanan yang saya gunakan di lingkungan pengembangan saya.
Untuk melakukan itu, saya secara manual membuka tiga terminal dan mengetikkan perintah.
Apakah ada cara untuk membuat skrip yang akan membuka tiga terminal dan menjalankan satu perintah di masing-masing terminal? (Setiap perintah harus di jendela terminal terpisah sehingga saya bisa melihat hasilnya).
sumber
gnome-terminal -e command
hanya berfungsi jikacommand
dikutip. Jadi ini tidak bekerja:gnome-terminal -e "echo hello world; sleep 3"
tapi ini tidak:gnome-terminal -e "bash -c 'echo hello world; sleep 3'"
. Mendesah.; $SHELL
di akhir perintah. Contoh:gnome-terminal --tab --title="test" --command="bash -c 'cd /etc; ls; $SHELL'"
Alih-alih keras-coding
gnome-terminal
,konsole
, dan sebagainya, menggunakan sistem Alternatif. Program yang menjalankan emulator terminal default adalah:Di sistem saya, itu membuka contoh baru Konsole setiap kali saya menjalankan perintah ini.
Untungnya, terminal tampaknya mendukung
-e
opsi untuk mengeksekusi suatu perintah (saya memverifikasi untukkonsole
dangnome-terminal
). Argumen setelah perintah diteruskan ke perintah yang dipanggil. Bash menolak untuk tetap terbuka di terminal saya, skrip tambahan diperlukan untuk mendapatkan terminal:Jika Anda menyimpan skrip sebelumnya sebagai
/home/user/hacky
dan membuatnya dapat dieksekusi, Anda akan menjalankan skrip Anda dengan:Jalur lengkap diperlukan dan
/home/user/hacky
harus dapat dieksekusi.Upaya saya sebelumnya untuk menjalankan skrip di jendela terminal baru dapat ditemukan di revisi # 2 , sebelum saya menyadari argumen dapat diteruskan ke
x-terminal-emulator
.sumber
bash
) atau memiliki baris sepertiread -p "Press Return to continue"
.cd xxx && start.sh
. Penerjemah melihat && sebagai bagian kedua dari perintah (yang logis), tetapi jika saya mengutipnya, maka ia mencoba mengeksekusi semuanya sebagai satu argumen besarCukup sederhana-
Ini cukup untuk perintah lain yang tidak perlu menampilkan apa pun di terminal. Tapi di sini kita harus melihat status yang ditampilkan.
Jadi, perlu dijalankan di jendela terminal
Pos lainnya dimaksudkan
[]
untuk menjadi penampungDi sini "NAMEOFTHEPROFILE" harus diganti dengan nama profil yang "Memegang terminal ketika perintah keluar".
sumber
[]
hanyalah placeholder--window-with-profile=NAMEOFTHEPROFILE
apa yang telah saya berikanDibantu oleh jawaban @ nickguletskii , dan komentar saya sendiri di bawah jawabannya, dan terinspirasi oleh upvote @ grabantot atas komentar saya, inilah cara pilihan saya untuk melakukannya, terutama ketika saya ingin terminal tetap terbuka sehingga saya kemudian dapat menggunakannya secara manual.
Ex. penggunaan: ini sangat berguna untuk ditambahkan ke program startup Anda sehingga skrip ini akan berjalan, buka terminal, buat dan beri nama tab di terminal, dan jalankan perintah untuk Anda. Atau, Anda bisa menambahkan symlink ke skrip ini ke desktop Anda. Saya menggunakan jenis pendekatan ini sehingga saya dapat mengklik dua kali ikon tunggal di desktop saya dan membuatnya membuka banyak terminal (dengan berbagai tab yang dinamai sesuai dengan pekerjaan yang akan saya lakukan di dalamnya) dan program untuk mengatur lingkungan pemrograman saya, misalnya, untuk pekerjaan sehari-hari.
Berikut adalah contoh yang dibuat, yang membuka satu tab, judul itu "test", kemudian jalankan perintah sederhana
cd /etc; ls
di dalamnya. Bagian$SHELL
di akhir memaksa shell untuk tetap terbuka sehingga Anda dapat melihat outputnya dan terus menggunakannya (saya mempelajari ini di tempat lain di Stack Overflow):Inilah contoh yang lebih rumit yang membuka 3 tab terpisah di terminal gnome yang sama. Ini adalah jenis hal yang dilakukan pintasan desktop saya sehingga saya dapat membuka banyak jendela pemrograman sekaligus:
Berikut ini rincian perintah di atas:
gnome-terminal
= membuka terminal gnome--tab
= buka tab unik untuk apa yang terjadi selanjutnya--title="tab 1"
= beri judul tab ini "tab 1"--command="bash -c 'cd /etc; ls; $SHELL'"
= jalankanbash -c 'cd /etc; ls; $SHELL'
perintah, yang merupakan perintah yang baru saja saya buat sebagai contoh; inilah fungsinya:bash -c
mengatakan itu adalah perintah bash 'cd /etc
= 'c'hange' d'irectory ke jalur "/ etc"ls
= 'Bukan konten dari direktori ini$SHELL
= berita gembira rahasia ini diperlukan untuk menjaga shell terbuka sehingga Anda dapat bekerja dengannya. Jika Anda ingin shell terbuka, jalankan perintah Anda, lalu tutup, cukup hapus bagian ini. Namun, saya ingin agar tab tetap terbuka sehingga saya bisa membuat keajaiban pemrograman. :)--tab
bagian untuk menghasilkan tab 2, lalu lagi untuk tab 3. Sesuaikan dengan isi hati Anda.Tangkapan layar:
sumber
mengomentari jawaban oleh Lekensteyn. Saya tahu ini adalah posting lama, tetapi bagi siapa saja yang menganggap ini berguna (seperti yang baru saja saya lakukan) Alih-alih membuat "skrip hack" yang lain dengan hanya meletakkan fungsi di dalam skrip yang Anda panggil
Panggil skrip Anda dengan "argumen opsional x-terminal-emulator -e / path / ke / script hacky_function di sini"
Jangan lupa letakkan "$ @" di akhir skrip
sumber
Gunakan perintah layar dan -d lepas dari sesi layar yang ada, dan pasang kembali di sini -m memaksakan sesi layar baru -S membuat sesi bernama daripada menggunakan nama default
sumber