basename és dirname: két parancs, amelyet tudnia kell

terminálhéj Linux parancsai

Néha néhány oktatóanyag valamivel egzotikusabb és furcsább parancsok megmagyarázására irányul, másrészt vannak olyanok, amelyek soros terjesztéseket tartalmaznak, és nem annyira népszerűek, mint a cd, ls, cat stb., De ugyanolyan praktikusak. Ebben az oktatóanyagban megmutatom, hogy mit lehet tenni a parancsok közül kettővel: basename és mondd meg.

Lehet, hogy eleve abszurdnak tűnnek számodra, és hogy nincs hasznuk, de van elég praktikus alkalmazások bizonyos esetekben, például például olyan szkriptekben, ahol ki kell vonni egy útvonal egy részét, például a fájl vagy a könyvtár nevét, hogy egy másik parancs működjön ezen ...

Mire valók

Ezek a parancsok nagyon egyszerűek, és funkciói hang:

  • alapnév: a fájl nevének kitermeléséhez egy elérési útból.
  • Mondd el: a könyvtárnév kinyerésére egy elérési útból.

Felhasználási példák

Itt láthat néhányat példák hogyan kell használni őket:

  • Például használni alapnév az / etc / passwd paranccsal, és hogy a fájl nevét adja vissza a kimenetében, ebben az esetben a passwd:
basename /etc/passwd

  • Megadhatja azt is kiterjesztés úgy, hogy kiterjesztés nélkül megadja a fájl nevét. Tegyük fel például, hogy a /home/media/test.jpg kép nevét ki akarja vonni a jpg kiterjesztés nélkül (ez visszatér prueba):
basename -s .jpg /home/media/prueba.jpg

  • Tudod is több útvonalat dolgozzon fel egyszerre külön, ehhez az -a opciót kell használnia:
basename -a /etc/passwd /var/log/boot.log

  • Az ellenkezőjéhez, és megadva a könyvtár nevét, a fájl neve nélkül, akkor használnia kell Mondd el. Például, ha a /var/spool/mail/test.txt elérési útban szeretné használni, és a / var / spool / mail parancsot szeretné megadni, akkor használja:
dirname /var/spool/mail/prueba.txt

Ami a segédprogram egy szkriptben, itt van egy másik példa. Képzelje el, hogy van egy egyszerű szkriptje, és hogy benne van egy változó elérési út. De azt akarja, hogy a fájlt tartalmazó könyvtárat mutassa, függetlenül a fájltól, ebben az esetben valami ilyesmi lehet:

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

result=$(dirname "$pathname")

echo $result

Nyilvánvaló, hogy ebben a szkriptben az "útvonalnév" mindig ugyanaz a statikus lenne, amelyet az állandó állandó deklarált, de vannak olyan esetek, amikor nem, és ez az, ahol praktikussá válik. Például:

/*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


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Gregorio ros dijo

    Jó példa azokra a dolgokra, amelyek tanulásakor használhatatlannak látszanak, de amikor eljut a témához, látja, hogy mennyire praktikusak.