Saya memiliki direktori home bersama yang diautomatiskan melalui NFS di semua server UNIX tempat saya masuk. Saya ingin memiliki satu .screenrc yang (misalnya) menempatkan nama host di baris hardstatus dalam warna yang berbeda untuk menunjukkan ketika saya masuk ke produksi versus pengembangan; nama host kami sedemikian rupa sehingga ini dapat dengan mudah dilakukan melalui penggunaan pencocokan pola.
Apakah ada cara untuk memasukkan pernyataan bersyarat ke .screenrc? Memandang cepat halaman manual tampaknya tidak mengungkapkan sesuatu yang jelas.
EDIT:
Untuk memperjelas, saya sudah memiliki garis status keras khusus; Saya ingin mengubah beberapa pewarnaan / bidang yang ditampilkan berdasarkan nama host tempat layar dipanggil. Saya sudah memiliki sesuatu seperti ini untuk PS1 saya, namun saya lebih suka melakukan ini di baris status layar karena saya melompat dari host ini ke router / switch, yang tidak memungkinkan saya untuk melakukan colourisation yang cepat. Dengan cara ini, saya dapat memiliki satu jendela untuk produksi, dan satu untuk pengembangan, dengan warna garis status layar memberi tahu saya yang mana saya berada sekilas.
sumber
Jawaban:
Saya melihat dua cara untuk melakukan ini, yang pertama adalah membuat file .screenrc oleh tuan rumah.
Seperti
.screenrc_serverA
,,.screenrc_serverB
...Dalam skrip startup shell Anda, atur SCREENRC ke sesuatu seperti
.screenrc_`hostname`
Tentu saja Anda dapat menggunakan perintah sumber layar untuk memasukkan sesuatu seperti
.screenrc_default
di setiap file .screenrc_… kustom sehingga file tersebut hanya berisi baris keterangan / hardstatus dan bukan seluruh konfigurasi setiap kali.Cara kedua adalah dengan mengeksekusi perintah seperti
screen -X hardstatus lastline ...
(menggunakan jika tes untuk mengeksekusi perintah dengan nilai yang berbeda untuk ... tergantung dari nama host) di skrip startup shell Anda. Ketika Anda akan masuk ke server, layar -X tidak akan melakukan apa-apa karena layar belum akan diluncurkan, tetapi setiap kali Anda membuka jendela baru di layar, hardstatus akan diperbarui.Tentu saja solusi pertama lebih baik karena yang kedua akan menyegarkan garis hardstatus setiap kali Anda membuka jendela berita yang mungkin tidak berguna karena nama host tidak akan berubah.
sumber
hostname
". Saya punya masalah untuk memasukkan `dalam pos@radius tepat dengan hal SCREENRC, tapi itu bukan jawaban yang sangat lengkap, jadi saya akan menguraikan ...
~ / .bashrc
* Selalu gunakan tes baru !
Sepatah kata tentang karakter pelarian
Cara yang tepat untuk memasukkan warna dalam skrip adalah dengan tput, bukan karakter melarikan diri. Karakter pelarian Anda khusus untuk terminal Anda. Perintah tput adalah terminal aware. Saya menulis ini ketika saya perlu menyukai skrip saya:
~ / bin / COLORS.sh
Saya juga membuat skrip untuk menunjukkan penggunaan tput. Anda bisa mendapatkannya dari intisari ini.
Lihat:
http://www.ibm.com/developerworks/aix/library/au-learningtput/?S_TACT=105AGY06
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html
sumber
setaf
digunakan, meskipun seharusnyasetab
( b bukan f ) dan yang kedua yang menggunakan9
sebagai default tidak berfungsi untuk saya, mungkin karena versi tput tidak standar (baik dalam kasingnya atau di kasinganku, aku benar-benar tidak tahu dan itu tidak terlalu berarti)Cukup atur di .screenrc Anda sebagai variabel hardstatus. Selama Anda menggunakan variabel seperti% H untuk nama host, itu akan berubah agar cocok dengan nama host apa pun yang Anda kerjakan.
Akan memberi Anda garis status di bagian bawah yang terlihat seperti
nama host merah pada hitam, waktu hijau pada hitam, tanggal kuning pada hitam. jendela yang ditandai dengan * adalah jendela saat ini, ditampilkan dalam teks biru dengan latar belakang putih. jendela yang ditandai dengan - adalah jendela yang sebelumnya aktif, ditampilkan teks putih di atas hitam. jendela 1, di atas, bukan arus, atau sebelumnya, dan akan ditampilkan dalam warna putih di atas hitam. kemungkinan lain akan menunjukkan kepada Anda pengguna lain yang terpasang pada windows, putih di atas hitam, dan ditandai oleh +.
memiliki tampilan waktu juga membantu menjaga hidup jika Anda ssh ke server jauh untuk menjalankan layar, karena waktu yang berubah setiap menit akan membuat sesi Anda tetap hidup, bahkan jika shell idle di sisi remote.
sumber
Anda dapat mewarnai garis status dari dalam skrip backtick dengan mencetak
\005{..r}
atau serupa (r
untuk merah dll seperti di dalam.screenrc
dirinya sendiri), sehingga Anda bisa meng-hash nama host untuk sampai pada angka, atau hanya memiliki banyak pernyataan kondisional untuk ditetapkan warna. Sebagai contoh, inilah skrip untuk mengubah warna dan mencetak nama host untuk digunakan di dalam layar:Anda kemudian menambahkan entri untuk skrip ini ke
.screenrc
dan merujuknya dalam hardstatus atau keterangan sebagai% 4`:Ini mengasumsikan nama host tidak mungkin berubah, karenanya batas waktu dan validitas 1 jam (3600 detik); bit yang mengelilingi panggilan ke backtick itu sendiri hanya menempatkan tanggal di awal baris dan waktu setelah nama host.
Anda bahkan dapat menggunakan mekanisme ini untuk mewarnai hasil skrip tergantung pada nilai level pengisian baterai, beban atau suhu sistem, dengan asumsi Anda memiliki akses ke nilai yang relevan dari skrip shell.
sumber
screen
pelarian\005
- dengan cara itu seluruh pemformatan bersyarat dapat dimasukkan ke dalam skrip shell yang jauh lebih mudah dibaca daripada yang sudah sulit diuraicaption
.hardstatus
arahan layar.Jika Anda ingin menghindari banyak skrip, Anda dapat mencoba ini:
grep hanya akan mencetak nama host jika cocok dengan "prod", jadi Anda dapat menghubungkannya ke backtick dan
%?
konstruk. Biola!sumber