basnamn och dirname: två kommandon du borde veta

terminal shell Linux-kommandon

Ibland syftar vissa handledning till att förklara något mer exotiska och konstiga kommandon, å andra sidan finns det några som inkluderar seriella distributioner och inte är lika populära som cd, ls, cat, etc., men de är lika praktiska. I den här handledningen visar jag dig vad som kan göras med två av dessa kommandon: basnamn och berätta för mig.

Kanske a priori verkar de absurda för dig och att de inte har någon nytta, men de har ganska praktiska tillämpningar i vissa fall, till exempel i skript där du behöver extrahera någon del av en sökväg, till exempel namnet på filen eller katalogen så att ett annat kommando fungerar på detta ...

Vad är de för

Dessa kommandon är mycket grundläggande och dess funktioner ljud:

  • basnamn: används för att extrahera filnamnet från en sökväg.
  • Berätta för mig: används för att extrahera katalognamnet från en sökväg.

Användningsexempel

Här kan du se några exempel hur man använder dem:

  • Till exempel att använda basnamn med / etc / passwd och att den returnerar namnet på filen i dess utdata, i det här fallet passwd:
basename /etc/passwd

  • Du kan också ange en förlängning så att det ger dig namnet på filen utan tillägget. Antag till exempel att du ville extrahera namnet på en bild /home/media/test.jpg utan jpg-tillägget (det skulle återvända prueba):
basename -s .jpg /home/media/prueba.jpg

  • Du kan till och med bearbeta flera rutter samtidigt separat, för detta måste du använda alternativet -a:
basename -a /etc/passwd /var/log/boot.log

  • För att göra det motsatta och ge dig namnet på katalogen, utan namnet på filen, måste du använda Berätta för mig. Om du till exempel vill använda den i sökvägen /var/spool/mail/test.txt och få den att returnera / var / spool / mail, använd sedan:
dirname /var/spool/mail/prueba.txt

När det gäller en verktyg i ett skript, här har du ett annat exempel. Tänk dig att du har ett enkelt skript, och att det finns en sökväg som är variabel. Men du vill att den ska visa katalogen som innehåller en fil, oavsett fil, i så fall kan du ha något som:

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

result=$(dirname "$pathname")

echo $result

Uppenbarligen skulle "sökvägen" i detta skript alltid vara samma statiska deklarerade av konstanten i början, men det kan finnas fall där det inte är, och det är där det blir praktiskt. Till exempel:

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


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Gregory ros sade

    Ett bra exempel på de saker som när du lär dig ser att du är värdelösa, men när du kommer till ämnet ser du hur praktiska de är.