Нейл Мэтью - Основы программирования в Linux
- Название:Основы программирования в Linux
- Автор:
- Жанр:
- Издательство:«БХВ-Петербург»
- Год:2009
- Город:Санкт-Петербург
- ISBN:978-5-9775-0289-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Нейл Мэтью - Основы программирования в Linux краткое содержание
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов
Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Полная синтаксическая запись команды find
выглядит следующим образом:
find[ путь ] [ опции ] [ критерии ] [ действия ]
Часть записи [ путь ]
понятна и проста: вы можете указать абсолютный путь поиска, например, /bin
, или относительный, например ..
При необходимости можно задать несколько путей — например, find /var /home
.
В табл. 2.10 перечислены основные опции команды.
Таблица 2.10
Опция | Описание |
---|---|
-depth |
Поиск в подкаталогах перед поиском в самом каталоге |
-follow |
Следовать по символическим ссылкам |
-maxdepths N |
При поиске проверять не более N вложенных уровней каталога |
-mount (или -xdev ) |
Не искать в каталогах других файловых систем |
Теперь о критериях. В команде find
можно задать большое число критериев, и каждый из них возвращает либо true
, либо false
. В процессе работы команда find
рассматривает по очереди каждый файл и применяет к нему все критерий в порядке их определения. Если очередной критерий возвращает значение false
, команда find
прекращает анализ текущего файла и переходит к следующему; если критерий возвращает значение true
, команда применяет следующий критерий к текущему файлу или совершает заданное действие над ним. В табл. 2.11 перечислены самые распространенные критерии; полный список тестов, которые можно применять в команде find
, вы найдете на страницах интерактивного справочного руководства.
Таблица 2.11
Критерий | Описание |
---|---|
-atime N |
К файлу обращались последний раз N дней назад |
-mtime N |
Файл последний раз изменялся N дней назад |
-name шаблон |
Имя файла без указания пути соответствует заданному шаблону. Для гарантии того, что шаблон будет передан в команду find и не будет немедленно обработан командной оболочкой, его следует всегда заключать в кавычки |
-newer другой файл |
Текущий файл, измененный позже, чем другой файл |
-type С |
Файл типа C , где C может принимать определенные значения; наиболее широко используемые " d " для каталогов и " f " для обычных файлов. Остальные обозначения типов можно посмотреть на страницах интерактивного справочного руководства |
-user имя пользователя |
Файл принадлежит пользователю с заданным именем |
Вы также можете объединять критерии с помощью операторов. Как показано в табл. 2.12, у большинства из них две формы записи: короткая и более длинная форма.
Таблица 2.12
Оператор, короткая форма | Оператор, длинная форма | Описание |
---|---|---|
! |
-not |
Инвертирование критерия |
-а |
-and |
Оба критерия должны быть истинны |
-о |
-or |
Один из критериев должен быть истинным |
Изменить порядок проверки критериев и выполнения операторов можно с помощью скобок. Поскольку в командной оболочке у них есть особое назначение, скобки также следует выделять с помощью обратного слэша. Кроме того, если вы применяете шаблон для имени файла, то следует использовать кавычки, чтобы оболочка не выполняла подстановку имени, а прямо передала шаблон команде find
. Например, если вы хотите задать критерий "измененный позже, чем файл X
, или с именем, начинающимся со знака подчеркивания", его можно записать следующим образом:
\(-newer X -о -name "_*" \)
Мы приведем пример сразу после описания "Как это работает". А сейчас выполните упражнение 2.16.
find
с критериямиПопытаемся найти в текущем каталоге файлы, измененные после модификации файла while2.
$ find . -newer while2 -print
.
./elif3
./words.txt
./words2.txt
./_trap
$
Все чудесно, за исключением того, что вы нашли ненужный вам текущий каталог. Вас интересуют только обычные файлы, поэтому добавьте дополнительный критерий -type f
.
$ find . -newer while2 -type f -print
./elif3
./words.txt
./words2.txt
./_trap
$
Как это работает
Как это работает? Вы определили, что команда find
должна искать в текущем каталоге ( .
) файлы, измененные позже, чем файл while2 ( -newer while2
), и, если этот критерий пройден, проверять с помощью следующего критерия ( -type f
), обычные ли это файлы. В заключение вы применили действие, с которым уже сталкивались, -print
, просто для того чтобы подтвердить, что файлы были найдены.
Теперь найдем файлы с именами, начинающимися с символа подчеркивания или измененные позже, чем файл while2, но в любом случае обычные файлы. Этот пример покажет, как объединять критерии с помощью скобок.
$ find . \( -name "_*" -or -newer while2 \) -type f -print
./elif3
./words.txt
./words2.txt
./_break
./_if
./set
./_shift
./_trap
./_unset
./ until
$
Это не слишком трудный пример, не так ли? Вы должны экранировать скобки, чтобы они не обрабатывались командной оболочкой, и заключить в кавычки символ *
, чтобы он также был передан непосредственно в команду find
.
Теперь, когда вы можете правильно искать файлы, рассмотрим действия, которые можно совершить, когда найден файл, соответствующий вашей спецификации. И снова в табл. 2.13 перечислены только самые популярные действия; полный список можно найти на страницах интерактивного справочного руководства.
Таблица 2.13
Действие | Описание |
---|---|
-exec команда |
Выполняет команду . Наиболее широко используемое действие. После табл. 2.13 приведено объяснение способа передачи параметров в команду. Это действие следует завершать символьной парой \; |
-ok команда |
Подобно действию exec , за исключением того, что перед обработкой файлов командой выводится подсказка для получения подтверждения пользователя на обработку каждого файла. Это действие следует завершать символьной парой \; |
-print |
Вывод на экран имени файла |
-ls |
Применение команды ls -dils к текущему файлу |
Команда в аргументах -exec
и -ok
принимает последующие параметры в строке как собственные, пока не встретится последовательность \;
В действительности команда, в аргументах -exec
и -ok
выполняет встроенную команду, поэтому встроенная команда должна завершиться экранированной точкой с запятой, для того чтобы команда find
могла определить, когда ей следует продолжить поиск в командной строке аргументов, предназначенных для нее самой. Магическая строка {}
— параметр специального типа для команд -exec
и -ok
, который заменяется полным путем к текущему файлу.
Интервал:
Закладка: