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.
Çok iyi ve iyi açıklanmış, ancak bir parametre neyi ifade eder?
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
Yorumlarım çıkmıyor, saygısızlık oluyor, bu foruma bir daha dönmüyorum.
Ne olduğunu bilmiyorum, her halükarda bu yayınlanmıştır.
Selamlar.