À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
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.