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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

lsof 379 root 0u CHR 136,1 3 /dev/pts/1

lsof 379 root 1w FIFO 0,0 7118 pipe

lsof 379 root 2u CHR 136,1 3 /dev/pts/1

bash$ echo "$(bash -c 'lsof -a -p $$ -d0,1,2' 2>&1)"

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

lsof 426 root 0u CHR 136,1 3 /dev/pts/1

lsof 426 root 1w FIFO 0,0 7520 pipe

lsof 426 root 2w FIFO 0,0 7520 pipe

Упражнение:Проанализируйте следующий сценарий.

#! /usr/bin/env bash

mkfifo /tmp/fifo1 /tmp/fifo2

while read a; do echo "FIFO1: $a"; done < /tmp/fifo1 &

exec 7> /tmp/fifo1

exec 8> >(while read a; do echo "FD8: $a, to fd7"; done >&7)

exec 3>&1

(

(

(

while read a; do echo "FIFO2: $a"; done < /tmp/fifo2 | tee /dev/stderr | tee /dev/fd/4 | tee /dev/fd/5 | tee /dev/fd/6 >&7 &

exec 3> /tmp/fifo2

echo 1st, to stdout

sleep 1

echo 2nd, to stderr >&2

sleep 1

echo 3rd, to fd 3 >&3

sleep 1

echo 4th, to fd 4 >&4

sleep 1

echo 5th, to fd 5 >&5

sleep 1

echo 6th, through a pipe | sed 's/.*/PIPE: &, to fd 5/' >&5

sleep 1

echo 7th, to fd 6 >&6

sleep 1

echo 8th, to fd 7 >&7

sleep 1

echo 9th, to fd 8 >&8

) 4>&1 >&3 3>&- | while read a; do echo "FD4: $a"; done 1>&3 5>&- 6>&-

) 5>&1 >&3 | while read a; do echo "FD5: $a"; done 1>&3 6>&-

) 6>&1 >&3 | while read a; do echo "FD6: $a"; done 3>&-

rm -f /tmp/fifo1 /tmp/fifo2

# Выясните, куда переназначены файловые дескрипторы каждой команды и подоболочки.

exit 0

Приложение E. Локализация

Возможность локализации сценариев Bash нигде в документации не описана.

Локализованные сценарии выводят текст на том языке, который используется системой, в соответствии с настройками. Пользователь Linux, живущий в Берлине (Германия), будет видеть сообщения на немецком языке, в то время как другой пользователь, проживающий в Берлине штата Мэриленд (США) -- на английском.

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

#!/bin/bash

# localized.sh

E_CDERROR=65

error()

{

printf "$@" >&2

exit $E_CDERROR

}

cd $var || error $"Can't cd to %s." "$var"

read -p $"Enter the value: " var

# ...

bash$ bash -D localized.sh

"Can't cd to %s."

"Enter the value: "

Это список всех текстовых сообщений, которые подлежат локализации. (Ключ -D выводит список строк в двойных кавычках, которым предшествует символ $, без запуска сценария на исполнение.)

bash$ bash --dump-po-strings localized.sh

#: a:6

msgid "Can't cd to %s."

msgstr ""

#: a:7

msgid "Enter the value: "

msgstr ""

Ключ --dump-po-strings в Bash напоминает ключ -D, но выводит строки в формате "po", с помощью утилиты gettext.

Теперь построим файл language.po, для каждого языка, на которые предполагается перевести сообщения сценария. Например:

Файл ru.po сделан переводчиком, в оригинальном документе локализация выполнена на примере французского языка

ru.po:

#: a:6

msgid "Can't cd to %s."

msgstr "Невозможно перейти в каталог %s."

#: a:7

msgid "Enter the value: "

msgstr "Введите число: "

Затем запустите msgfmt.

msgfmt -o localized.sh.mo ru.po

Перепишите получившийся файл localized.sh.mo в каталог /usr/share/locale/ru/LC_MESSAGES и добавьте в начало сценария строки:

TEXTDOMAINDIR=/usr/share/locale

TEXTDOMAIN=localized.sh

