Linux kabuk komut dosyalarının eğlencesini artırmak için çeşitli araçlar

Kabuk betiklerinin yalnızca CLI ortamında kullanıldığına dair bir yanlış anlaşılma var. Aslında, KDE veya Gnome masaüstü altında, GUI veya ağ (soket) komut dosyaları yazmak için çeşitli araçları etkin bir şekilde kullanabilirsiniz. Kabuk betikleri bazı GUI bileşenlerini (menüler, uyarı kutuları, ilerleme çubukları, vb.) Kullanabilir ve terminal çıktısını, imleç konumunu, çeşitli çıktı efektlerini vb. Kontrol edebilirsiniz. Aşağıdaki araçlarla güçlü, etkileşimli ve kullanıcı dostu UNIX / Linux bash betikleri oluşturabilirsiniz.

GUI uygulamaları yapmak zor bir iş değildir, ancak zaman ve sabır gerektirir. Neyse ki, hem UNIX hem de Linux, güzel GUI betikleri yazmak için birçok araçla birlikte gelir. Aşağıdaki araçlar FreeBSD ve Linux işletim sistemlerine göre test edilmiştir ve diğer UNIX işletim sistemleri için de uygundur.

1. Bildir-gönder komutu

Notify-send komutu, kullanıcılara masaüstü bildirimleri göndermek için bildirim arka plan programını kullanmanıza olanak tanır. Kullanıcıları rahatsız etmekten kaçınmanın bu yolu, masaüstü kullanıcılarını bir olay hakkında bilgilendirmek veya bazı bilgileri görüntülemek için kullanışlıdır. Debian veya Ubuntu'da, paketi apt komutunu veya apt-get komutunu kullanarak yüklemeniz gerekir:

sudo apt-get install libnotify-bin

CentOS / RHEL kullanıcıları aşağıdaki yum komutunu kullanır:

sudo yum libnotify yüklemek

Fedora Linux kullanıcıları aşağıdaki dnf komutunu kullanır:

`$ sudo dnf libnotify yükle` Bu örnekte, komut satırından basit masaüstü bildirimi gönderin, şunu girin: ### Bazı bildirimler gönderin ### notify-gönder "rsnapshot done :)"

Örnek çıktı:

notify-send: Kabuk Komut Dosyası Masaüstü Bildirimleri Al veya Gönder

İşte başka bir ek seçeneğin kodu:

... alert = 18000 live = $ (lynx --dump | grep'BSE LIVE '| awk' {print $ 5} '| sed'ler /, // g; s /\.*// g ') {notify-send -t 5000 -u low -i "BSE Sensex 18k dokundu"; notify_counter = 1;} ...

Örnek çıktı:

Linux / UNIX: notify-send ile Kabuk Betiklerinizdeki Bildirimleri Görüntüleyin

Buraya:

  • -t 5000: Zaman aşımı süresini belirtin (milisaniye) (5000 milisaniye = 5 saniye)
  • -u düşük: acil durum seviyesini ayarlayın (örneğin: düşük, normal, acil durum)
  • -i gtk-dialog-info: Görüntülenecek simgenin adını veya belirtilen simgeyi ayarlayın (yolu şu şekilde ayarlayabilirsiniz: -i /path/to/your-icon.png)

Bildir-gönder işlevini kullanma hakkında daha fazla bilgi için lütfen kullanım kılavuzuna bakın. Şunları görmek için komut satırına man notify-send yazın:

adam bildir-gönder

2. tput komutu

Tput komutu, terminal karakteristiklerini ayarlamak için kullanılır. Tput ile şunları ayarlayabilirsiniz:

  • İmleci ekranda hareket ettirin.
  • Terminal bilgilerini edinin.
  • Renkleri ayarlayın (arka plan ve ön plan).
  • Kalın modu ayarlayın.
  • Ters modunu ayarlayın vb.

İşte örnek bir kod:

