basename un dirname: divas komandas, kas jums jāzina

termināla čaulas Linux komandas

Dažreiz dažu apmācību mērķis ir izskaidrot nedaudz eksotiskākas un dīvainākas komandas, no otras puses, ir dažas, kas ietver sērijveida izplatīšanu un nav tik populāras kā cd, ls, cat utt., Taču tās ir tikpat praktiskas. Šajā apmācībā es jums parādīšu, ko var izdarīt ar divām no šīm komandām: basename un pasaki man.

Varbūt a priori tie jums šķiet absurdi un ka viņiem nav nekā, taču tā ir diezgan praktiski pielietojumi dažos gadījumos, piemēram, skriptos, kur nepieciešams izvilkt kādu ceļa daļu, piemēram, faila vai direktorija nosaukumu, lai šajā darbotos cita komanda ...

Kam tie domāti

Šīs komandas ir ļoti vienkāršas, un tās funkcijas skaņa:

  • bazename: tiek izmantots faila nosaukuma iegūšanai no ceļa.
  • pasaki man: tiek izmantots direktorija nosaukuma iegūšanai no ceļa.

Lietošanas piemēri

Šeit jūs varat redzēt dažus piemēri kā tos izmantot:

  • Piemēram, lai izmantotu bazename ar / etc / passwd un ka tā atgriež faila nosaukumu savā izvadē, šajā gadījumā passwd:
basename /etc/passwd

  • Varat arī norādīt pagarinājums tā, lai tas jums piešķir faila nosaukumu bez paplašinājuma. Piemēram, pieņemsim, ka vēlaties izvilkt attēla /home/media/test.jpg nosaukumu bez paplašinājuma jpg (tas atgrieztos prueba):
basename -s .jpg /home/media/prueba.jpg

  • Jūs pat varat apstrādāt vairākus maršrutus vienlaikus atsevišķi, tam jāizmanto opcija -a:
basename -a /etc/passwd /var/log/boot.log

  • Lai rīkotos pretēji un norādītu direktorija nosaukumu bez faila nosaukuma, jums tas jāizmanto pasaki man. Piemēram, ja vēlaties to izmantot ceļā /var/spool/mail/test.txt un lai tas atgrieztos / var / spool / mail, izmantojiet:
dirname /var/spool/mail/prueba.txt

Kas attiecas uz a lietderība skriptā, šeit jums ir vēl viens piemērs. Iedomājieties, ka jums ir vienkāršs skripts un ka tajā ir mainīgs ceļš. Bet jūs vēlaties, lai tas neatkarīgi no faila parādītu direktoriju, kurā ir fails, tādā gadījumā jums varētu būt kaut kas līdzīgs:

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

result=$(dirname "$pathname")

echo $result

Acīmredzot šajā scenārijā "ceļa nosaukums" vienmēr būtu tāds pats statiskais, ko sākumā deklarēja konstante, taču var būt gadījumi, kad tā nav, un tieši šeit tas kļūst praktiski. Piemēram:

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


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Gregorio ros teica

    Labs piemērs tām lietām, kuras mācoties jūs redzat bezjēdzīgu, bet, nonākot pie priekšmeta, redzat, cik tās ir praktiskas.