Иногда некоторые учебники нацелены на объяснение несколько более экзотических и странных команд, с другой стороны, есть некоторые, которые включают последовательные дистрибутивы и не так популярны, как cd, ls, cat и т. Д., Но они столь же практичны. В этом уроке я покажу вам, что можно сделать с помощью двух из этих команд: basename и скажи мне.
Возможно, априори они кажутся вам абсурдными и бесполезными, но они имеют довольно практические приложения в некоторых случаях, например, в сценариях, где вам нужно извлечь некоторую часть пути, такую как имя файла или каталога, чтобы другая команда работала с этим ...
Для чего они
Эти команды очень простые, и его функции являются:
- базовое имя: используется для извлечения имени файла из пути.
- имя_директории: используется для извлечения имени каталога из пути.
Примеры использования
Здесь вы можете увидеть Ejemplos как их использовать:
- Например, чтобы использовать базовое имя с / etc / passwd, и что он возвращает имя файла в своем выводе, в данном случае passwd:
basename /etc/passwd
- Вы также можете указать расширение чтобы он давал вам имя файла без расширения. Например, предположим, что вы хотите извлечь имя изображения /home/media/test.jpg без расширения jpg (оно вернет Prueba):
basename -s .jpg /home/media/prueba.jpg
- Вы можете даже обрабатывать несколько маршрутов одновременно отдельно, для этого нужно использовать опцию -a:
basename -a /etc/passwd /var/log/boot.log
- Чтобы сделать наоборот и дать вам имя каталога без имени файла, вы должны использовать имя_директории. Например, если вы хотите использовать его в пути /var/spool/mail/test.txt и вернуть / var / spool / mail, используйте:
dirname /var/spool/mail/prueba.txt
Что касается утилита в скрипте, вот вам еще один пример. Представьте, что у вас есть простой сценарий и в нем есть переменный путь. Но вы хотите, чтобы он показывал каталог, содержащий файл, независимо от файла, в этом случае у вас может быть что-то вроде:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Очевидно, что в этом скрипте «путь» всегда будет тем же статическим, что и константа в начале, но могут быть случаи, когда это не так, и именно здесь это становится практичным, Например:
/*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
Хороший пример тех вещей, которые, когда вы изучаете, видите бесполезность, но когда вы подойдете к предмету, вы увидите, насколько они практичны.