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

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

Интервал:

Закладка:

Сделать

Запуск сценария

Сценарию можно передать как угодно много имен файлов. Ему нельзя передать исходные данные через конвейер, хотя этот недостаток легко исправляется вызовом команды cat в отсутствие входных аргументов.

Результаты

В листинге 4.2 показано, как выглядит вывод файла с нумерацией строк, полученный с помощью сценария numberlines.

Листинг 4.2.Тестирование сценария numberlines на выдержке из сказки «Alice in Wonderland» (Алиса в Стране Чудес).

$ numberlines alice.txt

1: Alice was beginning to get very tired of sitting by her sister on the

2: bank, and of having nothing to do: once or twice she had peeped into the

3: book her sister was reading, but it had no pictures or conversations in

4: it, 'and what is the use of a book,' thought Alice 'without pictures or

5: conversations?'

6:

7: So she was considering in her own mind (as well as she could, for the

8: hot day made her feel very sleepy and stupid), whether the pleasure

9: of making a daisy-chain would be worth the trouble of getting up and

10: picking the daisies, when suddenly a White Rabbit with pink eyes ran

11: close by her.

Усовершенствование сценария

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

cat −n filename | sort −rn | cut −c8-

Такая команда будет работать в системах, где команда cat поддерживает флаг −n. Для чего это может пригодиться? Например, для вывода содержимого файла журнала в обратном порядке следования записей — от новых к старым.

№ 28. Перенос длинных строк

Одно из ограничений команды fmt и эквивалентного ей сценария № 14 из главы 2 состоит в том, что они переносят и оформляют отступы во всех строках, которые встретятся им на пути, даже если в этом нет никакого смысла. В результате текст электронного письма может превратиться в абракадабру (например, перенос слова. signature — не самое лучшее решение), как и содержимое любого другого файла, где переносы строк играют важную роль.

А что, если вам потребуется реализовать перенос только очень длинных строк в документе, оставив все остальное нетронутым? С набором команд, доступным пользователю Unix по умолчанию, остается только одно: вручную просмотреть все строки в редакторе, по отдельности передавая длинные команде fmt. (В редакторе vi для этого достаточно установить курсор на требуемую строку и выполнить команду!$fmt.)

Сценарий в листинге 4.3 автоматизирует задачу, используя конструкцию ${# varname }, которая возвращает длину строки, хранящейся в переменной varname .

Код

Листинг 4.3.Сценарий toolong

··#!/bin/bash

··# toolong — передает команде fmt только строки из потока ввода,

··#·· которые длиннее указанного предела

··width=72

··if [! -r "$1"]; then

····echo "Cannot read file $1" >&2

····echo "Usage: $0 filename" >&2

····exit 1

··fi

картинка 218while read input

··do

····if [${#input} −gt $width]; then

······echo "$input" | fmt

····else

······echo "$input"

····fi

картинка 219done < $1

··exit 0

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

Обратите внимание, что простая конструкция < $1 в конце цикла while картинка 220подает на его вход указанный файл. Каждая строка из этого файла читается командой read input картинка 221и сохраняется в переменной input для дальнейшего анализа.

Если ваша командная оболочка не поддерживает конструкцию ${# var }, ее поведение можно сымитировать очень удобной командой «word count» (счетчик слов) wc:

varlength="$(echo "$var" | wc −c)"

Однако wc имеет один неприятный недостаток: она добавляет ведущие пробелы в свой вывод для выравнивания значений в выходном листинге. Избавиться от этой досадной проблемы можно, внеся небольшие изменения в команду, чтобы оставить в выводе только цифры, как показано ниже:

varlength="$(echo "$var" | wc −c | sed 's/[^[: digit: ]]//g')"

Запуск сценария

Этот сценарий принимает единственное имя файла, как показано в листинге 4.4.

Результаты

Листинг 4.4.Тестирование сценария toolong

$ toolong ragged.txt

So she sat on, with closed eyes, and half believed herself in

Wonderland, though she knew she had but to open them again, and

all would change to dull reality-the grass would be only rustling

in the wind, and the pool rippling to the waving of the reeds-the

rattling teacups would change to tinkling sheep-bells, and the

Queen's shrill cries to the voice of the shepherd boy-and the

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

Интервал:

Закладка:

Сделать

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

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


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

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

x