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
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.