Bash kullanarak kendi komut dosyalarınızı oluşturun

Linux Öğrenmek

Kullandığımız Linux dağıtımından bağımsız olarak, "şüphesiz en sevdiğim Ubuntu", bu sistemi kullanmaya başlar başlamaz, kesinlikle otomasyon ihtiyaçları. Yani: bizim kendi komutları belirli komutları kişiselleştirilmiş bir şekilde yerine getiren. Bu ihtiyaç belirli nedenlerden kaynaklanıyor olabilir:

  • Sözdizimini basitleştirin genellikle yürüttüğümüz komutlardan.
  • Herhangi birini kapsayan eylemler yapın sistemde öngörülmeyen ihtiyaç operasyonel.
  • Sıra siparişleri titizlikle tekrarladığımızı.

Bir bash betiği herhangi bir dizinde / dizininde çalıştırılabilse de, genellikle bu komut dosyalarını barındırmak için bir dizin oluşturun. Benim durumumda:

$ mkdir /home/pedro/.bin

buna inanıyorum dizin (adın önüne nokta koyarak gizlenir) orada kullandığım tüm komut dosyalarını tutmak için. Dizinin adının gizli olmasının, aksi açıkça belirtilmedikçe - dışında başka bir anlamı yoktur. dosya görüntüleyiciden / home / pedro'yu grafik modunda görüntülerken görünmeyecek.

Şimdi zorundasın Linux'a oraya da bakması gerektiğini bildirin (/home/pedro/.bin) terminalden yürütülen emirler.

$ PATH=$PATH;/home/pedro/.bin

Bu şekilde sistem oradaki siparişlerimizi arayacaktır. oturumu kapatana kadar. Bu ilişkiyi kalıcı kılmak için:

$ sudo nano /etc/environment

ve ekliyoruz

:/home/pedro/.bin

PATH satırının sonunda, dahil ettiğimiz dizinin adresinden önce iki nokta üst üste işaretini unutmamak çok önemlidir, çünkü bu toplama mekanizması.

İlk adım adım senaryomuz

Dosyamızı, benim durumumda olduğu gibi oluşturuyoruz:

$ touch ~/.bin/donde

Ve düzenlemek için tercih ettiğiniz düzenleyiciyi kullanabilir veya şu göstergeyi takip edebilirsiniz:

$ gedit ~/.bin/donde &

Ve aşağıdaki içeriği ekliyoruz:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

Komut dosyası analizi

İlk çağrı hattımız «mesele»(#! / Usr / bin / env bash) Linux'tan rapor etmesini isteyin bash kabuğu nerede bulunur ve takip eden şey bash'ın gereksinimlerine göre yürütülür. Bu önlem emin olmak uygun betiklerimiz herhangi bir kurulumda çalışır. Başka bir olası mesele o güldü:

#!/bin/bash

Aralarındaki fark çok garip olabilir ve bunu açıklayacağım. Bu sonda Sistemimizde olduğunu varsayıyorum bash kabuğu / bin / bash adresindedir. Ancak, senaryoda önerdiğim yer Sanırım nerede olduğunu bilmiyorum bash tercümanı. Sistemden bu adresi vermesini istiyorum.

Üçüncü satır: Gördüğünüz gibi, ikinci satır bir if'dir. Bash için «$#« komut satırından geçirdiğimiz parametre sayısını içerir. Bu nedenle, »if [$ # -lt 1];» kelimenin tam anlamıyla "parametre sayısı 1'den azsa" anlamına gelir.

Dördüncü satır: Sonra (kelimenin tam anlamıyla İngilizceden çevirerek: o zaman), burada bundan sonra ne olacağı belirtiliyor durum değerlendirmesi yapıldığında yürütülecektir if Gerçek olmak: başka bir deyişle, parametrelerin sayısı 1'den az, yani sıfır.

Beşinci satır: Betiğimizi herhangi bir parametre olmadan çalıştırırsak, terminalde "Bir parametre aktarmanız gerekir" ifadesini göstereceğiz.

Altıncı satır: Aşağıdakilerin yürütüleceğini gösterir beyan ettiğimiz koşul doğru olmadığında.

Yedinci satır: Se «komutunu çalıştırınnerede« olarak geçtiğimiz içerik eşliğinde ilk parametre.

Sekizinci satır: «ilefi»Bloğun bittiğini gösterir if.

Komut Dosyamızı Test Etmek

Önemli yazma izinleri ekle senaryoya:

$ chmod -x ~/.bin/donde

Bu olmadan, bir "izin reddedildi" hatası görünecektir.. Bundan sonra betiğimizi çalıştırabiliriz.

$ donde php

Bize php ikili dosyalarının, kaynak dosyalarının ve man sayfalarının yerini göstermelidir. Bunun gibi bir şey:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

Tekrarlama

  • Bir Komut dosyalarımızı barındırmak için ".bin" dizini.
  • Biz sağlıyoruz bu dizini komut aramalarına dahil etmek için Linux'a bilgi.
  • Senaryomuzu yaratıyoruz.
  • Arasındaki fark farklı mesele.
  • Kullanımı $ # ile geçirilen parametre sayısı.
  • Kullanımı ilk parametre ile $1.

Umarım bu betiğin sizin için yararlı olmasını dilerim.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   miguel dijo

    Çok iyi ve iyi açıklanmış, ancak bir parametre neyi ifade eder?

    1.    Pedro Ruiz Hidalgo bilgi alanı resmi dijo

      Teşekkürler Miguel!

      Bir programa, işleve veya sisteme sağlanan tüm tamamlayıcı bilgileri parametrelerle anlıyorum. Bu külfetli olabileceğinden size birkaç örnekle cevap vereyim.

      A.txt dosyasını b.txt dosyasına kopyalamak için linux komutunda aşağıdakileri yazardık:

      $cp a.txt b.txt

      Buradaki cp programı, iki dosyanın adı olan iki parametre alır, birincisi (olması gerekir) a.txt ve ikinci b.txt.

      Başka bir örnek: Konsoldan yazdırmak için komutunu gönderirseniz

      $ lp dosya.pdf

      Bu durumda "file.pdf", lp programı için bir parametredir.

      Umarım şüphelerinizi tatmin etmişimdir.

      selamlar

  2.   miguel dijo

    Yorumlarım çıkmıyor, saygısızlık oluyor, bu foruma bir daha dönmüyorum.

    1.    Pedro Ruiz Hidalgo bilgi alanı resmi dijo

      Ne olduğunu bilmiyorum, her halükarda bu yayınlanmıştır.

      Selamlar.