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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

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

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

Интервал:

Закладка:

Сделать

#!/bin/bash

# fileinfo.sh

FILES="/usr/sbin/privatepw

/usr/sbin/pwck

/usr/sbin/go500gw

/usr/bin/fakefile

/sbin/mkreiserfs

/sbin/ypbind" # Список интересующих нас файлов.

# В список добавлен фиктивный файл /usr/bin/fakefile.

echo

for file in $FILES

do

if [ ! -e "$file" ] # Проверка наличия файла.

then

echo "Файл $file не найден."; echo

continue # Переход к следующей итерации.

fi

ls -l $file | awk '{ print $8 " размер: " $5 }' # Печать 2 полей.

whatis `basename $file` # Информация о файле.

echo

done

exit 0

В [списке]цикла forмогут быть использованы имена файлов, которые в свою очередь могут содержать символы-шаблоны.

Пример 10-4. Обработка списка файлов в цикле for

#!/bin/bash

# list-glob.sh: Создание список файлов в цикле for с использованием

# операции подстановки имен файлов ("globbing").

echo

for file in *

do

ls -l "$file" # Список всех файлов в $PWD (текущем каталоге).

# Напоминаю, что символу "*" соответствует любое имя файла,

# однако, в операциях подстановки имен файлов ("globbing"),

# имеются исключения -- имена файлов, начинающиеся с точки.

# Если в каталоге нет ни одного файла, соответствующего шаблону,

# то за имя файла принимается сам шаблон.

# Чтобы избежать этого, используйте ключ nullglob

# (shopt -s nullglob).

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

done

echo; echo

for file in [jx]*

do

rm -f $file # Удаление файлов, начинающихся с "j" или "x" в $PWD.

echo "Удален файл \"$file\"".

done

echo

exit 0

Если [список]в цикле forне задан, то в качестве оного используется переменная $@ -- список аргументов командной строки. Оень остроумно эта особенность проиллюстрирована в Пример A-18.

Пример 10-5. Цикл for без списка аргументов

#!/bin/bash

# Попробуйте вызвать этот сценарий с аргументами и без них и посмотреть на результаты.

for a

do

echo -n "$a "

done

# Список аргументов не задан, поэтому цикл работает с переменной '$@'

#+ (список аргументов командной строки, включая пробельные символы).

echo

exit 0

При создании списка аргументов, в цикле for допускается пользоваться подстановкой команд. См. Пример 12-39, Пример 10-10 и Пример 12-33.

Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

#!/bin/bash

# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.

NUMBERS="9 7 3 8 37.53"

for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53

do

echo -n "$number "

done

echo

exit 0

Более сложный пример использования подстановки команд при создании списка аргументов цикла.

Пример 10-7. grep для бинарных файлов

#!/bin/bash

# bin-grep.sh: Поиск строк в двоичных файлах.

# замена "grep" для бинарных файлов.

# Аналогично команде "grep -a"

E_BADARGS=65

E_NOFILE=66

if [ $# -ne 2 ]

then

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

exit $E_BADARGS

fi

if [ ! -f "$2" ]

then

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

exit $E_NOFILE

fi

for word in $( strings "$2" | grep "$1" )

# Инструкция "strings" возвращает список строк в двоичных файлах.

# Который затем передается по конвейеру команде "grep", для выполнения поиска.

do

echo $word

done

# Как указывает S.C., вышепрведенное объявление цикла for может быть упрощено

# strings "$2" | grep "$1" | tr -s "$IFS" '[\n*]'

# Попробуйте что нибудь подобное: "./bin-grep.sh mem /bin/ls"

exit 0

Еще один пример.

Пример 10-8. Список всех пользователей системы

#!/bin/bash

# userlist.sh

PASSWORD_FILE=/etc/passwd

n=1 # Число пользователей

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )

# Разделитель полей = : ^^^^^^

# Вывод первого поля ^^^^^^^^

# Данные берутся из файла паролей ^^^^^^^^^^^^^^^^^

do

echo "Пользователь #$n = $name"

let "n += 1"

done

# Пользователь #1 = root

# Пользователь #2 = bin

# Пользователь #3 = daemon

# ...

# Пользователь #30 = bozo

exit 0

И заключительный пример использования подстановки команд при создании [списка].

Пример 10-9. Проверка авторства всех бинарных файлов в текущем каталоге

#!/bin/bash

# findstring.sh:

# Поиск заданной строки в двоичном файле.

directory=/usr/local/bin/

fstring="Free Software Foundation" # Поиск файлов от FSF.

for file in $( find $directory -type f -name '*' | sort )

do

strings -f $file | grep "$fstring" | sed -e "s%$directory%%"

# Команде "sed" передается выражение (ключ -e),

#+ для того, чтобы изменить обычный разделитель "/" строки поиска и строки замены

#+ поскольку "/" - один из отфильтровываемых символов.

# Использование такого символа порождает сообщение об ошибке (попробуйте).

done

exit 0

# Упражнение:

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

# Измените сценарий таким образом, чтобы он брал

#+ $directory и $fstring из командной строки.

Результат работы цикла forможет передаваться другим командам по конвейеру.

Пример 10-10. Список символических ссылок в каталоге

#!/bin/bash

# symlinks.sh: Список символических ссылок в каталоге.

directory=${1-`pwd`}

# По-умолчанию в текущем каталоге,

# Блок кода, который выполняет аналогичные действия.

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

# ARGS=1 # Ожидается один аргумент командной строки.

#

# if [ $# -ne "$ARGS" ] # Если каталог поиска не задан...

# then

# directory=`pwd` # текущий каталог

# else

# directory=$1

# fi

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

echo "символические ссылки в каталоге \"$directory\""

for file in "$( find $directory -type l )" # -type l = символические ссылки

do

echo "$file"

done | sort # В противном случае получится неотсортированный список.

# Как отмечает Dominik 'Aeneas' Schnitzer,

#+ в случае отсутствия кавычек для $( find $directory -type l )

#+ сценарий "подавится" именами файлов, содержащими пробелы.

exit 0

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

Пример 10-11. Список символических ссылок в каталоге, сохраняемый в файле

#!/bin/bash

# symlinks.sh: Список символических ссылок в каталоге.

OUTFILE=symlinks.list # файл со списком

directory=${1-`pwd`}

# По-умолчанию -- текущий каталог,

echo "символические ссылки в каталоге \"$directory\"" > "$OUTFILE"

echo "---------------------------" >> "$OUTFILE"

for file in "$( find $directory -type l )" # -type l = символические ссылки

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

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

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




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


Отзывы читателей о книге Искусство программирования на языке сценариев командной оболочки, автор: Мендель Купер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x