basenavn og dirname: to kommandoer, du skal kende

terminal shell Linux-kommandoer

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


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Gregory ros sagde han

    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.