Чтобы воспользоваться утилитой remindme, сначала нужно добавить несколько заметок в файл rememberfile, запустив сценарий remember, как показано в листинге 3.3. После этого можно с помощью remindme выполнить поиск в получившейся базе данных, передав сценарию искомый шаблон.
Результаты
Листинг 3.3. Тестирование сценария remember
$ remember Southwest Airlines: 800-IFLYSWA
$ remember
Enter note, end with ^D:
Find Dave’s film reviews at http://www.DaveOnFilm.com/
^D
Затем, когда спустя несколько месяцев вам потребуется вспомнить текст заметки, вы сможете сделать это с помощью reminder, как показано в листинге 3.4.
Листинг 3.4. Тестирование сценария remindme
$ remindme film reviews
Find Dave’s film reviews at http://www.DaveOnFilm.com/
Или, если вы не можете быстро вспомнить номер телефона, из которого известны только цифры 800, листинг 3.5 демонстрирует, как выполнить поиск по частично известному номеру.
Листинг 3.5. Поиск номера телефона по известной последовательности цифр с помощью сценария remindme
$ remindme 800
Southwest Airlines: 800-IFLYSWA
Усовершенствование сценария
Конечно, не каждый сценарий демонстрирует чудеса программирования, но эти два сценария наглядно показывают, насколько легко расширить возможности командной строки Unix. Чтобы вы себе ни вообразили, наверняка найдется простой способ реализовать это.
В рассмотренные сценарии можно внести много разных усовершенствований. Например, ввести понятие
№ 23. Интерактивный калькулятор
Если вы помните, scriptbc (сценарий № 9 в главе 1) позволял вызывать калькулятор bc для вычисления выражений, передаваемых в виде аргументов командной строки. Следующий логичный шаг — написать сценарий-обертку, превращающую сценарий scriptbc в интерактивный калькулятор командной строки. Сценарий (приводится в листинге 3.6) получился действительно очень коротким! Но чтобы он заработал, не забудьте поместить сценарий scriptbc в один из каталогов из списка PATH.
Код
Листинг 3.6. Сценарий калькулятора командной строки calc
··#!/bin/bash
··# calc — калькулятор командной строки, который действует как интерфейс к bc
··scale=2
··show_help()
··{
····cat << EOF
······In addition to standard math functions, calc also supports:
······a % b····remainder of a/b
······a ^ b····exponential: a raised to the b power
······s(x)···· sine of x, x in radians
······c(x)···· cosine of x, x in radians
······a(x)···· arctangent of x, in radians
······l(x)···· natural log of x
······e(x)···· exponential log of raising e to the x
······j(n,x)·· Bessel function of integer order n of x
······scale N··show N fractional digits (default = 2)
··EOF
··}
··if [$# −gt 0]; then
····exec scriptbc "$@"
··fi
··echo "Calc-a simple calculator. Enter 'help' for help, 'quit' to quit."
··/bin/echo −n "calc> "
··do
····case $command
····in
······quit|exit) exit 0································;;
······help|\?)·· show_help····························;;
······scale)···· scale=$args··························;;
······*)········ scriptbc −p $scale "$command" "$args";;
····esac
····/bin/echo −n "calc> "
··done