Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 79

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

UPPER_LIMIT=51

CARDS_IN_SUIT=13

CARDS=52


declare -a Deck

declare -a Suits

declare -a Cards

# ΠŸΡ€ΠΎΡ‰Π΅ ΠΈ понятнСС Π±Ρ‹Π»ΠΎ Π±Ρ‹, ΠΈΠΌΠ΅ΠΉ ΠΌΡ‹ Π΄Π΅Π»ΠΎ

# с ΠΎΠ΄Π½ΠΈΠΌ 3-ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.

# Π‘ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π° Π² Bash.


initialize_Deck ()

{

i=$LOWER_LIMIT

until [ "$i" -gt $UPPER_LIMIT ]

do

Deck[i]=$UNPICKED # ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ всС ΠΊΠ°Ρ€Ρ‚Ρ‹ Π² ΠΊΠΎΠ»ΠΎΠ΄Π΅ "Deck", ΠΊΠ°ΠΊ "нСвыданная".

let "i += 1"

done

echo

}


initialize_Suits ()

{

Suits[0]=Π’ # Π’Ρ€Π΅Ρ„Ρ‹

Suits[1]=Π‘ # Π‘ΡƒΠ±Π½Ρ‹

Suits[2]=Π§ # Π§Π΅Ρ€Π²Ρ‹

Suits[3]=П # Пики

}


initialize_Cards ()

{

Cards=(2 3 4 5 6 7 8 9 10 Π’ Π” K Π’)

# ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива.

}


pick_a_card ()

{

card_number=$RANDOM

let "card_number %= $CARDS"

if [ "${Deck[card_number]}" -eq $UNPICKED ]

then

Deck[card_number]=$PICKED

return $card_number

else

return $DUPE_CARD

fi

}


parse_card ()

{

number=$1

let "suit_number = number / CARDS_IN_SUIT"

suit=${Suits[suit_number]}

echo -n "$suit-"

let "card_no = number % CARDS_IN_SUIT"

Card=${Cards[card_no]}

printf %-4s $Card

# Π’Ρ‹Π²ΠΎΠ΄ ΠΏΠΎ столбцам.

}


seed_random () # ΠŸΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл.

{

seed=`eval date +%s`

let "seed %= 32766"

RANDOM=$seed

}


deal_cards ()

{

echo


cards_picked=0

while [ "$cards_picked" -le $UPPER_LIMIT ]

do

pick_a_card

t=$?


if [ "$t" -ne $DUPE_CARD ]

then

parse_card $t


u=$cards_picked+1

# Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ индСксации с 1 (Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ).

let "u %= $CARDS_IN_SUIT"

if [ "$u" -eq 0 ] # Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ if/then.

then

echo

echo

fi

# Π‘ΠΌΠ΅Π½Π° Ρ€ΡƒΠΊΠΈ.


let "cards_picked += 1"

fi

done


echo


return 0

}


# Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

# вся Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния построСна Π½Π° Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.


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

seed_random

initialize_Deck

initialize_Suits

initialize_Cards

deal_cards


exit 0

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


# Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1:

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сцСнарий.


# Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2:

# Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ сцСнарий Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€ΡƒΠΊΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ отсортированными ΠΏΠΎ масти.

# Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ.


# Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3:

# УпроститС Π»ΠΎΠ³ΠΈΠΊΡƒ сцСнария.


Π“Π»Π°Π²Π° 35. ЗамСчания ΠΈ дополнСния

35.1. ΠžΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°

Как я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ мысли ΠΎ написании этой ΠΊΠ½ΠΈΠ³ΠΈ? Π­Ρ‚ΠΎ нСобычная история. Π‘Π»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ это Π»Π΅Ρ‚ нСсколько Ρ‚ΠΎΠΌΡƒ Π½Π°Π·Π°Π΄. МнС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ язык ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ -- Π° Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, ΠΊΠ°ΠΊ Π½Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ!? Π― надСялся ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΈ справочник, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ Π±Ρ‹ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ. Π― искал ΠΊΠ½ΠΈΠ³Ρƒ, которая Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹Π΅ понятия, Π²Ρ‹Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΈΡ… Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΆΡƒΠ΅Ρ‚ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, я искал ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ. К соТалСнию, Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π½Π΅ сущСствовало, поэтому я счСл Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π΅.

