Ekranın yarısını komut satırından temizle


11

Terminali temizlemenin bir yolu var mı ama istemi ekranın üstünde bırakmak yerine ortada bırakıyor? Öyle görünüyor cleartemelde tüm komut satırı parametreleri göz ardı eder.

Bunu yapmanın bir yolu olacağını düşündüm tputama bulamıyorum.

Yanıtlar:


12

tputİmleci ekranda belirli bir satıra taşımak için kullanabilirsiniz , örn.

tput cup 11 0

Onikinci satıra taşımak için (değerler sıfırdan sayılır).

Aynı çizgiler boyunca, tputbu konumdan ekranın sonuna kadar olan mesafeyi temizlemek için kullanabilirsiniz ed. birleştirerek,

tput cup 11 0 && tput ed

istendiği şey olabilir.

Ekranın yarısına gitmek istiyorsanız, ilk sayı

stty size

(çoğu sistemde) ekranın satır sayısıdır. Bunu komuta ekleme:

tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed

clearProgram farklıdır den tput ed:

  • o imleci hareket ev konumuna (sol üstte) ve
  • o noktadan ekranın sonuna kadar temizler.

Dikkat: Bazı platformlarda tput ed, uzun zaman önce çözülen sorunlar nedeniyle çalışmayabilir. Bu durumlarda, curses / ncurses yapılandırmanızı yükseltmek sorunu çözecektir.



1
On yıl önce düzeltilmiş bir hata gibi geliyor. Belki bir şeyleri yükseltme zamanı.
Thomas Dickey

0

Satır sayısı tput cuptekse tüm sayfayı temizler.
bu şekilde yazmak bunu düzeltmelidir:

tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed

-1

Gerisini korurken ekranın alt yarısını temizlemekle ilgileniyorsanız , bu işe yarayacaktır:

half=$(stty size | awk '{print int($1/2)-1;}'); for i in `seq ${half}`; do echo '' ; done && tput cup ${half} 0 && tput ed

DÜZENLEME: Açıklığa kavuşturmak için, seq $(stty size | cut -d' ' -f1)diğer yanıtları çalıştırırsanız çıktının ilk yarısını bırakırken, bu komut ikinci yarıyı (yani en son çıktıyı) bırakacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.