Bu soru birkaç gündür beni rahatsız ediyor ve işte öğrendiğim materyallerle birlikte yazımı değiştirdim. Özellikle, hedefim BASH’daki komut satırının yanında saati göstermekti. Radu Radeanu'nun cevabında bahsettiği gibi, anahtar, komut istemini sürekli yenileyebilen veya ekranı yeniden çizebilecek, ekranınıza veya ne yazdığınıza müdahale etmeyecek bir işlev veya değişken bulmaktır. Bu, G_P tarafından gösterildiği gibi while döngüsüyle başarmak mümkün olsa da, ekranın tput işleviyle sürekli olarak yeniden çizilmesi, ekranım tazelemeye başladığında ne olursa olsun metinle karışır. OP'nin istediği şeyi G_P kodunu değiştirerek biraz değiştirerek elde etmeye çok yaklaştım ancak Radu'nun cevabının OP'nin istediğine en yakın olduğuna inanıyorum. Daha fazla uzatmadan, işte bazı şeyler.
# 1, Tercih ettiğim çözüm: Terminal Çoklayıcı
Terminal multiplexer, terminal ekranını iki veya daha fazla ekrana bölmeyi sağlayan bir yazılımdır. Özellikle, Byobu terminaline dikkat çekmek istiyorum. Bu ncurses tabanlı terminal emülatörü, zamanı, CPU yüzdesini, hafızayı ve diğer birçok göstergeyi göstermenizi sağlar. Byobu terminalimin ekran görüntüsünde işlemci sıcaklığını, pil yüzdesini, internet bağlantı kalitesini, CPU frekansını, RAM'i, tarihi ve tabii ki zamanı görebilirsiniz. Terminalde sürekli olarak bunları izlemekle ilgileniyorsanız, Byobu gitmenin yolu. Aslında, çok beğenmeye geldim, giriş yaparken tty'ye otomatik olarak yüklenmesini ayarlıyorum. Tek ilginç olan, tty'de aslında ayrı pencereleri birleştiremeyeceğinizdir - yalnızca F3 ve F4 tuşlarıyla sekmeler arasında geçiş yapabilirsiniz.
Çoklayıcı pencereler içeren alternatif bir çözüm splitvt
, ekranı iki parçaya bölen kullanmaktır . Saat tty-clock
ile watch komutunu kullanmak gibi bir terminal saati çalıştırabilir veya kendiniz bir komut dosyası ile kodlayabilirsiniz. Bundan sonra daha fazlası. Ekran görüntüsünde, normal bash istemi ile bölmenin bir bölümünü üstte görebilir ve alt bölümde ise date
komutun komutunu sürekli olarak yenileyerek çalışan bir komut dosyası görebilirsiniz clear
.
# 2, Ne zaman Döngü ve giriş yapın
Bu muhtemelen soruyu soran kişinin bash ile ne yapmak istediğine yakındır.
G_P while do
ve tput
komutlarını içeren harika bir çözüm yolladı . Ancak G_P'nin kodunda sevmediğim iki şey vardı. Bir, saat istemin sağındaydı ve iki - uyku döngüsü 1 saniye olduğu için (uyku derken orijinal koda bakın), ekran her saniye yeniden çiziliyor ve bu da çıktımı bozuyor. Yaptığım şey, bash komut istemimi \ n operatörüyle bir satır daha alçak olacak şekilde düzenlemek ve G_P'nin kodunu değiştirmek, böylece tput operatörü saati komut satırının hemen üstüne getirecek ve her 60 saniyede bir yenileyecek; saat ve dakikaları görmemi sağlıyor (ve dakikaları tam olarak umursamıyorum), saatin döngüsü ekranımı karıştırmıyor. İlk önce işte benim istemi:
PS1='${debian_chroot:+($debian_chroot)}\n[*\u@Ubuntu*]\n $(date) :\w\$ '
Ve işte G_P'nin değiştirilmiş kodu: enter code here
while sleep 60;do tput sc;tput cup 0 0;date +%R;tput rc;done &
Küçük düzenleme : Yukarıdaki kodun bazen saati hemen göstermediğini fark ettim. İşte daha iyi bir versiyon: while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done &
Bu saat önce ekrana geçiyor, sonra 60 saniyelik uyku döngüsünden geçiyor.
Not 0 0 kupası, saati ekranın sağ üst köşesine yerleştirir, istemimin hemen üstünde ve uyku 60, uyku döngüsünü 60 saniyeye değiştirir, çünkü bu şekilde her saniye yerine sadece saat ve dakikaları izleyebilirim. Bu sayede, ekranda hangi metin olursa olsun, etkilenmez, çoğunlukla (sadece aynı saat saatini tazeleyen bir komutu çalıştırdığımda).
PS1 hattı zaten .bashrc profilinizde, bu yüzden biraz ayarlamak zorundasınız. While döngüsü, aynı dosyada bir yere, tercihen # yorum ile sonunda eklenmelidir, bu başlangıçta eklediğiniz şeylerdir. Ve bubu yaptığınızda ve eskisi gibi dönmeniz gerektiğinde, böyle bir dosyayı her zaman yedeklemeyi unutmayın.
# 3, Komut Dosyası ve diğer
Bu bölüm sadece zaman görmek isteyenler içindir. Sürekli izlemek isteyenler için, # 1 ve # 2 tercih edilen seçeneklerdir.
Zaten gördüğümüz gibi süre do döngü oldukça yararlıdır. İşte döngü, tarih ve uyku komutları yaparken bir saati nasıl oluşturacağınız.
Return / enter tuşuna basın, temelde her saniye temizlenen ekranda gösterilen tarih komutunun çıktısını göreceksiniz. Bunları her seferinde yazmak istemiyorsanız, tüm bunları komut dosyasına dönüştürün:
#!/bin/bash
while true
do
clear;date
sleep 1
done
Şimdi bu betiği splitvt ile bir bash örneğinde, diğerinde çalışırken çalıştırabilirsiniz.
Başka bir çözüm, watch -n1 date
tarih komutunu 1 saniyelik bir süre ile sürekli yürütecek olan komuttur.
Sonuç olarak: Bu sorunun cevabını bulmaya çalışırken bazı şeyler öğrendim ve bulgularım bir şekilde size yardımcı oldu ve umarım bu soruya katkıda bulunabilmişimdir. Byobu terminal IMHO en iyi çözümdür, ancak kendiniz karar verin, biraz araştırma yapın ve hangisinin sizin için en uygun olduğunu seçin.
Araştırma yaparken bulduğum bazı şeyler:
Orijinal gönderim, minimalist çözüm: ~ / .bashrc dosyanızı düzenleyin. Ben nano ile düzenlemeyi tercih ediyorum.
nano ~/.bashrc
İşte kendi düzenlenmiş dosyamın kısmı:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\$'
else
# PS1='${debian_chroot:+($debian_chroot)}[*\u@Ubuntu*]:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}[*\u@Ubuntu*]\t:\w\$ '
fi
Else ifadesinden sonra ilk satır # ile yorumlanır (bu benim eski istemimdir), şimdi ikinci satır istediğiniz satır ve özellikle de \t
operatördür. Bu 24 saatlik biçimde çalışma süresini gösterir. Daha fazla bilgi için bu göz atın . Ayrıca küçük bir not, diğer şeyleri kullanıyorum, çünkü renkli istemi kullanmıyorum.
Not: Cevabımı bir şey eklemek veya herhangi bir şekilde düzenlemek gerekirse lütfen bana bildirin, ancak çoğunlukla bunun bulabileceğim en kesin cevap olduğuna inanıyorum ve en azından şahsen bir şey ekleyemiyorum. bunun için yeni.
$PS1
(Prompt) değişkenini zaman alacak şekilde ayarlayabilirsiniz , ancak değişiklik olup olmadığından emin değilim.