Нейл Мэтью - Основы программирования в Linux
- Название:Основы программирования в Linux
- Автор:
- Жанр:
- Издательство:«БХВ-Петербург»
- Год:2009
- Город:Санкт-Петербург
- ISBN:978-5-9775-0289-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Нейл Мэтью - Основы программирования в Linux краткое содержание
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов
Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Объяснение, возможно, не слишком легкое для понимания, поэтому рассмотрим пример, который поможет внести ясность. Взгляните на простой пример, использующий хорошую безопасную команду ls
:
$ find . -newer while2 -type f -exec ls -l {} \;
-rwxr-xr-x 1 rick rick 275 Feb 8 17:07 ./elif3
-rwxr-xr-x 1 rick rick 336 Feb 8 16:52 ./words.txt
-rwxr-xr-x 1 rick rick 1274 Feb 8 16:52 ./words2.txt
-rwxr-xr-x 1 rick rick 504 Feb 8 18:43 ./_trap
$
Как видите, команда find
чрезвычайно полезна; она только требует небольшой практики для умелого ее применения. И такая практика, как и эксперименты с командой find
, обязательно принесет дивиденды.
Вторая очень полезная команда, заслуживающая рассмотрения, — это команда grep
. Необычное имя, означающее общий синтаксический анализатор регулярных выражений (general regular expression parser). Вы применяете команду find
для поиска файлов в вашей системе, а команду grep
для поиска строк в ваших файлах. Действительно, очень часто при использовании команды find
команда grep
передается после аргумента -exec
.
Команда grep
принимает опции, шаблон соответствия и файлы для поиска:
grep[ опции ] шаблон [ файлы ]
Если имена файлов не заданы, команда анализирует стандартный ввод.
Давайте начнем с изучения основных опций команды grep
. И на этот раз в табл. 2.14 приведены только самые важные из них; полный список см. на страницах интерактивного справочного руководства.
Таблица 2.14
Опция | Описание |
---|---|
-с |
Вместо вывода на экран совпавших с шаблоном строк выводит их количество |
-E |
Включает расширенные регулярные выражения |
-h |
Ужимает обычное начало каждой строки вывода за счет удаления имени файла, в котором строка найдена |
-i |
Не учитывает регистр букв |
-l |
Перечисляет имена файлов со строками, совпадающими с шаблоном; не выводит сами найденные строки |
-v |
Меняет шаблон соответствия для выбора вместо строк, соответствующих шаблону, несовпадающих с ним строк |
Выполните упражнение 2.17.
grep
Посмотрим команду grep
в действии на примерах простых шаблонов.
$ grep in words.txt
When shall we three meet again. In thunder, lightning, or in rain?
I come, Graymalkin!
$ grep -c in words.txt words2.txt
words.txt:2 words2.txt:14
$ grep -c -v in words.txt words2.txt
words.txt:9
words2.txt:16$
Как это работает
В первом примере нет опций; в нем просто ищется строка in
в файле words.txt и выводятся на экран любые строки, соответствующие условию поиска. Имя файла не отображается, поскольку поиск велся в единственном файле.
Во втором примере в двух разных файлах подсчитывается количество строк, соответствующих шаблону. В этом случае имена файлов выводятся на экран.
В заключение применяется опция -v
для инвертирования критерия поиска и подсчета строк, не совпадающих с шаблоном.
Как вы убедились, основной вариант применения команды grep легко усвоить. Теперь пришло время рассмотреть основы построения регулярных выражений, которые позволят вам выполнять более сложный поиск. Как упоминалось ранее в этой главе, регулярные выражения применяются в системе Linux и многих языках программирования с открытым исходным кодом. Вы можете использовать их в редакторе vi и в скриптах на языке Perl, применяя одни и те же принципы, общие для регулярных выражений, где бы они ни появлялись.
При обработке регулярных выражений определенные символы интерпретируются особым образом. В табл. 2.15 приведены наиболее часто используемые в регулярных выражениях символы.
Таблица 2.15
Символ | Описание |
---|---|
^ |
Привязка к началу строки |
$ |
Привязка к концу строки |
. |
Любой одиночный символ |
[] |
В квадратных скобках содержится диапазон символов, с любым из них возможно совпадение, например, диапазон символов a-e или инвертированный диапазон, перед которым стоит символ ^ |
Если вы хотите использовать любые из перечисленных символов как "обычные", поставьте перед ними символ \
. Например, если нужно найти символ $
, просто введите \$
.
Есть также несколько полезных специальных проверочных шаблонов, которые могут указываться в квадратных скобках (табл. 2.16).
Таблица 2.16
Проверочный шаблон | Описание |
---|---|
[:alnum:] |
Буквенно-цифровые символы |
[:alpha:] |
Буквы |
[:ascii:] |
Символы таблицы ASCII |
[:blank:] |
Пробел или табуляция |
[:cntrl:] |
Управляющие символы ASCII |
[:digit:] |
Цифры |
[:graph:] |
Неуправляющие и непробельные символы |
[:lower:] |
Строчные буквы |
[:print:] |
Печатные символы |
[:punct:] |
Знаки пунктуации |
[:space:] |
Пробельные символы, включая вертикальную табуляцию |
[:upper:] |
Прописные буквы |
[:xdigit:] |
Шестнадцатиричные цифры |
Кроме того, если задана опция =E
для расширенного соответствия, за регулярным выражением могут следовать и другие символы, управляющие выполнением проверки на соответствие шаблону (табл. 2.17). В команде grep
перед этими символами необходимо вводить символ \
.
Таблица 2.17
Опция | Описание |
---|---|
? |
Совпадение не обязательно, но возможно не более одного раза |
* |
Совпадения может не быть, оно может быть однократным или многократным |
+ |
Совпадение должно быть однократным или многократным |
{ n } |
Совпадение должно быть n раз |
{ n , } |
Совпадение должно быть n раз и больше |
{ n , m } |
Совпадение должно быть от n до m раз включительно |
Все это выглядит немного запутанно, но если осваивать все возможности постепенно, то вы увидите, что все не так сложно, как кажется на первый взгляд. Самый легкий способ понять регулярные выражения — просто попробовать применить несколько.
1. Начнем с поиска строк, заканчивающихся буквой "е". Возможно, вы уже догадались, что нужно использовать специальный символ $
:
$ grep e$ words2.txt
Art thou not, fatal vision, sensible
I see thee yet, in form as palpable
Nature seems dead, and wicked dreams abuse
Интервал:
Закладка: