Чтение онлайн

на главную - закладки

Жанры

Командная строка Linux
Шрифт:

файл1 -ot файл2

файл1 старше файла файл2

– b файл

файл существует и является специальным файлом блочного устройства

– с файл

файл существует и является специальным файлом символьного устройства

– d файл

файл существует и является каталогом

– e файл

файл существует

– f файл

файл существует и является обычным файлом

– g файл

файл существует и имеет атрибут set-group-ID (бит setgid)

– G файл

файл существует

и принадлежит действующей группе

– k файл

файл существует и имеет атрибут «sticky bit»

– L файл

файл существует и является символической ссылкой

– O файл

файл существует и принадлежит действующему пользователю

– p файл

файл существует и является именованным каналом

– r файл

файл существует и доступен для чтения (имеет разрешение на чтение для действующего пользователя)

– s файл

файл существует и имеет размер больше нуля

– S файл

файл существует и является сетевым сокетом

– t дескриптор_файла

дескриптор_файла представляет файл, подключенный к терминалу. Это выражение можно использовать для проверки стандартных потоков ввода/вывода/ошибок

– u файл

файл существует и имеет атрибут setuid

– w файл

файл существует и доступен для записи (имеет разрешение на запись для действующего пользователя)

– x файл

файл существует и доступен для выполнения (имеет разрешение на выполнение для действующего пользователя)

Следующий сценарий демонстрирует применение некоторых выражений с файлами:

#!/bin/bash

# test-file: проверка файла

FILE=~/.bashrc

if [ -e "$FILE" ]; then

if [ -f "$FILE" ]; then

echo "$FILE is a regular file."

fi

if [ -d "$FILE" ]; then

echo "$FILE is a directory."

fi

if [ -r "$FILE" ]; then

echo "$FILE is readable."

fi

if [ -w "$FILE" ]; then

echo "$FILE is writable."

fi

if [ -x "$FILE" ]; then

echo "$FILE is executable/searchable."

fi

else

echo "$FILE does not exist"

exit 1

fi

exit

Сценарий проверяет файл, имя которого присвоено константе FILE, и выводит результат. Этот сценарий имеет две интересные особенности, на которые следует обратить внимание. Во-первых, отметьте, что параметр $FILE внутри выражений заключен в кавычки. Это не является обязательным требованием, но защищает от случаев, когда параметр пуст. Если механизм подстановки заменит $FILE пустым значением, это приведет к ошибке (операторы в этом случае будут интерпретироваться как непустые строки, а не как операторы). Использование кавычек гарантирует, что за оператором всегда будет следовать строка, даже если она пустая. Во-вторых, обратите внимание на команду exit (в конце сценария). Команда exit принимает единственный необязательный

аргумент, определяющий код возврата сценария. В отсутствие аргумента exit вернет значение по умолчанию 0. Такое использование exit позволит сценарию сообщить об ошибке, если в $FILE содержится имя несуществующего файла. Команда exit в самом конце сценария добавлена исключительно для формальности. Когда командная оболочка достигает конца сценария (то есть конца файла), она в любом случае завершает выполнение сценария с кодом завершения 0.

Аналогично, функции могут возвращать свой код завершения, передавая целочисленный аргумент команде return. Чтобы преобразовать сценарий, приведенный выше, в функцию для использования в больших программах, нужно заменить команды exit инструкциями return:

test_file {

# test-file: проверка файла

FILE=~/.bashrc

if [ -e "$FILE" ]; then

if [ -f "$FILE" ]; then

echo "$FILE is a regular file."

fi

if [ -d "$FILE" ]; then

echo "$FILE is a directory."

fi

if [ -r "$FILE" ]; then

echo "$FILE is readable."

fi

if [ -w "$FILE" ]; then

echo "$FILE is writable."

fi

if [ -x "$FILE" ]; then

echo "$FILE is executable/searchable."

fi

else

echo "$FILE does not exist"

return 1

fi

}

Выражения для проверки строк

В табл. 27.2 перечислены выражения, используемые для проверки строк.

Таблица 27.2. Выражения для проверки строк

Выражение

Истинно, если...

строка

Cтрока не пустая

– n строка

Длина строки больше нуля

– z строка

Длина строки равна нулю

строка1 = строка2

строка1 == строка2

строка1 и строка2 равны. Допускается использовать один или два знака «равно», но предпочтительнее два

строка1 != строка2

строка1 и строка2 не равны

строка1 > строка2

строка1 больше, чем строка2, в смысле алфавитной сортировки

строка1 < строка2

строка1 меньше, чем строка2, в смысле алфавитной сортировки

ВНИМАНИЕ

При использовании с командой test операторы > и < необходимо заключать в кавычки (или экранировать символом обратного слеша). Если этого не сделать, они будут интерпретироваться командной оболочкой как операторы перенаправления, что может привести к плачевным результатам. Обратите также внимание: в документации к командной оболочке bash утверждается, что порядок сортировки соответствует порядку алфавитной сортировки, определяемому текущими региональными настройками, но в действительности это не так. В версиях bash, вплоть до 4.0, используется порядок сор­тировки ASCII (POSIX).

Поделиться:
Популярные книги

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Попаданка 3

Ахминеева Нина
3. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 3

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4