Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

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

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание: краткое содержание, описание и аннотация

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

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

······filename="$(echo $name | cut −c16-)"

······if [-d $name]; then

картинка 130········filecount="$(ls $name | wc −l | sed 's/[^[: digit: ]]//g')"

········echo " $index) $filename (contents = ${filecount} items," \

············ " deleted = $datetime)"

······else

картинка 131········size="$(ls −sdk1 $name | awk '{print $1}')"

········echo " $index) $filename (size = ${size}Kb, deleted = $datetime)"

······fi

······index=$(($index + 1))

····done

····echo ""

····/bin/echo −n "Which version of $1 should I restore ('0' to quit)? [1]: "

····read desired

····if [! -z "$(echo $desired | sed 's/[[: digit: ]]//g')"]; then

······echo "$0: Restore canceled by user: invalid input." >&2

······exit 1

····fi

····if [${desired:=1} −ge $index]; then

······echo "$0: Restore canceled by user: index value too big." >&2

······exit 1

····fi

····if [$desired −lt 1]; then

······echo "$0: Restore canceled by user." >&2

······exit 1

····fi

картинка 132····restore="$(ls −td1 *"$1" | sed −n "${desired}p")"

картинка 133····if [-e "$dest/$1"]; then

······echo "\"$1\" already exists in this directory. Cannot overwrite." >&2

······exit 1

····fi

····/bin/echo −n "Restoring file \"$1\"…"

····$move "$restore" "$dest/$1"

····echo "done."

картинка 134····/bin/echo −n "Delete the additional copies of this file? [y] "

····read answer

····if [${answer:=y} = "y"]; then

······$realrm −rf *"$1"

······echo "Deleted."

····else

······echo "Additional copies retained."

····fi

··else

····if [-e "$dest/$1"]; then

······echo "\"$1\" already exists in this directory. Cannot overwrite." >&2

······exit 1

····fi

····restore="$(ls −d *"$1")"

····/bin/echo −n "Restoring file \"$1\"… "

····$move "$restore" "$dest/$1"

····echo "Done."

··fi

··exit 0

Как это работает

Первый фрагмент кода в картинка 135, блок в условной инструкции if [$# −eq 0], выполняется, если сценарий запущен без аргументов. Он выводит содержимое архива удаленных файлов. Однако тут есть одна загвоздка: нам нужно вывести имена файлов без префикса со временем удаления, потому что он предназначен только для внутреннего использования. Префикс только ухудшил бы читаемость списка. Для решения этой задачи применяется команда sed в картинка 136, которая удаляет первые пять вхождений шаблона «цифра цифра точка» из каждой строки в выводе команды ls.

Пользователь может указать в аргументе имя файла или каталога для восстановления. Следующий шаг в картинка 137— проверка количества совпадений с именем, указанным пользователем.

Необычное применение вложенных двойных кавычек в этой строке (вокруг $1) позволяет команде ls находить совпадения с именами файлов, содержащими пробелы, а шаблонный символ * разрешает совпадения с именами, включающими произвольные префиксы с временем удаления. Последовательность 2> /dev/null нужна, чтобы скрыть любые сообщения об ошибках от пользователя, выводимые командой. С наибольшей вероятностью будет скрыто сообщение об ошибке «No such file or directory» («Нет такого файла или каталога»), которое выводит команда ls, когда не может найти файл с указанным именем.

При наличии нескольких совпадений с указанным именем файла или каталога выполняется самая сложная часть сценария — блок в инструкции if [$matches −gt 1] картинка 138, который выводит все результаты. Флаг −t в команде ls, вызываемой в главном цикле for, обеспечивает перебор файлов в архиве в обратном хронологическом порядке — от более новых к более старым, а вызов команды awk в картинка 139преобразует префикс в имени файла в дату и время удаления в круглых скобках. В строке картинка 140определяется размер файла в килобайтах, для чего вызывается команда ls с флагом −k.

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

Когда пользователь выберет одно из совпадений, команда в картинка 142получит точное имя файла для восстановления. Эта команда чуть иначе использует sed. Здесь с помощью флага −n строчному редактору sed передается номер строки (${desired}) и команда p (print — печать), что позволяет быстро извлечь из потока ввода указанную строку. Хотите увидеть только строку с номером 37? Команда sed −n 37p сделает это.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

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


Отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

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

x