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

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

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

exit 1

}

WEIRD=`echo -n -e '\377'` # или WEIRD=$'\377'

[[ $# -eq 1 ]] || usage

case `file "$1"` in

*"C program text"*) sed -e "s%/\*%${WEIRD}%g;s%\*/%${WEIRD}%g" "$1" \

| tr '\377\n' '\n\377' \

| sed -ne 'p;n' \

| tr -d '\n' | tr '\377' '\n';;

*) usage;;

esac

#

Этот вариант, все еще некорректно обрабатывает такие строки как:

# printf("/*");

# или

# /* /* ошибочный вложенный комментарий */

#

# Для обработки специальных случаев (\", \\" ...) придется написать синтаксический анализатор

# (может быть с помощью lex или yacc?).

exit 0

which

Команда which command-xxx вернет полный путь к "command-xxx". Очень полезна для того, чтобы узнать -- установлена ли та или иная утилита в системе.

$bash which rm

/usr/bin/rm

whereis

Очень похожа на which, упоминавшуюся выше. Команда whereis command-xxx вернет полный путь к "command-xxx", но кроме того, еще и путь к manpage– - файлу, странице справочника по заданной утилите.

$bash whereis rm

rm: /bin/rm /usr/share/man/man1/rm.1.bz2

whatis

Утилита whatis filexxx отыщет "filexxx" в своей базе данных. Может рассматриваться как упрощенный вариант команды man.

$bash whatis whatis

whatis (1) - search the whatis database for complete words

Пример 12-25. Исследование каталога /usr/X11R6/bin

#!/bin/bash

# Что находится в каталоге /usr/X11R6/bin?

DIRECTORY="/usr/X11R6/bin"

# Попробуйте также "/bin", "/usr/bin", "/usr/local/bin", и т.д.

for file in $DIRECTORY/*

do

whatis `basename $file` # Вывод информации о файле.

done

exit 0

# Вывод этого сценария можно перенаправить в файл:

# ./what.sh >>whatis.db

# или включить постраничный просмотр на экране,

# ./what.sh | less

См.

также Пример 10-3.

vdir

Вывод списка файлов в каталоге. Тот же эффект имеет команда ls -l.

Это одна из утилит GNU fileutils.

bash$ vdir

total 10

– rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo

– rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak

– rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo

bash ls -l

total 10

– rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo

– rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak

– rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo

locate, slocate

Команда locate определяет местонахождение файла, используя свою базу данных, создаваемую специально для этих целей. Команда slocate– - это защищенная версия locate (которая может оказаться простым псевдонимом команды slocate).

$bash locate hickson

/usr/lib/xephem/catalogs/hickson.edb

readlink

Возвращает имя файла, на который указывает символическая ссылка.

bash$ readlink /usr/bin/awk

../../bin/gawk

strings

Команда strings используется для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для прикидочного анализа дамп-файлов (core dump) или для отыскания информации о типе файла, например для графических файлов неизвестного формата (например, strings image-file | more может вывести такую строчку: JFIF, что говорит о том, что мы имеем дело с графическим файлом в формате jpeg). В сценариях, вероятнее всего, вам придется использовать эту команду в связке с grep или sed. См. Пример 10-7 и Пример 10-9.

Пример 12-26. "Расширенная" команда strings

#!/bin/bash

# wstrings.sh: "word-strings" (расширенная команда "strings")

#

# Этот сценарий фильтрует вывод команды "strings" путем проверки на соответствие

#+ выводимых слов по файлу словаря.

# Таким способом эффективно "отсекается" весь "мусор",

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

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

О, мой бомж

Джема
1. Несвятая троица
Любовные романы:
современные любовные романы
5.00
рейтинг книги
О, мой бомж

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Вы не прошли собеседование

Олешкевич Надежда
1. Укротить миллионера
Любовные романы:
короткие любовные романы
5.00
рейтинг книги
Вы не прошли собеседование

Метаморфозы Катрин

Ром Полина
Фантастика:
фэнтези
8.26
рейтинг книги
Метаморфозы Катрин

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Попаданка для Дракона, или Жена любой ценой

Герр Ольга
Любовные романы:
любовно-фантастические романы
7.17
рейтинг книги
Попаданка для Дракона, или Жена любой ценой

Истинная поневоле, или Сирота в Академии Драконов

Найт Алекс
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

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

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

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

Волков. Гимназия №6

Пылаев Валерий
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Волков. Гимназия №6

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки