basename ja dirname: kaks käsku, mida peaksite teadma

terminali shell Linuxi käsud

Mõnikord on mõned õpetused suunatud mõnevõrra eksootilisemate ja kummalisemate käskluste selgitamisele, teisest küljest on selliseid, mis sisaldavad seeriajaotusi ja pole nii populaarsed kui cd, ls, kass jne, kuid on sama praktilised. Selles õpetuses näitan teile, mida saab teha kahe sellise käsuga: basename ja ütle mulle.

Võib-olla tunduvad need a priori teile absurdsed ja et neil pole mingit kasu, kuid on päris praktilised rakendused mõnel juhul, näiteks skriptides, kus on vaja eraldada mõni tee osa, näiteks faili või kataloogi nimi, nii et teine ​​käsk töötab sellel ...

Milleks need on

Need käsud on väga lihtsad ja oma ülesandeid Heli:

  • basenime: kasutatakse faili nime eraldamiseks teelt.
  • dirigenimi: kasutatakse kataloogi nime eraldamiseks teelt.

Kasutamisnäited

Siin näete mõnda näited kuidas neid kasutada:

  • Näiteks kasutamiseks basenime / etc / passwd ja tagastab väljundis faili nime, antud juhul parooli:
basename /etc/passwd

  • Võite ka täpsustada pikendus nii et see annab teile faili nime ilma laiendita. Oletame näiteks, et soovite eraldada pildi /home/media/test.jpg nime ilma laiendita jpg (see tagastaks Prueba):
basename -s .jpg /home/media/prueba.jpg

  • Võite isegi töödelda mitut marsruuti korraga eraldi, selleks peate kasutama suvandit -a:
basename -a /etc/passwd /var/log/boot.log

  • Vastupidiseks toimimiseks ja kataloogi nime andmiseks ilma faili nimeta peate kasutama dirigenimi. Näiteks kui soovite seda kasutada teekonnal /var/spool/mail/test.txt ja lasta sellel tagastada / var / spool / mail, siis kasutage:
dirname /var/spool/mail/prueba.txt

Mis puutub a utiliit skriptis, siin on veel üks näide. Kujutage ette, et teil on lihtne skript ja selles on muutuv tee. Kuid soovite, et see näitaks kataloogi, mis sisaldab faili, olenemata failist, sel juhul võib teil olla midagi sellist:

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

result=$(dirname "$pathname")

echo $result

Ilmselgelt oleks selles skriptis "teenimi" alati sama staatiline, mille alguses on konstant deklareeritud, kuid võib olla juhtumeid, kus see pole nii, ja just seal see muutub praktiliseks. Näiteks:

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


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Gregory ros DIJO

    Hea näide nendest asjadest, mida õppides näed kasutut, kuid ainele jõudes näed, kui praktilised need on.