#! / bin / bash # ekranı temizle temizle # İmleci X, Y ekran konumuna getirin (sol üst 0,0'dır) tput kupası 315 # ANSI kaçışını kullanarak bir ön plan rengi ayarlayın tput setaf 3 echo "XYX Corp LTD." tput sgr0 tput kupası 517 # Ters video modunu ayarlayın tput rev echo "M A I N-M E N U" tput sgr0 tput kupası 715 echo "1. Kullanıcı Yönetimi" tput kupası 815 echo "2. Hizmet Yönetimi" tput kupası 915 echo "3. Süreç Yönetimi" tput kupası 1015 echo "4. Yedekleme" # Kalın modu ayarla tput kalın tput kupası 1215 -p "Seçiminizi girin" seçeneğini okuyun temizle tput sgr0 tput rc

Örnek çıktı:

Linux / UNIX Komut Dosyası Renkleri ve tput ile İmleç Hareketi

Tput komutu hakkında ayrıntılı bilgi için kılavuza bakın:

adam 5 terminal adam tput

3. setleds komutu

Setleds komutu, klavye ışıklarını ayarlamanıza izin verir. Aşağıda sayı tuşu ışığının açılmasına bir örnek verilmiştir:

setleds -D + num

Sayı tuşu ışığını kapatın, şunu girin:

setleds -D -num
  • -caps: büyük harf kilidi ışığını kapatın
  • + büyük harf: büyük harf kilidi ışığını açın
  • -kaydırma: Kaydırma kilidi ışığını kapatın
  • + kaydırma: kaydırma kilidi ışığını açın

Daha fazla bilgi ve seçenekler için setleds kılavuzuna bakın.

4. Zenity komutu

Zenity komutu, GTK + iletişim kutusunu görüntüler ve kullanıcı girdisini döndürür. Kullanıcılara bilgi göstermek veya talep etmek için çeşitli kabuk komut dosyalarını kullanmanıza izin verir. Aşağıda, etki alanı adı dizin hizmetini belirten whois için bir GUI istemcisi örneği verilmiştir.

#! / bin / bash # Alan adı alın _zenity = "/ usr / bin / zenity" _out = "/ tmp / whois.output. $$" etki alanı = $ ($ {_ zenity} --title "Etki alanı girin" \ --entry --text "Whois bilgilerini görmek istediğiniz alan adını girin") ise sonra # Whois veritabanında arama yaparken bir ilerleme iletişim kutusu görüntüleyin whois $ alan adı | tee > ($ {_ zenity} --width = 200 --height = 100 \ --title = "whois" --progress \ --pulsate --text = "Alan bilgisi aranıyor ..." \ --auto-kill --auto-close \ - yüzde = 10) > $ {_ çıkış} # Arka çıkışı görüntüle $ {_ zenity} --width = 800 --height = 600 \ --title "$ alan için Whois bilgisi" \ --text-info --filename = "$ {_ çıkış}" Başka $ {_ zenity} --hata \ --text = "Giriş sağlanmadı" fi

Örnek çıktı:

zenity: Linux / UNIX, Kabuk Betiklerinden İletişim Kutularını görüntüler

Daha fazla zenity bilgisi ve GTK + 'yı destekleyen diğer bileşenler için kılavuza bakın:

zenity - yardım adam zenitesi

5. kdialog komutu

Kdialog komutu, zenity'ye benzer, ancak KDE masaüstü ve QT uygulamaları için tasarlanmıştır. Diyalogları görüntülemek için kdialog'u kullanabilirsiniz. Aşağıdaki örnek, ekranda bilgi gösterecektir:

kdialog --dontagain myscript: nofilemsg --msgbox "Dosya: '~ / .backup / config' bulunamadı."

Örnek çıktı:

Kdialog: Bir iletişim kutusunun görüntüsünü bastırma

Daha fazla bilgi için "KDE İletişim Kutusu Komut Dosyası Programlama" eğitimine bakın.

6. Diyalog

Dialog, kullanıcı arabirimi bileşenlerinin metnini görüntülemek için kabuk komut dosyalarını kullanan bir uygulamadır. Curses veya ncurses kitaplığını kullanır. İşte örnek bir kod:

#! / bin / bash dialog --title "Dosyayı sil" \ --backtitle "Linux Kabuğu Komut Dosyası Eğitimi Örneği" \ --yesno "\" / tmp / foo.txt \ "dosyasını kalıcı olarak silmek istediğinizden emin misiniz?" 760 # Çıkış durumunu alın # 0, kullanıcının basma düğmesi anlamına gelir. # 1, kullanıcının düğmesine basması anlamına gelir. # 255, kullanıcı tuşuna basmak anlamına gelir. yanıt = $? case $ yanıt 0) echo "Dosya silindi." ;; 1) echo "Dosya silinmedi." ;; 255) echo "tuşuna basıldı." ;; esac

