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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

*/

+

Antek Sawicki предоставил следующий сценарий, который демонстрирует операцию подстановки параметров, обсуждавшуюся в Section 9.3.

Пример A-16. password: Генератор случайного 8-ми символьного пароля

#!/bin/bash

# Для старых систем может потребоваться указать #!/bin/bash2.

#

# Генератор случайных паролей для bash 2.x

# Автор: Antek Sawicki ,

# который великодушно позволил использовать его в данном документе.

#

# ==> Комментарии, добавленные автором документа ==>

MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

LENGTH="8"

# ==> 'LENGTH' можно увеличить, для генерации более длинных паролей.

while [ "${n:=1}" -le "$LENGTH" ]

# ==> Напоминаю, что ":=" -- это оператор "подстановки значения по-умолчанию".

# ==> Таким образом, если 'n' не инициализирована, то в нее заносится 1.

do

PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"

# ==> Хитро, хитро....

# ==> Начнем с самых внутренних скобок...

# ==> ${#MATRIX} -- возвращает длину массива MATRIX.

# ==> $RANDOM%${#MATRIX} -- возвращает случайное число

# ==> в диапазоне 1 .. ДЛИНА_МАССИВА(MATRIX) - 1.

# ==> ${MATRIX:$(($RANDOM%${#MATRIX})):1}

# ==> возвращает символ из MATRIX, из случайной позиции (найденной выше).

# ==> См. подстановку параметров {var:pos:len} в Разделе 3.3.1

# ==> и примеры в этом разделе.

# ==> PASS=... -- добавление символа к строке PASS, полученной на предыдущих итерациях.

# ==> Чтобы детальнее проследить ход работы цикла, раскомментируйте следующую строку

# ==> echo "$PASS"

# ==> Вы увидите, как на каждом проходе цикла,

# ==> к строке PASS добавляется по одному символу.

let n+=1

# ==> Увеличить 'n' перед началом следующей итерации.

done

echo "$PASS" # ==> Или перенаправьте в файл, если пожелаете.

exit 0

+

James R. Van Zandt предоставил следующий сценарий, который демонстрирует применение именованных каналов, по его словам, "на самом деле -- упражнение на применение кавычек и на экранирование".

Пример A-17. fifo: Создание резервных копий с помощью именованных каналов

#!/bin/bash

# ==> Автор:James R. Van Zandt

# ==> используется с его разрешения.

# ==> Комментарии, добавленные автором документа.

HERE=`uname -n` # ==> hostname

THERE=bilbo

echo "начало создания резервной копии на $THERE, за `date +%r`"

# ==> `date +%r` возвращает время в 12-ти часовом формате, т.е. "08:08:34 PM".

# убедиться в том, что /pipe -- это действительно канал, а не простой файл

rm -rf /pipe

mkfifo /pipe # ==> Создание "именованного канала", с именем "/pipe".

# ==> 'su xyz' -- запускает команду от имени порльзователя "xyz".

# ==> 'ssh' -- вызов secure shell (вход на удаленную систему).

su xyz -c "ssh $THERE \"cat >/home/xyz/backup/${HERE}-daily.tar.gz\" < /pipe"&

cd /

tar -czf - bin boot dev etc home info lib man root sbin share usr var >/pipe

# ==> Именованный канал /pipe, используется для передачи данных между процессами:

# ==> 'tar/gzip' пишет в /pipe, а 'ssh' -- читает из /pipe.

# ==> В результате будет получена резервная копия всех основных каталогов.

# ==> В чем состоит преимущество именованного канала, в данной ситуации,

# ==> перед неименованным каналом "|" ?

# ==> Будет ли работать неименованный канал в данной ситуации?

exit 0

+

Stephane Chazelas предоставил следующий сценарий, который демонстрирует возможность генерации простых чисел без использования массивов.

Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)

#!/bin/bash

# primes.sh: Генерация простых чисел, без использования массивов.

# Автор: Stephane Chazelas.

# Этот сценарий не использует класический алгоритм "Решето Эратосфена",

#+ вместо него используется более понятный метод проверки каждого кандидата в простые числа

#+ путем поиска делителей, с помощью оператора нахождения остатка от деления "%".

LIMIT=1000 # Простые от 2 до 1000

Primes()

{

(( n = $1 + 1 )) # Перейти к следующему числу.

shift # Следующий параметр в списке.

# echo "_n=$n i=$i_"

if (( n == LIMIT ))

then echo $*

return

fi

for i; do # "i" устанавливается в "@", предыдущее значение $n.

# echo "-n=$n i=$i-"

(( i * i > n )) && break # Оптимизация.

(( n % i )) && continue # Отсечь составное число с помощью оператора "%".

Primes $n $@ # Рекурсивный вызов внутри цикла.

return

done

Primes $n $@ $n # Рекурсивный вызов за пределами цикла.

# Последовательное накопление позиционных параметров.

# в "$@" накапливаются простые числа.

}

Primes 1

exit 0

# Раскомментарьте строки 16 и 24, это поможет понять суть происходящего.

# Сравните скоростные характеристики этого сценария и сценария (ex68.sh),

# реализующего алгоритм "Решето Эратосфена".

# Упражнение: Попробуйте реализовать этот сценарий без использования рекурсии.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x