Команда Basename

Thank you for reading this post, don't forget to subscribe!

basename – это ути­ли­та команд­ной стро­ки, кото­рая уда­ля­ет ката­лог и конеч­ный суф­фикс из задан­ных имен файлов.

Использование команды basename

Коман­да basename под­дер­жи­ва­ет два фор­ма­та синтаксиса:

basename берет имя фай­ла и печа­та­ет послед­ний ком­по­нент име­ни фай­ла. При жела­нии он так­же может уда­лить любой конеч­ный суф­фикс. Это про­стая коман­да, допус­ка­ю­щая лишь несколь­ко параметров.

Самый про­стой при­мер – выве­сти имя фай­ла с уда­лен­ны­ми веду­щи­ми каталогами:

Вывод будет вклю­чать имя файла:

Коман­да basename уда­ля­ет все завер­ша­ю­щие / символы:

Обе коман­ды выда­дут оди­на­ко­вый результат:

По умол­ча­нию каж­дая стро­ка выво­да закан­чи­ва­ет­ся сим­во­лом новой стро­ки. Что­бы завер­шить стро­ки NUL, исполь­зуй­те опцию -z ( –zero).

 

Несколько входов

Коман­да basename может при­ни­мать несколь­ко имен в каче­стве аргу­мен­тов. Для это­го вызо­ви­те коман­ду с пара­мет­ром -a ( –multiple), за кото­рым сле­ду­ет спи­сок фай­лов, раз­де­лен­ных пробелом.

Напри­мер, что­бы полу­чить име­на фай­лов /etc/passwd и /etc/shadow, запустите:

Удаление конечного суффикса

Что­бы уда­лить любой конеч­ный суф­фикс из име­ни фай­ла, пере­дай­те суф­фикс в каче­стве вто­ро­го аргумента:

Обыч­но эта функ­ция исполь­зу­ет­ся для уда­ле­ния рас­ши­ре­ний файлов:

Дру­гой спо­соб уда­лить конеч­ный суф­фикс – ука­зать суф­фикс с помо­щью опции -s ( –suffix=SUFFIX):

Эта фор­ма син­так­си­са поз­во­ля­ет уда­лить любой конеч­ный суф­фикс из несколь­ких имен:

Пример

В сле­ду­ю­щем при­ме­ре пока­за­но, как исполь­зо­вать коман­ду basename внут­ри for­цик­ла bash для пере­име­но­ва­ния всех фай­лов, окан­чи­ва­ю­щих­ся на «.jpeg» в теку­щем ката­ло­ге, путем заме­ны рас­ши­ре­ния фай­ла с «.jpeg» на «.jpg»:

Если вы исполь­зу­е­те bash в каче­стве обо­лоч­ки, вме­сто вызо­ва basename­вы може­те исполь­зо­вать уда­ле­ние завер­ша­ю­ще­го рас­ши­ре­ния с помо­щью рас­ши­ре­ния пара­мет­ров оболочки.

Коман­да basename уда­ля­ет любой началь­ный ката­лог и конеч­ный суф­фикс из имени.