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
Geras pavyzdys tų dalykų, kurių mokydamiesi matote nenaudingus, tačiau, eidami prie dalyko, matote, kokie jie praktiški.