bazename ir dirname: dvi komandos, kurias turėtumėte žinoti

terminalo apvalkalo „Linux“ komandos

Kartais kai kuriais vadovėliais siekiama paaiškinti kiek egzotiškesnes ir keistesnes komandas, kita vertus, yra tokių, kurie apima nuoseklųjį paskirstymą ir nėra tokie populiarūs kaip cd, ls, cat ir kt., Tačiau jie yra tokie pat praktiški. Šioje pamokoje aš jums parodysiu, ką galima padaryti dviem komandomis: basename ir pasakyk man.

Galbūt a priori jie jums atrodo absurdiški ir kad neturi jokios naudos, bet turi gana praktiškas pritaikymas kai kuriais atvejais, pavyzdžiui, scenarijuose, kur reikia išskleisti tam tikrą kelio dalį, pvz., failo pavadinimą ar katalogą, kad kita komanda veiktų ...

Kam jie skirti

Šios komandos yra labai paprastos ir jo funkcijos garsas:

  • bazinis vardas: naudojamas failo pavadinimui iš kelio ištraukti.
  • direktoriaus vardas: naudojamas katalogo pavadinimui iš kelio ištraukti.

Naudojimo pavyzdžiai

Čia galite pamatyti keletą pavyzdžiai kaip juos naudoti:

  • Pavyzdžiui, naudoti bazinis vardas su / etc / passwd ir kad ji grąžina failo pavadinimą savo išvestyje, šiuo atveju passwd:
basename /etc/passwd

  • Taip pat galite nurodyti pratęsimas kad suteiktų failo pavadinimą be plėtinio. Pvz., Tarkime, kad norėjote išskleisti atvaizdo /home/media/test.jpg pavadinimą be plėtinio JPG (jis grįš bandymas):
basename -s .jpg /home/media/prueba.jpg

  • Jūs netgi galite apdoroti kelis maršrutus vienu metu atskirai, tam turite naudoti -a parinktį:
basename -a /etc/passwd /var/log/boot.log

  • Jei norite elgtis priešingai ir suteikti katalogo pavadinimą be failo pavadinimo, turite naudoti direktoriaus vardas. Pvz., Jei norite jį naudoti kelyje /var/spool/mail/test.txt ir norite grąžinti / var / spool / mail, tada naudokite:
dirname /var/spool/mail/prueba.txt

Kalbant apie a naudingumas scenarijuje, čia jūs turite kitą pavyzdį. Įsivaizduokite, kad turite paprastą scenarijų ir kad jame yra kintamas kelias. Bet jūs norite, kad jis rodytų katalogą, kuriame yra failas, neatsižvelgiant į failą, tokiu atveju galite turėti kažką panašaus:

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

result=$(dirname "$pathname")

echo $result

Akivaizdu, kad šiame scenarijuje „kelio pavadinimas“ visada būtų tas pats statinis, kurį deklaruoja konstanta pradžioje, tačiau gali būti atvejų, kai to nėra, ir būtent čia tai tampa praktiška. Por ejemplo:

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


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Grigalius Rosas sakė

    Geras pavyzdys tų dalykų, kurių mokydamiesi matote nenaudingus, tačiau, eidami prie dalyko, matote, kokie jie praktiški.