Ayrıntılar için iletişim kılavuzuna bakın: adam diyaloğu.

Diğer kullanıcı arayüzü araçlarıyla ilgili notlar

UNIX ve Linux, komut satırında uygulamaları görüntülemek ve kontrol etmek için çok sayıda başka araç sağlar. Kabuk betikleri bazı KDE, Gnome ve X bileşen setlerini kullanabilir:

  • gmessage-GTK xmessage'a dayalı bir klon
  • xmessage-Bir pencerede mesajları görüntüleyin veya isteyin (X tabanlı / bin / echo)
  • whiptail-kabuk komut dosyalarındaki diyalogları görüntüler
  • Python-dialog-Python modülü, basit metin veya konsol modu kullanıcı arayüzleri yapmak için

7, günlükçü komutu

Logger komutu, / var / log / messages gibi bilgileri sistem günlük dosyasına yazar. Sistem günlüğü modülü syslog için bir kabuk komut satırı arabirimi sağlar:

logger "MySQL veritabanı yedeklemesi başarısız oldu." tail -f / var / log / mesajlar logger -t mysqld -p daemon.error "Veritabanı Sunucusu başarısız oldu" tail -f / var / log / syslog

Örnek çıktı:

Nisan 2000:11:45 vivek-masaüstü kernel: CPU0: Sıcaklık / hız normal Nisan 2000:12:20 vivek-desktop mysqld: Veritabanı Sunucusu başarısız oldu

Daha fazla bilgi için "Sistem günlüğüne veya günlük dosyalarına mesaj nasıl yazılır" konusuna bakın. Ek olarak, ayrıntılı bilgi için kaydedici kılavuzuna da bakabilirsiniz: man logger

8, setterm komutu

Setterm komutu farklı uçbirim nitelikleri ayarlayabilir. Aşağıdaki örnek kod, ekranı 15 dakika sonra kararmaya zorlar ve monitör 60 dakika sonra bekleme moduna geçer.

setterm -blank 15 -güç tasarrufu güç kesintisi -powerdown 60

Aşağıdaki örnek, xterm penceresindeki metni altı çizili olarak görüntüler:

setterm -underline açık; echo "Önemli Mesajınızı Buraya Ekleyin" setterm -underline kapalı

Diğer bir kullanışlı seçenek de imleç ekranını açmak veya kapatmaktır:

setterm - imleç kapalı

İmleci açın:

setterm -cursor açık

Ayrıntılar için setterm komut kılavuzuna bakın: man setterm

9. smbclient: MS-Windows iş istasyonlarına mesaj gönderin

Smbclient komutu SMB / CIFS sunucusuyla iletişim kurabilir. MS-Windows sistemindeki seçilen veya tüm kullanıcılara mesaj gönderebilir.

smbclient -M WinXPPro < < eof Mesaj 1 Message 2 ... .. EOF

veya

echo "$ {Message}" | smbclient -M salesguy2

Smbclient kılavuzuna bakın veya önceki makalemizi okuyun: "Windows İş İstasyonlarına Mesaj Gönderin": man smbclient

10. Bash soket programlama

