Понякога някои уроци имат за цел да обяснят малко по-екзотични и странни команди, от друга страна, има такива, които включват серийни дистрибуции и не са толкова популярни като cd, ls, cat и т.н., но са също толкова практични. В този урок ще ви покажа какво може да се направи с две от тези команди: basename и ми кажете.
Може би априори ви се струват абсурдни и че нямат полза, но имат доста практични приложения в някои случаи, като например в скриптове, където трябва да извлечете част от пътя, като името на файла или директорията, така че друга команда да работи върху това ...
За какво са те
Тези команди са много основни и неговите функции звук:
- базово име: използва се за извличане на името на файла от път.
- кажи ми: използва се за извличане на името на директорията от път.
Примери за използване
Тук можете да видите някои примери как да ги използвам:
- Например да се използва базово име с / 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
Що се отнася до a полезност в скрипт, ето ви още един пример. Представете си, че имате прост скрипт и че в него има път, който е променлив. Но вие искате да показва директорията, която съдържа файл, независимо от файла, в този случай може да имате нещо като:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Очевидно в този скрипт "pathname" винаги ще бъде една и съща статика, декларирана от константата в началото, но може да има случаи, в които не е и именно там става практично, Например:
/*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
Добър пример за онези неща, които когато учиш, виждаш безполезни, но когато стигнеш до темата, виждаш колко са практични.