basename a dirname: dva příkazy, které byste měli znát

příkazy Linuxu terminálového prostředí

Někdy jsou některé výukové programy zaměřeny na vysvětlení poněkud exotičtějších a podivnějších příkazů, na druhou stranu existují některé, které obsahují sériové distribuce a nejsou tak populární jako cd, ls, cat atd., Ale jsou stejně praktické. V tomto tutoriálu vám ukážu, co lze udělat se dvěma z těchto příkazů: basename a řekni mi.

Možná se vám apriori zdají absurdní a že k ničemu, ale mají docela praktické aplikace v některých případech, například ve skriptech, kde je nutné extrahovat část cesty, například název souboru nebo adresáře, aby na tento příkaz fungoval jiný příkaz ...

Na co jsou

Tyto příkazy jsou velmi základní a jeho funkce Zvuk:

  • základní jméno: slouží k extrakci názvu souboru z cesty.
  • řekni mi: slouží k extrakci názvu adresáře z cesty.

Příklady použití

Zde můžete vidět některé příklady jak je používat:

  • Například použít základní jméno s / etc / passwd a že vrátí název souboru ve svém výstupu, v tomto případě passwd:
basename /etc/passwd

  • Můžete také určit rozšíření takže vám dá název souboru bez přípony. Předpokládejme například, že chcete extrahovat název obrázku /home/media/test.jpg bez přípony jpg (vrátilo by se Prueba):
basename -s .jpg /home/media/prueba.jpg

  • Můžete dokonce zpracovat více tras najednou samostatně, k tomu musíte použít volbu -a:
basename -a /etc/passwd /var/log/boot.log

  • Chcete-li udělat opak a dát vám název adresáře, bez názvu souboru, musíte použít řekni mi. Například pokud jej chcete použít v cestě /var/spool/mail/test.txt a nechat jej vrátit / var / spool / mail, použijte:
dirname /var/spool/mail/prueba.txt

Co se týče a nástroj ve skriptu, zde máte další příklad. Představte si, že máte jednoduchý skript a že v něm existuje proměnná cesta. Ale chcete, aby zobrazoval adresář, který obsahuje soubor, bez ohledu na soubor, v takovém případě můžete mít něco jako:

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

result=$(dirname "$pathname")

echo $result

Je zřejmé, že v tomto skriptu by „cesta“ byla vždy stejná statická deklarovaná konstantou na začátku, ale mohou existovat případy, kdy tomu tak není, a to je místo, kde stane se to praktické. Například:

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


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Gregorio ros řekl

    Dobrým příkladem těch věcí, které když se učíte, vidíte zbytečné, ale když se dostanete k tématu, uvidíte, jak jsou praktické.