Страница 1 из 1

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

Добавлено: 2008-09-11 0:21:20
serge
В csh есть так называемые модификаоры строк. Например:

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

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

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

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

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

Добавлено: 2008-09-11 7:18:31
zg

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

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 7:22:28
serge
:good:
Как всегда все оказалось просто :oops:

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

Добавлено: 2008-09-11 12:20:10
Гость
serge писал(а):echo $a:h
echo ${a%/*}
сложно что ль глянуть раздел о переменных в sh(1)?

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

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

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