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

Здесь есть возможность читать онлайн «Мендель Купер - Искусство программирования на языке сценариев командной оболочки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Искусство программирования на языке сценариев командной оболочки»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Искусство программирования на языке сценариев командной оболочки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Пример 12-2. Badname, удаление файлов в текущем каталоге, имена которых содержат недопустимые символы и пробелы.

#!/bin/bash

# Удаление файлов в текущем каталоге, чьи имена содержат недопустимые символы.

for filename in *

do

badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p`

# Недопустимые символы в именах файлов: + { ; " \ = ? ~ ( ) < > & * | $

rm $badname 2>/dev/null # Сообщения об ошибках "выстреливаются" в никуда.

done

# Теперь "позаботимся" о файлах, чьи имена содержат пробельные символы.

find . -name "* *" -exec rm -f {} \;

# На место "{}", find подставит полное имя файла.

# Символ '\' указывает на то, что ';' интерпретируется как обычный символ, а не как конец команды.

exit 0

#---------------------------------------------------------------------

# Строки, приведенные ниже, не будут выполнены, т.к. выше стоит команда "exit".

# Альтернативный вариант сценария:

find . -name '*[+{;"\\=?~()<>&*|$ ]*' -exec rm -f '{}' \;

exit 0

# (Спасибо S.C.)

Пример 12-3. Удаление файла по его номеру inode

#!/bin/bash

# idelete.sh: Удаление файла по номеру inode.

# Этот прием используется в тех случаях, когда имя файла начинается с недопустимого символа,

#+ например, ? или -.

ARGCOUNT=1 # Имя файла должно быть передано в сценарий.

E_WRONGARGS=70

E_FILE_NOT_EXIST=71

E_CHANGED_MIND=72

if [ $# -ne "$ARGCOUNT" ]

then

echo "Порядок использования: `basename $0` filename"

exit $E_WRONGARGS

fi

if [ ! -e "$1" ]

then

echo "Файл \""$1"\" не найден."

exit $E_FILE_NOT_EXIST

fi

inum=`ls -i | grep "$1" | awk '{print $1}'`

# inum = номер inode (index node) файла

# Каждый файл имеет свой inode, где хранится информация о физическом расположении файла.

echo; echo -n "Вы совершенно уверены в том, что желаете удалить \"$1\" (y/n)? "

# Ключ '-v' в команде 'rm' тоже заставит команду вывести подобный запрос.

read answer

case "$answer" in

[nN]) echo "Передумали?"

exit $E_CHANGED_MIND

;;

*) echo "Удаление файла \"$1\".";;

esac

find . -inum $inum -exec rm {} \;

echo "Файл "\"$1"\" удален!"

exit 0

Дополнительные примеры по использованию команды findвы найдете в Пример 12-22, Пример 3-4 и Пример 10-9. В страницах справочного ркуоводства (man find) вы найдете более подробную информацию об этой достаточно сложной и мощной команде.

xargs

Команда передачи аргументов указанной команде. Она разбивает поток аргументов на отдельные составляющие и поочередно передает их заданной команде для обработки. Эта команда может рассматриваться как мощная замена обратным одиничным кавычкам. Зачастую, когда команды, заключенные в обратные одиночные кавычки, завершаются с ошибкой too many arguments (слишком много аргументов), использование xargsпозволяет обойти это ограничение. Обычно, xargsсчитывает список аргументов со стандартного устройства ввода stdin или из канала (конвейера), но может считывать информацию и из файла.

Если команда не задана, то по-умолчанию выполняется echo. При передаче аргументов по конвейеру, xargsдопускает наличие пробельных символов и символов перевода строки, которые затем автоматически отбрасываются.

bash$ ls -l

total 0

-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1

-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2

bash$ ls -l | xargs

total 0 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2

ls | xargs -p -l gzip-- упакует с помощью gzip все файлы в текущем каталоге, выводя запрос на подтверждение для каждого файла.

картинка 79 xargsимеет очень любопытный ключ -n NN , который ограничивает количество передаваемых аргументов за один "присест" числом NN .

ls | xargs -n 8 echo-- выведет список файлов текущего каталога в 8 колонок.

картинка 80Еще одна полезная опция -- -0 , в комбинации с find -print0или grep -lZпозволяет обрабатывать аргументы, содержащие пробелы и кавычки.

find / -type f -print0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f

grep -rliwZ GUI / | xargs -0 rm -f

Обе вышеприведенные команды удалят все файлы, содержащие в своем имени комбинацию символов "GUI". (Спасибо S.C.)

Пример 12-4. Использование команды xargs для мониторинга системного журнала

#!/bin/bash

# Создание временного файла мониторинга в текщем каталоге,

# куда переписываются несколько последних строк из /var/log/messages.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Искусство программирования на языке сценариев командной оболочки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

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

x