Nogle gange er nogle tutorials rettet mod at forklare noget mere eksotiske og mærkelige kommandoer, på den anden side er der nogle, der inkluderer serielle distributioner og ikke er så populære som cd, ls, cat osv., Men de er lige så praktiske. I denne vejledning vil jeg vise dig, hvad der kan gøres med to af disse kommandoer: basenavn og fortæl mig.
Måske a priori virker de absurde for dig, og at de ikke har nogen nytte, men de har temmelig praktiske anvendelser i nogle tilfælde, som for eksempel i scripts, hvor du har brug for at udtrække en del af en sti, såsom navnet på filen eller biblioteket, så en anden kommando fungerer på dette ...
Hvad er de til?
Disse kommandoer er meget grundlæggende, og dens funktioner lyd:
- basenavn: bruges til at udtrække navnet på filen fra en sti.
- dirnavn: bruges til at udtrække katalognavnet fra en sti.
Eksempler på anvendelse
Her kan du se nogle ejemplos hvordan man bruger dem:
- For eksempel at bruge basenavn med / etc / passwd, og at den returnerer navnet på filen i dens output, i dette tilfælde passwd:
basename /etc/passwd
- Du kan også angive en udvidelse så det giver dig navnet på filen uden filtypenavnet. Antag for eksempel, at du ønskede at udtrække navnet på et billede /home/media/test.jpg uden jpg-udvidelsen (det ville vende tilbage Prueba):
basename -s .jpg /home/media/prueba.jpg
- Du kan endda behandle flere ruter på én gang separat, for dette skal du bruge indstillingen -a:
basename -a /etc/passwd /var/log/boot.log
- For at gøre det modsatte og give dig navnet på biblioteket uden filens navn, så er du nødt til at bruge dirnavn. For eksempel, hvis du vil bruge den i stien /var/spool/mail/test.txt og have den retur / var / spool / mail, skal du bruge:
dirname /var/spool/mail/prueba.txt
Hvad angår en værktøj i et script, her har du et andet eksempel. Forestil dig, at du har et simpelt script, og at der er en sti, der er variabel. Men du vil have det til at vise det bibliotek, der indeholder en fil, uanset fil, i så fald kan du have noget som:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Det er klart, at i dette script vil "stienavn" altid være den samme statiske erklæret af konstanten i starten, men der kan være tilfælde, hvor det ikke er, og det er her det bliver praktisk. For eksempel:
/*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
Et godt eksempel på de ting, at når du lærer, ser du ubrugelige, men når du kommer til emnet, ser du, hvor praktisk de er.