basename et dirname: deux commandes à connaître

commandes Linux du shell de terminal

Parfois, certains tutoriels visent à expliquer des commandes un peu plus exotiques et étranges, d'autre part, il y en a qui incluent des distributions en série et ne sont pas aussi populaires que cd, ls, cat, etc., mais ils sont tout aussi pratiques. Dans ce tutoriel, je vais vous montrer ce qui peut être fait avec deux de ces commandes: nom de base et dites-moi.

Peut-être a priori vous paraissent absurdes et qu'elles ne servent à rien, mais elles ont applications assez pratiques dans certains cas, comme, par exemple, dans des scripts où vous devez extraire une partie d'un chemin, comme le nom du fichier ou du répertoire pour qu'une autre commande opère sur ce ...

À quoi servent-ils?

Ces commandes sont très basiques et ses fonctions sont:

  • nom de base: utilisé pour extraire le nom du fichier d'un chemin.
  • dis-moi: utilisé pour extraire le nom du répertoire d'un chemin.

Exemples d'utilisation

Ici vous pouvez voir quelques ejemplos comment les utiliser:

  • Par exemple, pour utiliser nom de base avec / etc / passwd, et qu'il renvoie le nom du fichier dans sa sortie, dans ce cas passwd:
basename /etc/passwd

  • Vous pouvez également spécifier une extension afin qu'il vous donne le nom du fichier sans l'extension. Par exemple, supposons que vous vouliez extraire le nom d'une image /home/media/test.jpg sans l'extension jpg (il renverrait test):
basename -s .jpg /home/media/prueba.jpg

  • Vous pouvez même traiter plusieurs itinéraires à la fois séparément, pour cela, vous devez utiliser l'option -a:
basename -a /etc/passwd /var/log/boot.log

  • Pour faire le contraire, et vous donner le nom du répertoire, sans le nom du fichier, alors vous devez utiliser dis-moi. Par exemple, si vous voulez l'utiliser dans le chemin /var/spool/mail/test.txt et le renvoyer / var / spool / mail, utilisez:
dirname /var/spool/mail/prueba.txt

Quant à un utilitaire dans un script, ici vous avez un autre exemple. Imaginez que vous ayez un script simple et qu'il y ait un chemin qui est variable. Mais vous voulez qu'il affiche le répertoire qui contient un fichier, quel que soit le fichier, dans ce cas, vous pourriez avoir quelque chose comme:

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

result=$(dirname "$pathname")

echo $result

Evidemment, dans ce script, le "chemin" serait toujours le même statique déclaré par la constante au début, mais il peut y avoir des cas où il ne l'est pas, et c'est là que ça devient pratique. Par exemple:

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


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Gregorio ros dit

    Un bon exemple de ces choses que lorsque vous apprenez vous voyez inutiles, mais quand vous arrivez au sujet, vous voyez à quel point elles sont pratiques.