Saya menggunakan Ubuntu dan secara manual dapat mengubah bash
warna prompt shell menjadi hijau menggunakan
export PS1="\e[0;32m[\u@\h \W]\$ \e[m"
Namun, saya ingin warna shell prompt berubah secara otomatis setiap kali saya membuka terminal atau tab baru. Saya sadar bahwa PERSYARATAN tty dasar memiliki 16 warna, dan tidak apa-apa untuk memutar warna jika lebih dari 16 terminal terbuka. Apakah solusinya juga berfungsi ketika saya terhubung melalui Putty
, tmux
atau screen
.
Ide saya adalah menulis skrip shell dan menempatkannya di .bashrc
mana mendeteksi sesi terminal baru yang telah dibuka pengguna dan menambah counter global dari \e[0;31m[
ke \e[0;47m[
. Bagaimana cara mendeteksi jumlah terminal yang dibuka oleh pengguna?
sumber
tty
. Saya kira kita / orang lain terlalu berkonsentrasi pada "pertanyaan" itu dan lupa bahwa mungkin ada solusi lain untuk seluruh "kebutuhan" :) Saya bahkan akan bermain dengan menerapkan pemilih warna acak. Jika 256 warna, memilih warna yang sama / mirip tidak akan banyak terjadi. Namun pengaturan warna secara manual untuk nomor poin yang diberikan akan memberikan personalisasi yang lebih baik.color="\e[38;5;"$(((RANDOM % 231 )+1))"m"
(hanya 231 untuk menolak skala abu-abu), namun banyak dari warna-warna itu hanya warna yang berbeda dan beberapa dari mereka gelap sehingga mungkin hampir tidak terlihat dan saya tahu tidak ada yang akan menggunakannya dalam kehidupan nyata ...Dalam situasi pengguna tunggal, jika kita mengambil contoh
xterm
, kita bisa menghitung jumlah pidsxterm
;xterm
membuat pid terpisah untuk setiap jendela.gnome-terminal
Namun menjalankan satu pid, tetapi kabar baiknya adalah ia menciptakan proses anak untuk setiap jendela dan / atau tab. kita dapat mengambil proses anak ini dengan perintah:Namun ada beberapa komplikasi yang harus dihadapi:
Membaca pertanyaan Anda, kami dapat berasumsi, bahwa pengguna dalam hal ini sebenarnya adalah pemilik sesi-x . Biasanya kita cukup menggunakan
$USER
-variable, tetapi ini mungkin tidak cocok dengan pengguna yang saat ini masuk$DISPLAY
.Dalam situasi multi-pengguna, pid milik aplikasi terminal (baik yang), tidak harus milik arus
$DISPLAY
. Kita perlu memisahkan hanya pids yang relevan dan pids anak.Pada Unity (15.10 atau lebih rendah), jika pengguna kedua masuk, proses tambahan dimulai (
gnome-pty-helper
), yang muncul sebagai proses anak dalamgnome-terminal
, tetapi proses (jelas) tidak memiliki jendela atau tab. Pada Mate , prosesnya tetap ada.Pendeknya
Untuk menghitung jumlah tab dan / atau jendela aplikasi terminal, kita perlu:
$DISPLAY
(x-sesi)$DISPLAY
gnome-pty-helper
berjalan, untuk memperbaiki nomor.Namun ini dapat ditulis dengan sangat baik, untuk menemukan jumlah jendela dan / atau tab yang saat ini terbuka.
Naskah
Dalam skrip di bawah ini, aplikasi terminal yang ditargetkan digunakan sebagai argumen . Script berfungsi pada banyak terminal yang saya uji. Pengecualian ada
Tilda
pada saat ini.Sebuah contoh
gnome-terminal
jendela, satu (satu di gambar) dengan tigagnome-terminal
jendela, dan duaxterm
jendela.Perintah:
output:
sementara
output:
Naskah
Menggunakan
Salin skrip ke file kosong, simpan sebagai
get_terms.sh
, buat dan jalankan dengan perintah:sumber
gnome-pty-helper
berjalan, bahkan ketika hanya ada satu pengguna yang masuk (tepat setelah reboot) dan ketika saya membuka sejumlah terminal ia berjalan kedua, pembantu yang sama. Skrip baru Anda tampaknya berfungsi untuk terminal-pasangan (tidak dapat menyebabkan nol-hal itu), tetapi dengan xterm, ketika saya hanya 1 membukanya, ia menunjukkan0
dan mulai menunjukkan angka yang baik hanya setelah yang kedua dan dengan terminal gnome-terminal itu selalu menunjukkan satu terlalu sedikit (keluaran0
ketika hanya satu dibuka).Sebuah
awk
cara:Penjelasan:
Pada perintah 1 liner di atas,
awk
digunakan untuk menemukan hitungan terminal. Di dalamawk
program, itu hanya memeriksa jumlah baris yang dikembalikan oleh perintah siapa - 1.sumber
who | awk 'END{print NR - 1}'
karena yang Anda inginkan adalah jumlah baris - 1.Cara sederhana mungkin juga hanya untuk menjalankan
System Monitor
(jika dimulai dari Terminal Anda harus menulisgnome-system-monitor
) dan di bawah tab "Proses" mengatur proses yang berjalan berdasarkan Nama dan kemudian menghitung jumlah kemunculanBash
dalam daftar (mereka akan bersama-sama jika Anda mengatur dengan nama, jadi mudah untuk dihitung).Perhatikan bahwa Anda harus mencari
Bash
dan bukanGnome Terminal
jika Anda ingin melihat jumlah terminal yang dibuka oleh pengguna. Setelah Anda membuka TerminalGnome Terminal
juga akan muncul di daftar Proses tetapi akan tetap hanya satu bahkan jika lebih banyak Terminal dibuka. Tombol "Lihat" diSystem Monitor
memungkinkan Anda untuk mengatur proses mana yang akan dilihat, misalnya. Semua Proses / Proses Pengguna / Aktif ...sumber