2010-01-27 24 views
7

İyi akşamlar saatine göre terminalin rengini değiştirme belki bu mini projesi çok iddialı. Birinin doğru yöne işaret etmesini umuyoruz.Mini Proje:</p> <p>Ben Unix için oldukça yeni duyuyorum, günde

Hücre içinde çalışmak ve dışarıda ne kadar ışık olduğunu göremiyorum. Genelde sabah (güneşli) sarı bir terminali ve gece saat 3: 00'ü geçtikten sonra siyah/yeşil kullanırım.

Yapmak istediklerim (kısmen sadece bash'ım uygulamak). Tüm terminallerimin rengini 3: 00'te değiştirecek bir senaryo yazmak. Eğer çalışırsa, belki her saatte bir değişiklik yaparım ya da böyle bir şey yaparım. Bu güvenli olur mu? Mümkün mü? Solaris 10 Bash kabuk Gnome

Bunu şu anda bakıyorum: Change Gnome terminal theme programmatically

+0

"siyah/yeşil" siyahta normal yeşil anlamına gelir? "sarı" ile tam olarak ne demek istiyorsun? siyah üzerine sarı, sarı beyaz, sarı sarıdır? – Sparr

+1

@Sparr yeşil siyah ve siyah üzerine sarı, her ne kadar renklerin önemli olduğunu düşünmüyorum bile .. – sixtyfootersdude

cevap

4

Bunu yapıyor olsaydım, PROMPT_COMMAND ile başlardım. Bash, bir komut istemini görüntülemeden önce bu komut dosyasını çalıştıracaktır.

Birkaç seçeneğiniz var.

PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi 

Yoksa var PROMPT_COMMAND harici komutunu çalıştırın (ayrıca bir betik olabilir ya da isterse Farklı bir dili kullanabilirsiniz) orada bütün işi yapmak için olabilir: Sen PROMPT_COMMAND içinde bir alfabenin kendisini olabilir :

PROMPT_COMMAND=/path/to/setcolor_timeofday 

Bu gördüğünüz sadece delik süresi (bir dosya izlemek için tail -f kullanarak, örneğin) üzerinde değiştiğinde bir program çalışıyorsa eğer dönünceye kadar, arka plan değişiklik olmayacak olmasıdır bash istemi.

0

Kullanım cron, bu Unix iş zamanlayıcı var

İşte benim özellikleri bazılarıdır. Ve bağladığınız sorudaki gibi .bashrc değiştiren bir komut çalıştırmak için ayarlayın. Sorun, sadece yeni terminaller için çalışacak olmasıdır, eğer açmışsanız, onları değiştirmeyecektir.

+0

Hmmm, yorum için teşekkürler ancak terminallerimi nadiren kapatıyorum bu yüzden muhtemelen işe yaramayacak. – sixtyfootersdude

2

Kabuk ön planını ve arka plan renklerini bash içinde PS1 ile değiştirmek, burada diğerleri tarafından belirtildiği gibi en kolay olacaktır. R Samuel Klatchko'nun PROMPT_COMMAND ile olan yaklaşımı muhtemelen en çok yönlü. Ancak, bu dezavantajları vardır. Bash sadece "mat" arka plan renkleri kullanabilir ve ön plan/arka plan renkleri herhangi bir uygulama tarafından geçersiz kılınabilir. Gnome Terminal temanızı programlı olarak, özellikle gerçek zamanlı olarak değiştirmek çok daha zor olacak, ancak daha güzel sonuçlar üretecek.

+0

@Sparr - dikkat edilmesi gereken bir şey, PS1 değil PROMPT_COMMAND'ı önermem. Bu, PS1'deki (veya PS2, vb.) '0 genişlik karakterleri' kullanmanın bash terminalinin işleyişini dağıtacağı için önemlidir. Ne demek istediğimi görmek için, 'export PS1 = '\ 033 [42m \ w \ $'' yapmayı deneyin ve daha sonra terminalin genişliğinden daha uzun olan bir komut satırı yazmayı deneyin. –