basename ve dirname: bilmeniz gereken iki komut

terminal kabuğu Linux komutları

Bazen bazı öğreticiler biraz daha egzotik ve tuhaf komutları açıklamayı hedeflerken, diğer yandan seri dağıtımlar içeren ve cd, ls, cat vb. Kadar popüler olmayanlar da vardır, ancak bunlar aynı derecede pratiktir. Bu eğitimde size bu komutlardan ikisiyle neler yapılabileceğini göstereceğim: ismini ver ve söyle bana.

Belki bir önsel olarak size saçma geliyorlar ve hiçbir faydası yok, ama oldukça pratik uygulamalar bazı durumlarda, örneğin, dosya veya dizin gibi bir yolun bir kısmını çıkarmanız gereken komut dosyalarında başka bir komutun bunun üzerinde çalışması için ...

Onlar ne için

Bu komutlar çok basittir ve işlevleri ses:

  • baz adı: dosyanın adını bir yoldan çıkarmak için kullanılır.
  • dizinadı: bir yoldan dizin adını çıkarmak için kullanılır.

Kullanım örnekleri

Burada biraz görebilirsiniz örnekler nasıl kullanılır:

  • Örneğin, kullanmak baz adı / etc / passwd ile ve çıktısında dosyanın adını döndürür, bu durumda passwd:
basename /etc/passwd

  • Ayrıca belirtebilirsiniz bir uzantı böylece dosyanın adını uzantı olmadan verir. Örneğin, bir görüntünün /home/media/test.jpg adını jpg uzantısı olmadan çıkarmak istediğinizi varsayalım ( prueba):
basename -s .jpg /home/media/prueba.jpg

  • Sen bile aynı anda birden çok rotayı işle ayrı olarak, bunun için -a seçeneğini kullanmanız gerekir:
basename -a /etc/passwd /var/log/boot.log

  • Bunun tersini yapmak ve size dosyanın adı olmadan dizinin adını vermek için şunu kullanmanız gerekir: dizinadı. Örneğin, /var/spool/mail/test.txt yolunda kullanmak ve / var / spool / mail döndürmesini istiyorsanız, şunu kullanın:
dirname /var/spool/mail/prueba.txt

Gelince bir komut dosyasındaki yardımcı programBurada başka bir örnek var. Basit bir betiğiniz olduğunu ve içinde değişken olan bir yol olduğunu hayal edin. Ancak, dosyadan bağımsız olarak bir dosya içeren dizini göstermesini istersiniz, bu durumda aşağıdaki gibi bir şeye sahip olabilirsiniz:

pathname="/home/usuario/data/fichero"

result=$(dirname "$pathname")

echo $result

Açıkçası, bu komut dosyasında "yol adı" her zaman başlangıçta sabit tarafından bildirilen aynı statik olacaktır, ancak olmadığı durumlar olabilir ve bu pratik hale gelir. Örneğin:

/*script para convertir una imagen gif en png*/

#!/bin/sh
for file in *.gif;do
    #Salir si no hay ficheros
    if [! -f $file];then
        exit
    fi
    b='basename $file .gif'
    echo NOW $b.gif is $b.png
    giftopnm $b.gif | pnmtopng >$b.png
done


Yorumunuzu bırakın

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

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  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.   Gregory ros dijo

    Öğrendiğinizde faydasız gördüğünüz, ancak konuya geldiğinizde ne kadar pratik olduklarını gördüğünüz şeylere güzel bir örnek.