Bash altında, bir soket açabilir ve içinden veri gönderebilirsiniz. Uzak sunuculardan veri almak için curl veya lynx komutlarını kullanmanıza gerek yoktur. bash ve iki özel aygıt dosyası ağ soketlerini açmak için kullanılabilir. Aşağıdakiler bash kılavuzundan alınmıştır:

  • / dev / tcp / host / port-Ana bilgisayar geçerli bir ana bilgisayar adı veya ağ adresiyse ve bağlantı noktası bir tamsayı veya hizmet adıysa, bash karşılık gelen bir TCP bağlantı soketini açmaya çalışır.
  • / dev / udp / host / port-Ana bilgisayar geçerli bir ana bilgisayar adı veya ağ adresiyse ve bağlantı noktası bir tamsayı veya hizmet adıysa, bash karşılık gelen bir UDP bağlantı soketini açmaya çalışır.
  • Bu tekniği, nmap veya diğer bağlantı noktası tarayıcıları kullanmadan yerel veya uzak sunucu bağlantı noktasının açık veya kapalı olup olmadığını belirlemek için kullanabilirsiniz.

    # 25 numaralı TCP bağlantı noktasının açık olup olmadığını öğrenin (Eko > / dev / tcp / localhost / 25) > / dev / null echo "TCP bağlantı noktası 25 açık" || echo "TCP bağlantı noktası 25 kapat"

    Aşağıdaki kod parçacığı ile hangi bağlantı noktalarının açıldığını bulmak için bir bash döngüsü kullanabilirsiniz:

    echo "TCP bağlantı noktaları taranıyor ..." {1..1023} 'te p için yapmak (Eko > / dev / tcp / localhost / $ p) > / dev / null 2 > 1 echo "$ p açık" bitti

    Örnek çıktı:

    TCP bağlantı noktaları taranıyor ... 22 açık 53 açık 80 açık 139 açık 445 açık 631 açık

    Aşağıdaki örnekte, bash betiğiniz bir HTTP istemcisi gibi çalışacaktır:

    #! / bin / bash yürütme 3 < > /dev/tcp/${1:-www.cyberciti.biz}/80 printf "GET / HTTP / 1.0 \ r \ n" > 3 printf "Kabul et: metin / html, metin / düz \ r \ n" > 3 printf "Kabul-Dili: en \ r \ n" > 3 printf "Kullanıcı Aracısı: nixCraft_BashScript v.% s \ r \ n" "$ {BASH_VERSION}" > 3 printf "\ r \ n" > 3 LINE okurken < 3 yapmak # $ LINE'da bir şeyler yapın # veya verileri almak için grep veya awk'ye $ LINE gönderin # veya echo komutuyla verileri geri görüntüleyin echo $ LINE bitti

    Daha fazla bilgi için bash kılavuzuna bakın: man bash

    GUI araçları ve cron görevleri hakkında notlar

    Komut dosyanızı başlatmak için crontab kullanıyorsanız, yerel görüntüleme veya çıktı hizmetleri istemek için export DISPLAY =: 0 komutunu kullanmanız gerekir. Örneğin, /home/vivek/scripts/monitor.stock.sh'yi çağırmak için zenity aracını kullanın:

    @hourly DISPLAY =: 0.0 /home/vivek/scripts/monitor.stock.sh
    Yine de yeni Pajero'yu 349.800'den alacak mısınız?
    önceki
    Geely motor sporlarına katılmak için para mı harcıyor? Bunun arkasındaki derin anlam hakkında konuşun
    Sonraki
    S-sınıfı değişiklikler, 4 silindirli 7 serisinden daha genç ve daha dürüst. Farlar ışık fabrikasında kaybolmuyor.Tüm seriler 9AT ile değiştirildi.
    Apple'ın konsepti öldü, fonlar yeni enerjiye dönüyor
    Oyunu Q3'ten daha yüksek ve X1'den daha yakışıklı olmaya zorlayın
    Coupe SUV Lynk & Co 02'ye ne dersiniz? Alacak mısın
    Bir makale çimento fiyat artışını anlıyor, Sichuan Shuangma geri dönüyor, bu hisse senetlerinin izlenmesi gerekiyor
    LOL S7 biletleri bir saniyede tükendi
    Grand Magotan standart olarak 180.000 matris LED ışıkla Passat'ı tek turda geride bıraktı, ancak yine de Accord mu satın alıyor?
    Yi Niu San ve dört büyük sermaye, listede özel sermaye işletiyor, ancak Panda Financial Holdings, malların ana satıcısı gibi görünüyor.
    Kafaları masadan mı çeviriyorsunuz? SUV'u aerodinamiğe çevirmenin iyi bir yolu!
    Yaz tatilinden önce, sihirli şehir hastanesi şimdiden kalabalık ve sıcaktı ... İyi haber, yeni hastane başlamak üzere!
    5 Serisi ile E-Serisi arasındaki mesafe, Çin'deki BMW ile Mercedes-Benz arasındaki fark mı?
    Bu yerli otomobil, bırakın Prado, Land Rover Range Rover'dan daha otoriter. Ne yazık ki, bu marka asla satın alınmıyor
    To Top