- •1_1. Ввод-вывод
- •1_2. Синхронное и асинхронное выполнение команд
- •1_3. Конвейер
- •1_4. Метасимволы, генерация имен файлов
- •2_1. Комментарии
- •2_2. Подстановка результатов выполнения команд
- •2_3. Переменные и подстановка их значений
- •2_4. Специальные переменные
- •3_1. Цикл для
- •3_2. Оператор выбора
- •3_3. Условный оператор.
- •3_4. Цикл пока
- •3_5. Функции
- •3_6. Зарезервированные слова
- •3_7. Специальные команды
- •4_1. Запуск shellа
- •4_2. Выполнение
- •4_3. Окружение
- •4_4. Сигналы
- •4_5. Замечания
- •5_1. Команда test
- •5_2. Команда expr
- •5_3. Команда ena
5_3. Команда ena
Команда ena позволяет получить части полного имени файла.
Первый аргумент - флаг, второй - имя файла. Команда различает
следующие флаги:
-n - имя файла без расширения
-f - имя файла с расширением
-e - расширение
-d - имя директории
-p - если имя файла начинается с . или .. , то эти
символы выделяются из имени
Ниже приводится текст программы ena, хранящийся в /util/ena.
# Get part of pathname
case $1 in
-n )
expr $2 : '.*/\(.*\)[.].*' \| $2 : '\(.*\)[.].*' \| $2
;;
-f )
expr $2 : '.*/\(.*\)' \| $2
;;
-e )
expr $2 : '.*\([.][^./]*\)' \| ' '
;;
-d )
expr $2 : '\(.*\)/.*' \| $2
;;
-p )
expr $2 : '\([.]\)/.*' \| $2 : '\([.][.]\)/.*' \| ' '
;;
* )
echo "error: unknown part of pathname $1"
exit 2
;;
esac