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

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

Жанры

Основы программирования в Linux
Шрифт:

grep -v "^${cdcatnum}, " $title_file > $temp_file

mv $temp_file $title_file

grep -v "^${cdcatnum}, " $tracks_file > $temp_file

mv $temp_file $tracks_file

cdcatnum=""

echo Entry removed

}

get_return

 fi

 return

}

11. Функция

list_tracks
снова использует команду
grep
для извлечения нужных вам строк, команду
cut
для доступа к отдельным полям и затем команду
more
для постраничного вывода. Если вы посмотрите, сколько строк на языке С займет повторная реализация этих 20 необычных строк кода, то поймете, каким мощным средством может быть командная оболочка.

list_tracks {

 if [ "$cdcatnum" = "" ]; then

echo no CD selected yet

return

 else

grep "^${cdcatnum}, " $tracks_file > $temp_file

num_tracks=${wc -l $temp_file}

if [ "$num_tracks" = "0" ]; then

echo no tracks found for $cdtitle

else

{

echo

echo "$cdtitle :-"

echo

cut -f 2- -d , $temp_file

echo

} | ${PAGER:-more}

fi

 fi

 get_return

 return

}

12. Теперь, когда все функции определены, можно вводить основную процедуру. Первые несколько строк просто приводят файлы в известное состояние; затем вы вызываете функцию формирования меню

set_menu_choice
и действуете в соответствии с ее выводом.

Если выбран вариант

quit
(завершение), вы удаляете временный файл, выводите сообщение и завершаете сценарий с успешным кодом завершения.

rm -f $temp_file

if [ !
– f $title_file ]; then

 touch $title_file

fi

if [ !
– f $tracks_file ]; then

 touch $tracks_file

fi

# Теперь непосредственно приложение

clear

echo

echo

echo "Mini CD manager" sleep 1

quit=n

while [ "$quit" != "y" ]; do

 set_menu_choice

 case "$menu_choice" in

a) add_records;;

r) remove records;;

f) find_cd y;;

u) update_cd;;

c) count_cds;;

l) list_tracks;;

b)

echo

more $title_file

echo

get return;;

q | Q ) quit=y;;

*) echo "Sorry, choice not recognized";;

 esac

done

# Убираем и покидаем

rm -f $temp_file echo "Finished"

exit 0

Замечания, касающиеся приложения

Команда trap в начале сценария предназначена для перехвата нажатия пользователем комбинации клавиш <Ctrt>+<C>. Им может быть сигнал

EXIT
или
INT
, в зависимости от настроек терминала.

Существуют другие способы реализации выбора пункта меню, особенно конструкция

select
в оболочках bash и ksh (которая, тем не менее, не определена в стандарте X/Open). Она представляет собой специализированный селектор пунктов меню. Проверьте ее на практике, если ваш сценарий может позволить себе быть немного менее переносимым. Для передачи пользователям многострочной информации можно также воспользоваться встроенными документами.

Возможно, вы заметили, что нет проверки первичного ключа, когда создается новая запись; новый код просто игнорирует последующие названия с тем же кодом, но включает их дорожки в перечень первого названия:

1 First CD Track 1

2 First CD Track 2

1 Another CD

2 With the same CD key

Мы оставляем это и другие усовершенствования в расчете на ваше воображение и творческие способности, которые проявятся при корректировке вами программного кода в соответствии с требованиями GPL.

Резюме 

В этой главе вы увидели, что командная оболочка — это мощный язык программирования со своими функциональными возможностями. Ее способность легко вызывать программы и затем обрабатывать их результат делают оболочку идеальным средством для решения задач, включающих обработку текста и файлов.

Теперь, если вам понадобится небольшая утилита, подумайте, сможете ли вы решить вашу проблему, комбинируя множество команд ОС Linux в сценарии командной оболочки. Вы будете поражены, увидев, как много вспомогательных программ можно написать без использования компилятора. 

Глава 3

Работа с файлами

В этой главе будут рассматриваться файлы и каталоги ОС Linux и способы работы с ними. Вы научитесь создавать файлы, открывать и читать их, писать в них и удалять их. Вы также узнаете, как программы могут обрабатывать каталоги (например, создавать, просматривать и удалять их). После сделанного в предыдущей главе отступления, посвященного командным оболочкам, теперь вы начнете программировать на языке С.

Прежде чем перейти к способам обработки файлового ввода/вывода в системе Linux, мы дадим краткий обзор понятий, связанных с файлами, каталогами и устройствами. Для управления файлами и каталогами вам придется выполнять системные вызовы (аналог Windows API в системах UNIX и Linux), но, кроме того, для обеспечения более эффективного управления файлами существует большой набор библиотечных функций стандартной библиотеки ввода/вывода (stdio).

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

Бернард Шоу

Пирсон Хескет
След в истории
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Бернард Шоу

Наномашины, внучок! Том 2

Новиков Николай Васильевич
2. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наномашины, внучок! Том 2

Пушкарь. Пенталогия

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
8.11
рейтинг книги
Пушкарь. Пенталогия

Навигаторы Апокалипсиса

Шалыгин Вячеслав Владимирович
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Навигаторы Апокалипсиса

Последний реанорец. Том XII – Часть II

Павлов Вел
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II

7 историй для девочек

Дюма-отец Александр
Детские:
детская проза
4.75
рейтинг книги
7 историй для девочек

Анна Иоановна

Сахаров Андрей Николаевич
9. Романовы. Династия в романах
Проза:
историческая проза
5.60
рейтинг книги
Анна Иоановна

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Герда

Веркин Эдуард Николаевич
Детские:
детская проза
5.00
рейтинг книги
Герда

Фауст

фон Гёте Иоганн Вольфганг
50. Библиотека всемирной литературы
Поэзия:
драматургия
8.33
рейтинг книги
Фауст

Вооружен и очень удачлив. Трилогия

Горбенко Людмила
123. В одном томе
Фантастика:
фэнтези
6.77
рейтинг книги
Вооружен и очень удачлив. Трилогия

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Судьба

Буджолд Лоис Макмастер
Мастера фантазии
Фантастика:
научная фантастика
космическая фантастика
5.00
рейтинг книги
Судьба

МИФОуказания

Асприн Роберт Линн
3. Мифология
Фантастика:
юмористическая фантастика
9.33
рейтинг книги
МИФОуказания