Дейв Тейлор - Сценарии командной оболочки. 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-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

Чтобы что-то зашифровать по алгоритму rot13, это «что-то» нужно передать команде tr:

tr '[a-zA-Z]' '[n-za-mN-ZA-M]'

Например:

$ echo "So two people walk into a bar…" | tr '[a-zA-Z]' '[n-za-mN-ZA-M]'

Fb gjb crbcyr jnyx vagb n one…

Чтобы вернуть строке читаемый вид, достаточно применить то же преобразование:

$ echo 'Fb gjb crbcyr jnyx vagb n one…' | tr '[a-zA-Z]' '[n-za-mN-ZA-M]'

So two people walk into a bar…

Известно, что этот подстановочный шифр использовался в фильме «2001: A Space Odyssey» [7] В отечественном кинопрокате вышел под названием «Космическая одиссея 2001 года». — Примеч. пер. . Помните, как там назывался компьютер? Проверим его:

$ echo HAL | tr '[a-zA-Z]' '[b-zaB-ZA]'

IBM

Другой короткий пример — проверка палиндромов. Введите что-нибудь, что на ваш взгляд является палиндромом, и этот код проверит его:

testit="$(echo $@ | sed 's/[^[: alpha: ]]//g' | tr '[: upper: ]' '[: lower: ]')"

backward="$(echo $testit | rev)"

if ["$testit" = "$backward"]; then

··echo "$@ is a palindrome"

else

··echo "$@ is not a palindrome"

fi

Палиндромом называется слово, которое одинаково читается слева направо и справа налево, поэтому первым делом код удаляет все неалфавитные символы и преобразует все буквы в нижний регистр. Затем Unix-утилита rev переворачивает задом наперед строку, полученную ею из стандартного ввода. Если прямая и перевернутая версии совпадают, значит, проверяемая строка является палиндромом; если они различаются, это не палиндром.

Показанные далее игры немногим сложнее, но все они достаточно забавны, чтобы вы добавили их в свою систему.

№ 83. Декодирование: игра в слова

Это простейшая игра в анаграммы. Если вы когда-нибудь сталкивались с подобными играми, то легко поймете суть: выбирается случайное слово, и буквы в нем переставляются случайным образом. Задача игрока — угадать исходное слово за как можно меньшее число попыток. Полный сценарий, реализующий эту игру, приводится в листинге 12.1, но, чтобы получить список слов, вам также нужно загрузить файл long-words.txt из ресурсов книги http://www.nostarch.com/wcss2/и сохранить его в каталоге /usr/lib/games .

Код

Листинг 12.1.Игровой сценарий unscramble

··#!/bin/bash

··# unscramble — выбирает слово, кодирует его, переставляя буквы,

··#·· и предлагает пользователю угадать исходное слово (или фразу).

··wordlib="/usr/lib/games/long-words.txt"

··scrambleword()

··{

····# Выбирает случайное слово из wordlib и кодирует его.

····# Исходное слово сохраняется в $match, закодированное — в $scrambled.

····match="$( картинка 477randomquote $wordlib)"

····echo "Picked out a word!"

····len=${#match}

····scrambled=""; lastval=1

····for ((val=1; $val < $len;))

····do

картинка 478······if [$(($RANDOM % 2)) −eq 1]; then

········scrambled=$scrambled$(echo $match | cut −c$val)

······else

········scrambled=$(echo $match | cut −c$val)$scrambled

······fi

······val=$(($val + 1))

····done

··}

··if [! -r $wordlib]; then

····echo "$0: Missing word library $wordlib" >&2

····echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2

····echo "save the file as $wordlib and you're ready to play!)" >&2

····exit 1

··fi

··newgame=""; guesses=0; correct=0; total=0

картинка 479··until ["$guess" = "quit"]; do

····scrambleword

····echo ""

····echo "You need to unscramble: $scrambled"

····guess="??"; guesses=0

····total=$(($total + 1))

картинка 480····while ["$guess"!= "$match" −a "$guess"!= "quit" −a "$guess"!= "next"]

····do

······echo ""

······/bin/echo −n "Your guess (quit|next): "

······read guess

······if ["$guess" = "$match"]; then

········guesses=$(($guesses + 1))

········echo ""

········echo "*** You got it with tries = ${guesses}! Well done!! ***"

········echo ""

········correct=$(($correct + 1))

······elif ["$guess" = "next" −o "$guess" = "quit"]; then

········echo "The unscrambled word was \"$match\". Your tries: $guesses"

······else

········echo "Nope. That's not the unscrambled word. Try again."

········guesses=$(($guesses + 1))

······fi

····done

··done

··echo "Done. You correctly figured out $correct out of $total scrambled words."

··exit 0

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

Для выбора случайной строки из файла используется randomquote (сценарий № 68 из главы 8) картинка 481, несмотря на то что первоначально этот сценарий был написан для работы с веб-страницами (многие хорошие утилиты Unix оказываются полезными в контекстах, отличных от тех, для которых они создавались).

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

Интервал:

Закладка:

Сделать

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

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


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

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

x