basename e dirname: dois comandos que você deve saber

comandos terminal shell Linux

Às vezes, alguns tutoriais têm como objetivo explicar comandos um pouco mais exóticos e estranhos, por outro lado, existem alguns que incluem distribuições seriais e não são tão populares como cd, ls, cat, etc., mas são igualmente práticos. Neste tutorial, vou mostrar o que pode ser feito com dois desses comandos: nome de base e me diga.

Talvez a priori pareçam absurdos para você e que não tenham utilidade, mas têm aplicações muito práticas em alguns casos, como, por exemplo, em scripts onde é necessário extrair alguma parte de um caminho, como o nome do arquivo ou o diretório para que outro comando opere neste ...

Para que servem

Esses comandos são muito básicos e suas funções são:

  • nome de base: usado para extrair o nome do arquivo de um caminho.
  • Conte-me: usado para extrair o nome do diretório de um caminho.

Exemplos de uso

Aqui você pode ver alguns exemplos como usá-los:

  • Por exemplo, para usar nome de base com / etc / passwd, e que retorna o nome do arquivo em sua saída, neste caso passwd:
basename /etc/passwd

  • Você também pode especificar uma extensão para que forneça o nome do arquivo sem a extensão. Por exemplo, suponha que você queira extrair o nome de uma imagem /home/media/test.jpg sem a extensão jpg (ela retornaria prueba):
basename -s .jpg /home/media/prueba.jpg

  • Você também pode processar várias rotas de uma vez separadamente, para isso você deve usar a opção -a:
basename -a /etc/passwd /var/log/boot.log

  • Para fazer o oposto, e dar-lhe o nome do diretório, sem o nome do arquivo, então você tem que usar Conte-me. Por exemplo, se você quiser usá-lo no caminho /var/spool/mail/test.txt e fazer com que ele retorne / var / spool / mail, use:
dirname /var/spool/mail/prueba.txt

Como para um utilidade em um script, aqui você tem outro exemplo. Imagine que você tem um script simples e que nele há um caminho que é variável. Mas você quer que ele mostre o diretório que contém um arquivo, independentemente do arquivo, nesse caso você poderia ter algo como:

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

result=$(dirname "$pathname")

echo $result

Obviamente, neste script o "nome do caminho" seria sempre o mesmo estático declarado pela constante no início, mas pode haver casos em que não é, e é aí que torna-se prático. Por exemplo:

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


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Gregory Ros dito

    Um bom exemplo daquelas coisas que quando você está aprendendo você vê inútil, mas quando você chega no assunto você vê como elas são práticas.