Как узнать имя, а также полный путь к каталогу/файлу в bash?

Linux bash shell

Нужно написать скрипт
myscript [-n|-p] имя

работающий следующим образом:

1) cd /home/uzer
myscript -n /home/uzer
# должен вывести:
# uzer
myscript -n .
# должен вывести:
# uzer
myscript -n my_docs/file.txt
# должен вывести:
# file.txt

2) cd /home/uzer
myscript -p /home/uzer
# должен вывести:
# /home
myscript -p .
# должен вывести:
# /home
myscript -p my_docs/file.txt
# должен вывести:
# /home/uzer/my_docs

Данный скрипт одинаково действует и для файлов, и для каталогов - но он лишь для примера, не суть важно.

О команде basename знаю, как и то что она работает для каталогов.
К сожалению, "basename ." выводит "."
Путь для каталога думаю, можно найти с помощью cd и pwd (или можно проще?).
Основная загвоздка в получении полного пути к файлу.
Имея в наличии полный путь, нетрудно получить имя и путь:
name=$(basename $full_path_to_file)
path=${full_path_to_file%/*}

Предлагайте. :)
Ответы:
SP=`readlink -f ./mydocumentsandsettings/file.txt`
dirname $SP
basename $SP


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.