Программирование в стандарте POSIX


Генерация маршрутных имен файлов - часть 2


файл с именем .bu.

Наконец, рассмотрим более сложный пример. Пусть требуется так переименовать фортрановские файлы текущего каталога, чтобы окончание .f заменилось на .for. Служебная программа

basename цепочка_символов [суффикс]

убирает из цепочки_символов любой оканчивающийся на / префикс и суффикс (если он есть) и выдает результат на стандартный вывод. Применим ее для решения сформулированной задачи (см. листинг 2.23).

for f in *.f do mv $f `basename $f .f`.for done

Листинг 2.23. Пример подстановки результатов команды как части слова.

Особенностью приведенного примера является использование подстановки результатов команды как части слова (в данном случае - как части нового имени файла).

Еще одним видом генерации маршрутных имен файлов можно было бы считать обработку символа тильда '~', однако это действие открывает, а не завершает подстановки в командной строке. Префикс слов, от тильды до ближайшего слэша (или конца слова, если слэш отсутствует), заменяется на имя домашнего каталога пользователя, входное имя которого задано префиксом. Если префикс пустой, вместо него подставляется значение переменной окружения HOME. В присваиваниях тильда распознается и обрабатывается не только в начале слова, но и после знаков равенства и двоеточия, что позволяет, в частности, естественным образом обращаться со значением переменной окружения PATH.

Так, при подстановке результатом работы команды echo ~ может быть /home/galat.




- Начало -  - Назад -  - Вперед -