Π­Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΌΠ½Π΅ сказку ΠΎ ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠ΅ΠΌ профСссорС. ΠŸΠΎΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ, Π΄ΠΎ бСзумия, ΠΏΡ€ΠΈ Π²ΠΈΠ΄Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, любой ΠΊΠ½ΠΈΠ³ΠΈ -- Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π² ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ -- Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Π³Π΄Π΅, ΠΈΠΌ ΠΎΠ²Π»Π°Π΄Π΅Π²Π°Π»Π° ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ½ ΠΌΠΎΠ³ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅. Он ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мчался Π΄ΠΎΠΌΠΎΠΉ ΠΈ садился Π·Π° созданиС своСй собствСнной ΠΊΠ½ΠΈΠ³ΠΈ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ. Когда ΠΎΠ½ ΡƒΠΌΠ΅Ρ€, Π² Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅ нашли нСсколько тысяч, написанных ΠΈΠΌ ΠΊΠ½ΠΈΠ³, этого количСства Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ€Π°ΠΌΠΈΡ‚ΡŒ самого АйзСка Азимова. Книги, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈ -- ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Π½ΠΎ Ρ€Π°Π·Π²Π΅ это ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅? Π’ΠΎΡ‚ -- Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΆΠΈΠ» своими Π³Ρ€Π΅Π·Π°ΠΌΠΈ, ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΡ‹ΠΉ ΠΈ Π΄Π²ΠΈΠΆΠΈΠΌΡ‹ΠΉ ΠΈΠΌΠΈ, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ восхищСния старым Ρ‡ΡƒΠ΄Π°ΠΊΠΎΠΌ...


35.2. Об Π°Π²Ρ‚ΠΎΡ€Π΅

Автор Π½Π΅ стрСмится Π½ΠΈ ΠΊ званиям, Π½ΠΈ ΠΊ Π½Π°Π³Ρ€Π°Π΄Π°ΠΌ, ΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Ρ‚ Π½Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ[ 65 ]. Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° -- своСго Ρ€ΠΎΠ΄Π° ΠΎΡ‚Π΄Ρ‹Ρ… ΠΎΡ‚ основной Ρ€Π°Π±ΠΎΡ‚Ρ‹, HOW-2 Meet Women: The Shy Man's Guide to Relationships (Руководство ЗастСнчивого ΠœΡƒΠΆΡ‡ΠΈΠ½Ρ‹ ΠΎ Ρ‚ΠΎΠΌ Как ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π‘ Π–Π΅Π½Ρ‰ΠΈΠ½ΠΎΠΉ) . Он Ρ‚Π°ΠΊΠΆΠ΅ написал Software-Building HOWTO.

ΠŸΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Linux с 1995 Π³ΠΎΠ΄Π° (Slackware 2.2, kernel 1.2.1). Выпустил нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… cruft -- ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, замСнявшая ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ UNIX-ΠΎΠ²ΡƒΡŽ crypt, mcalc -- финансовый ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, для выполнСния расчСтов ΠΏΠΎ Π·Π°ΠΉΠΌΠ°ΠΌ, judge ΠΈ yawl -- ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ³Ρ€ со словами. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π» с языка FORTRAN IV Π½Π° CDC 3800, Π½ΠΎ Π½Π΅ испытываСт Π½ΠΎΡΡ‚Π°Π»ΡŒΠ³ΠΈΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌ дням.

Π–ΠΈΠ²Π΅Ρ‚ Π² Π³Π»ΡƒΡ…ΠΎΠΉ, Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΉ Π΄Π΅Ρ€Π΅Π²ΡƒΡˆΠΊΠ΅ со своСй ΠΆΠ΅Π½ΠΎΠΉ ΠΈ собакой.


35.3. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, использовавшиСся ΠΏΡ€ΠΈ создании ΠΊΠ½ΠΈΠ³ΠΈ

35.3.1. Аппаратура

IBM Thinkpad, model 760XL laptop (P166, 104 Mb RAM) ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Red Hat 7.1/7.3. НСсомнСнно, это довольно ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ‚, Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, ΠΈ это ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π° ΠΊΠ°Ρ€Π°Π½Π΄Π°ΡˆΠ΅ΠΉ ΠΈ ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½Ρ‹ΠΉ стол.


35.3.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС

ΠœΠΎΡ‰Π½Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ vim (Π°Π²Ρ‚ΠΎΡ€: Bram Moolenaar) .

OpenJade -- инструмСнт, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ, Π½Π° основС DSSSL, Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ SGML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ стилСй DSSSL ΠΎΡ‚ Norman Walsh.

