Linux Shell Scripting

Bash İlerleme Çubukları: Üç Etkili Yöntem

Spread the love

Uzun süreçler sırasında görsel geri bildirim sağlamak için ilerleme çubukları çok değerlidir ve kullanıcılara görevin ilerlemesi hakkında net bir gösterge sunar. Bash’in yerel ilerleme çubuğu desteği olmamasına rağmen, birkaç harici araç ve kütüphane sağlam çözümler sunmaktadır. Bu kılavuz, üç farklı yöntemi ele almaktadır: pv komutunu kullanma, dialog komutunu kullanma ve ncurses kütüphanesini kullanma.

İçerik Tablosu

İlerleme Çubukları için pv Kullanımı

pv (pipe viewer) komutu, veri akışlarını izlemede mükemmeldir ve dosya transferlerinde veya benzeri veri yoğun işlemlerde ilerlemenin görselleştirilmesi için idealdir. Basitliği ve etkinliği önemli avantajlardır.

Kurulum:

pv, çoğu Linux dağıtım paket yöneticisi aracılığıyla kolayca kullanılabilir. Dağıtımınızın belirli komutunu kullanarak yükleyin (örneğin, Debian/Ubuntu’da sudo apt-get install pv, CentOS/RHEL’de sudo yum install pv, Arch Linux’ta sudo pacman -S pv).

Kullanım:

Temel sözdizimi basittir:

pv input_file > output_file

input_file yerine kaynak dosyanızı ve output_file yerine hedef dosyanızı yerleştirin. pv, aktarım hızını ve tahmini tamamlanma süresini gösteren bir ilerleme çubuğunu dinamik olarak görüntüler.

Örnek:

Büyük bir dosyayı (large_file.zip) ilerleme çubuğu ile kopyalamak için:

pv large_file.zip > copied_large_file.zip

pv‘nin esnekliği dosya kopyalamanın ötesine geçer. Veri akışı oluşturan komutlarla sorunsuz bir şekilde entegre olur. Örneğin, bir tar arşivinin çıkarılmasını izlemek için:

tar -xvf large_archive.tar | pv > /dev/null

Burada, /dev/null çıkarılan dosyaları atar ve yalnızca ilerleme izleme odaklanır.

İlerleme Çubukları için dialog Kullanımı

dialog komutu, çok yönlü bir ilerleme çubuğu da dahil olmak üzere daha geniş bir etkileşimli iletişim kutusu yelpazesi sunar. pv‘ye kıyasla çubuğun görünümü üzerinde daha fazla kontrol sağlar ve veri akışlarıyla sınırlı değildir.

Kurulum:

pv gibi, dialog da genellikle dağıtımınızın paket yöneticisi aracılığıyla kullanılabilir (örneğin, sudo apt-get install dialog, sudo yum install dialog, sudo pacman -S dialog).

Kullanım:

dialog‘un ilerleme çubuğu --gauge seçeneğini kullanır. Başlığı, maksimum değeri (%100) ve geçerli değeri belirtirsiniz. Komut dosyası, geçerli değeri yinelemeli olarak günceller.

Örnek:

Bu komut dosyası bir işlemi simüle eder ve bir ilerleme çubuğu görüntüler:

#!/bin/bash

for i in $(seq 1 100); do
  dialog --gauge "İşleniyor..." 10 60 $i
  sleep 0.1
done
dialog --infobox "İşlem tamamlandı!" 10 30

Komut dosyası 100 kez döngüye girer ve ilerleme çubuğunu artırır. sleep 0.1 gösterim için bir gecikme ekler. Komut dosyasını chmod +x your_script.sh kullanarak çalıştırılabilir yapın.

Gelişmiş İlerleme Çubukları için ncurses Kullanımı

Maksimum özelleştirme ve kontrol için ncurses kütüphanesi, benzersiz bir esneklik sağlar. ncurses doğrudan terminal çıktısını yönetir ve son derece özelleştirilmiş ilerleme çubukları oluşturmayı sağlar. Ancak, bu yaklaşım, programlama ve ncurses fonksiyonları hakkında daha derin bir anlayış gerektirir.

Kurulum:

ncurses genellikle önceden yüklenir. Değilse, dağıtımınızın paket yöneticisini kullanarak yükleyin (örneğin, sudo apt-get install libncurses5-dev, sudo yum install ncurses-devel, sudo pacman -S ncurses).

Kullanım:

Karmaşıklığı nedeniyle tam bir ncurses örneği bu kılavuzun kapsamının dışındadır. İşlem, ncurses‘i başlatmayı, mvprintw gibi fonksiyonları kullanarak çubuğu çizmeyi, yinelemeli olarak güncellemeyi ve son olarak ncurses‘i temizlemeyi içerir. İmleç konumunu manuel olarak yönetirsiniz. Çok sayıda çevrimiçi kaynak, C veya diğer dillerde ayrıntılı ncurses eğitimleri sunmaktadır; bunları Bash’e uyarlamak dikkatli bir çalışma gerektirir.

Bu makale, Bash ilerleme çubukları oluşturmanın üç yöntemini sundu. İhtiyaçlarınıza ve becerilerinize en uygun yöntemi seçin. pv basit görevler için idealdir; dialog daha fazla kontrol sunar; ve ncurses nihai özelleştirmeyi sağlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir