Откинуть имя файла из полного пути к нему

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Откинуть имя файла из полного пути к нему

Непрочитанное сообщение serge » 2008-09-11 0:21:20

В csh есть так называемые модификаоры строк. Например:

Код: Выделить всё

#!/bin/csh
set a = /usr/bin/pr1
echo $a:h
Результатом будет строка

Код: Выделить всё

/usr/bin
А вот как подобное на sh сделать? Можно обходными путями.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Откинуть имя файла из полного пути к нему

Непрочитанное сообщение zg » 2008-09-11 7:18:31

Код: Выделить всё

BASENAME(1)             FreeBSD General Commands Manual            BASENAME(1)

NAME
     basename, dirname -- return filename or directory portion of pathname

SYNOPSIS
     basename string [suffix]
     basename [-a] [-s suffix] string [...]
     dirname string

DESCRIPTION
     The basename utility deletes any prefix ending with the last slash `/'
     character present in string (after first stripping trailing slashes), and
     a suffix, if given.  The suffix is not stripped if it is identical to the
     remaining characters in string.  The resulting filename is written to the
     standard output.  A non-existent suffix is ignored.  If -a is specified,
     then every argument is treated as a string as if basename were invoked
     with just one argument.  If -s is specified, then the suffix is taken as
     its argument, and all other arguments are treated as a string.

Код: Выделить всё

zg# basename /usr/bin/pr1
pr1
zg# dirname /usr/bin/pr1
/usr/bin
zg#


Гость
проходил мимо

Re: Откинуть имя файла из полного пути к нему

Непрочитанное сообщение Гость » 2008-09-11 12:20:10

serge писал(а):echo $a:h
echo ${a%/*}
сложно что ль глянуть раздел о переменных в sh(1)?

ps, с каких пор basename(1) перестала быть внешней тулзой?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Откинуть имя файла из полного пути к нему

Непрочитанное сообщение zg » 2008-09-11 13:18:28

Гость писал(а):ps, с каких пор basename(1) перестала быть внешней тулзой?
ни с каких, в этом её преемущество - работает в любом шелле