Если система корректно настроена на русскую локаль, то пользователь, запустивший сценарий, будет видеть сообщения на русском языке.

В старых версиях Bash или в других командных оболочках, потребуется воспользоваться услугами утилиты gettext, с ключом -s. В этом случае наш сценарий будет выглядеть так:

#!/bin/bash

# localized.sh

E_CDERROR=65

error() {

local format=$1

shift

printf "$(gettext -s "$format")" "$@" >&2

exit $E_CDERROR

}

cd $var || error "Can't cd to %s." "$var"

read -p "$(gettext -s "Enter the value: ")" var

# ...

А переменные TEXTDOMAIN и TEXTDOMAINDIR, необходимо будет экспортировать в окружение.

---

Автор этого приложения: Stephane Chazelas.

Приложение F. История команд

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

История команд Bash:

1. history

2. fc

bash$ history

1 mount /mnt/cdrom

2 cd /mnt/cdrom

3 ls

...

Внутренние переменные Bash, связанные с историей команд:

1. $HISTCMD

2. $HISTCONTROL

3. $HISTIGNORE

4. $HISTFILE

5. $HISTFILESIZE

6. $HISTSIZE

7. !!

8. !$

9. !#

10. !N

11. !-N

12. !STRING

13. !?STRING?

14. ^STRING^string^

К сожалению, инструменты истории команд, в Bash, совершенно бесполезны в сценариях.

#!/bin/bash

# history.sh

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

history

# На экран ничего не выводится.

# История команд не работает в сценариях.

bash$ ./history.sh

(ничего не выводится)

Приложение G. Пример файла .bashrc

Файл ~/.bashrc определяет поведение командной оболочки. Внимательное изучение этого примера поможет вам значительно продвинуться в понимании Bash.

Emmanuel Rouat представил следующий, очень сложный, файл .bashrc, написанный для операционной системы Linux. Предложения и замечания приветствуются.

Внимательно изучите этот файл. Отдельные участки этого файла вы свободно можете использовать в своем собственном .bashrc или, даже в своих сценариях!

Пример G-1. Пример файла .bashrc

#===============================================================

#

# ЛИЧНЫЙ ФАЙЛ $HOME/.bashrc для bash-2.05a (или выше)

#

# Время последней модификации: Втр Апр 15 20:32:34 CEST 2003

#

# Этот файл содержит настройки интерактивной командной оболочки.

# Здесь размещены определения псевдонимов, функций

# и других элементов Bash, таких как prompt (приглашение к вводу).

#

# Изначально, этот файл был создан в операционной системе Solaris,

# но позднее был переделан под Redhat

# --> Модифицирован под Linux.

# Большая часть кода, который находится здесь, была взята из

# Usenet (или Интернет).

# Этот файл содержит слишком много определений -- помните, это всего лишь пример.

#

#

#===============================================================

# --> Комментарии, добавленные автором HOWTO.

# --> И дополнены автором сценария Emmanuel Rouat :-)

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

# Глобальные определения

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

if [ -f /etc/bashrc ]; then

. /etc/bashrc # --> Прочитать настройки из /etc/bashrc, если таковой имеется.

fi

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

# Настройка переменной $DISPLAY (если еще не установлена)

# Это срабатывает под linux - в вашем случае все может быть по другому....

# Проблема в том, что различные типы терминалов

# дают разные ответы на запрос 'who am i'......

# я не нашел 'универсального' метода

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

function get_xserver ()

{

case $TERM in

xterm )

XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )

XSERVER=${XSERVER%%:*}

;;

aterm | rxvt)

# добавьте здесь свой код.....

;;

esac

}

if [ -z ${DISPLAY:=""} ]; then

get_xserver

if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == "unix" ]]; then

DISPLAY=":0.0" # для локального хоста

else

DISPLAY=${XSERVER}:0.0 # для удаленного хоста

fi

fi

export DISPLAY

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

# Некоторые настройки

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

ulimit -S -c 0 # Запрет на создание файлов coredump

set -o notify

set -o noclobber

set -o ignoreeof

set -o nounset

#set -o xtrace # полезно для отладки

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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