DocBook, The Definitive Guide (Norman Walsh, Leonard Muellner O'Reilly, ISBN 1-56592-580-7). ПолноС руководство ΠΏΠΎ созданию Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Docbook SGML.

35.4. Благодарности

Π‘Π΅Π· участия сообщСства этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. Автор ΠΏΡ€ΠΈΠ·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Π΅Π· постороннСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ, написаниС этой ΠΊΠ½ΠΈΠ³ΠΈ стало Π±Ρ‹ Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ всСх, ΠΊΡ‚ΠΎ ΠΎΠΊΠ°Π·Π°Π» ΠΏΠΎΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ.

Philippe Martin -- ΠΏΠ΅Ρ€Π΅Π²Π΅Π» этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ DocBook/SGML. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² малСнькой французской ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² качСствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π’ свободноС ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ врСмя -- Π»ΡŽΠ±ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм для GNU/Linux, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ, ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ ΠΈ Π²Π΅ΡΠ΅Π»ΠΈΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Π½ΠΈΠΌ, Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²ΠΎ Π€Ρ€Π°Π½Ρ†ΠΈΠΈ, Π² ΠΏΡ€ΠΎΠ²ΠΈΠ½Ρ†ΠΈΠΈ Басков, ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅ΠΌΡƒ письмо Π½Π° [email protected]

Philippe Martin Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π·Π° $9, ΠΏΡ€ΠΈ использовании {Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок}, см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4-5.

Stephane Chazelas -- Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Ρ‚ΠΈΡ‚Π°Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅, дополнСнию ΠΈ написанию ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² сцСнариСв. ЀактичСски, ΠΎΠ½ Π²Π·Π²Π°Π»ΠΈΠ» Π½Π° свои ΠΏΠ»Π΅Ρ‡ΠΈ обязанности Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо!

ОсобСнно я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Patrick Callahan, Mike Novak ΠΈ Pal Domokos Π·Π° исправлСниС ошибок ΠΈ нСточностСй, Π·Π° Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΈ дополнСния. Π˜Ρ… ΠΆΠΈΠ²ΠΎΠ΅ обсуТдСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с созданиСм сцСнариСв Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΎ мСня Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ.

Π― Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ Jim Van Zandt Π·Π° выявлСнныС ΠΈΠΌ ошибки ΠΈ упущСния, Π² вСрсии 0.2 этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ Π·Π° ΠΏΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сцСнария.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Jordi Sanfeliu Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ прСкрасный сцСнарий Π² этой ΠΊΠ½ΠΈΠ³Π΅ (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-19).

Π’Ρ‹Ρ€Π°ΠΆΠ°ΡŽ свою Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Michel Charpentier Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ dc сцСнарий разлоТСния Π½Π° простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-37).

Бпасибо Noah Friedman, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΠ²ΡˆΠ΅ΠΌΡƒ ΠΏΡ€Π°Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сцСнарий (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-20).

Emmanuel Rouat ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…, посвящСнных подстановкС ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ псСвдонимам. Он Ρ‚Π°ΠΊ ΠΆΠ΅ прСдоставил Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° .bashrc (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ G).

Heiner Steven любСзно Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сцСнарий ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-33. Он сдСлал мноТСство исправлСний ΠΈ внСс большоС количСство ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ОсобоС спасибо!

Rick Boivie прСдоставил ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ, pb.sh (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 33-7) ΠΈ внСс прСдлоТСния ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сцСнария monthlypmt.sh (ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-32).

Florian Wisser ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» содСйствиС ΠΏΡ€ΠΈ написании Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², посвящСнных строкам (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7-6).

Oleg Philon ΠΏΠ΅Ρ€Π΅Π΄Π°Π» свои прСдлоТСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ cut ΠΈ pidof.

Michael Zick Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с пустыми массивами, ввСдя Ρ‚ΡƒΠ΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… свойств массивов. Он Ρ‚Π°ΠΊΠΆΠ΅ прСдоставил ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Marc-Jano Knopp Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» исправлСния Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ DOS.

Hyun Jin Cha, Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ корСйским ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» нСсколько ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Бпасибо Π΅ΠΌΡƒ Π·Π° это!

Andreas Abraham ΠΏΠ΅Ρ€Π΅Π΄Π°Π» большоС число типографских ошибок ΠΈ внСс ряд исправлСний. ОсобоС спасибо!

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Gabor Kiss, Leopold Toetsch, Peter Tillier, Marcus Berglof, Tony Richardson, Nick Drage, Rich Bartell, Jess Thrysoee, Adam Lazur, Bram Moolenaar, Baris Cicek, Greg Keraunen, Keith Matthews, Sandro Magi, Albert Reiner, Dim Segebart, Rory Winston, Lee Bigelow, Wayne Pollock, "jipe", Emilio Conti, Dennis Leeuw, Dan Jacobson ΠΈ David Lawyer (Π°Π²Ρ‚ΠΎΡ€ 4-Ρ… HOWTO).

Мои благодарности Chet Ramey ΠΈ Brian Fox Π·Π° созданиС Bash -- этого элСгантного ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ инструмСнта!

ОсобоС спасибо Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΡ†Π°ΠΌ ΠΈΠ· Linux Documentation Project. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ LDP сдСлал Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ этой ΠΊΠ½ΠΈΠ³ΠΈ Π² своСм Π°Ρ€Ρ…ΠΈΠ²Π΅.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ свою Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΅ΠΉ супругС, Anita, Π·Π° Π΅Π΅ ΡΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.


Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Edited by Peter Denning, Computers Under Attack: Intruders, Worms, and Viruses, ACM Press, 1990, 0-201-53067-8.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ нСсколько статСй ΠΎ вирусах, написаных Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

*

Dale Dougherty and Arnold Robbins, Sed and Awk, 2nd edition, O'Reilly and Associates, 1997, 1-156592-225-5.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ всю ΠΌΠΎΡ‰ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π²Π°ΠΌ навСрняка потрСбуСтся знакомство с sed ΠΈ awk. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ прСвосходноС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² "рСгулярныС выраТСния". ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ эту ΠΊΠ½ΠΈΠ³Ρƒ.