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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 38

Автор Π’ΠΈΠΊΡ‚ΠΎΡ€ ΠšΠΎΡΡ‚Ρ€ΠΎΠΌΠΈΠ½

function name () {list}

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ слово function Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, name опрСдСляСт имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ, Π° Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ состоит ΠΈΠ· списка ΠΊΠΎΠΌΠ°Π½Π΄ list, находящСгося ΠΌΠ΅ΠΆΠ΄Ρƒ {ΠΈ}. Π­Ρ‚ΠΎΡ‚ список ΠΊΠΎΠΌΠ°Π½Π΄ выполняСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° имя name Π·Π°Π΄Π°Π½ΠΎ ΠΊΠ°ΠΊ имя Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ рСкурсивно, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ самой.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² контСкстС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ: для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹ΠΉ процСсс Π½Π΅ запускаСтся (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ выполнСния скриптов ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ).

АргумСнты

Когда функция вызываСтся Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ становятся ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (positional parameters) Π½Π° врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Они ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ $n, Π³Π΄Π΅ n - Π½ΠΎΠΌΠ΅Ρ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ. НумСрация Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² начинаСтся с 1, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ $1 - это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сразу с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $*, ΠΈ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $#. ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 0 Π½Π΅ измСняСтся.

Если Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ встрСчаСтся встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° return, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСрываСтся ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π΅, стоящСй послС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Когда Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ # Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (local)

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово local. Бинтаксис Π΅Π΅ задания Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово local: local name=value.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ задания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΡƒΡŽΡΡ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ seq:

seq()

{

local I=$1;

while [$2!= $I]; do

{

echo -n "$I ";

I=$(($I + 1))

};

done;

echo $2

}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΡŽ -n ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° echo, ΠΎΠ½Π° отмСняСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку. Π₯отя это ΠΈ нСсущСствСнно для Ρ‚Π΅Ρ… Ρ†Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ здСсь ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρƒ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… цСлях.

Ѐункция вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° fact

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

fact()

{

if [$1 = 0]; then

echo 1;

else

{

echo $(($1* $(fact $(($1 - 1)))))

};

fi

}

Π­Ρ‚ΠΎ функция Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° арифмСтичСскоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ подстановку ΠΊΠΎΠΌΠ°Π½Π΄.

5.9. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° source

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ - это просто Ρ„Π°ΠΉΠ», содСрТащий ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Подобно функциям, скрипты ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Бинтаксис доступа ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΏΡ€ΠΈ запускС скрипта запускаСтся Π½ΠΎΠ²Ρ‹ΠΉ процСсс. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ скрипт Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии bash, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ source, синонимом ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся просто Ρ‚ΠΎΡ‡ΠΊΠ° ".". Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ слуТит просто Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π•Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

source filename [arguments]

ΠΈΠ»ΠΈ

. filename [arguments]

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ filename Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ статус, опрСдСляСмый послСднСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° filename. Если filename Π½Π΅ содСрТит слэша, Ρ‚ΠΎ ΠΏΡƒΡ‚ΠΈ, пСрСчислСнныС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для поиска Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ filename. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π½Π΅ обязан Π±Ρ‹Ρ‚ΡŒ исполняСмым. Если Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, пСрСчислСнных Π² PATH, Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Π΅Π³ΠΎ поиск производится Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Если Π·Π°Π΄Π°Π½Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π° врСмя выполнСния скрипта ΠΎΠ½ΠΈ становятся ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅Ρ‚, ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (статус), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ source, совпадаСт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ послСднСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² скриптС. Если Π½ΠΈ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ, ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» filename Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ статус Π²Ρ‹Ρ…ΠΎΠ΄Π° Ρ€Π°Π²Π΅Π½ 0.

5.10. Команда sh

Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash, Π΄Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ bash ΠΈΠ»ΠΈ sh. ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ скрипт, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ имя скрипта Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ bash. Π’Π°ΠΊ, для выполнСния скрипта myscript Π½Π°Π΄ΠΎ Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "sh myscript".

Если Π²Ρ‹ заглянСтС Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„Π°ΠΉΠ», Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ скрипт (Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² систСмС ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ), Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ пСрвая строка Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄: #!/bin/sh. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ запускаСм скрипт Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, /bin/sh Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π΅ для нас. МоТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту строку ссылкой Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, скрипты Π½Π° языкС Perl Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со строки Π²ΠΈΠ΄Π° #!/bin/perl.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ символ # слуТит для выдСлСния Π² скриптах ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ВсС, Ρ‡Ρ‚ΠΎ стоит Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строкС послС этого символа ΠΈ Π΄ΠΎ символа ΠΊΠΎΠ½Ρ†Π° строки, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ коммСнтариями ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Ρ‚. Π΅. ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π΅ рассматриваСт этот тСкст ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹). Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² дСйствии этого символа, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π»ΡŽΠ±ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, поставив ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ символ #, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "# ls", ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° игнорируСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ.

На этом ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ сокращСнноС описаниС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π·Π° Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ этого описания ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ вопросы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами, описания встроСнных ΠΊΠΎΠΌΠ°Π½Π΄, история ΠΊΠΎΠΌΠ°Π½Π΄, описаниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ readline, сигналы ΠΈ Ρ‚. Π΄. Π§Π°ΡΡ‚ΡŒ этих вопросов Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… руководствах ΠΈΠ»ΠΈ Π½Π° страницС man bash.[15]

Π“Π»Π°Π²Π° 6. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Midnight Commander

6.1. Установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Midnight Commander

Π₯отя для управлСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΊΠ°ΠΊ pwd, ls, cd, mv, mkdir, rmdir, cp, rm, cat, more ΠΈ Ρ‚. Π΄., Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Midnight Commander, которая наглядно прСдставляСт всС выполняСмыС дСйствия, облСгчая Ρ‚Π΅ΠΌ самым Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Midnight Commander (ΠΈΠ»ΠΈ просто mc) - это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая позволяСт ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, это Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€. Если Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Norton Commander (nc) Π² MS-DOS ΠΈΠ»ΠΈ с FAR Π² Windows, Ρ‚ΠΎ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с mc, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°ΠΆΠ΅ основныС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ "горячих клавиш" Ρƒ Π½ΠΈΡ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Π’ этом случаС для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Midnight Commander, Π²Π°ΠΌ достаточно Π±Π΅Π³Π»ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». Для Ρ‚Π΅Ρ… ΠΆΠ΅, ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с nc ΠΈΠ»ΠΈ FAR (Π΄Π° Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅?), Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Midnight Commander сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ описаниС составлСно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ вСрсии 4.5.30 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, хотя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π”Π°Π½Π½ΠΎΠ΅ описаниС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Когда Ρ€Π°Π±ΠΎΡ‚Π° производится Ρ‡Π΅Ρ€Π΅Π· эмулятор Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ полоТСния описания ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ наТатия Π½Π° клавиши Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ. НаиболСС часто Ρ‚Π°ΠΊΠΎΠ΅ нСсоотвСтствиС Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ "горячих" ΠΊΠ»Π°Π²ΠΈΡˆΠ°Ρ….

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ дистрибутивов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Midnight Commander Π½Π΅ устанавливаСтся автоматичСски ΠΏΡ€ΠΈ инсталляции систСмы. Но ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ rpm-ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, имССтся Π½Π° дистрибутивном дискС, ΠΈ установка Midnight Commander ΠΈΠ· rpm-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ слоТностСй (ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ произвСсти установку ПО ΠΈΠ· rpm-ΠΏΠ°ΠΊΠ΅Ρ‚Π°, см. Π² Ρ€Π°Π·Π΄. 10.2). А, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ Π’Π°ΡˆΡƒ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Тизнь, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ сразу ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΈ установку ОБ.

6.2. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ экрана Midnight Commander

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Midnight Commander, Π½Π°Π΄ΠΎ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ mc ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ β€ΉEnterβ€Ί. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ, Π½Π°Π΄ΠΎ Π½Π°ΠΉΡ‚ΠΈ, Π³Π΄Π΅ располоТСн исполняСмый Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ mc, воспользовавшись ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find / name mc, послС Ρ‡Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ мСня это /usr/bin/mc. ПослС запуска Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ экран, ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ экран ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Norton Commander для MS-DOS ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ FAR Π•. Рошаля, которая ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² DOS-ΠΎΠΊΠ½Π΅ ΠΏΠΎΠ΄ Windows.

Рис. 6.1. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ экрана ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Midnight Commander

ΠŸΠΎΡ‡Ρ‚ΠΈ всС пространство экрана ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Midnight Commander занято двумя "панСлями", ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ списки Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π²ΡƒΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Над панСлями располоТСна строка мСню, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ Π² этом мСню ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ клавишС β€ΉF9β€Ί ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ (Ссли сразу послС запуска mc Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ строки мСню, Π½Π΅ ΠΎΠ³ΠΎΡ€Ρ‡Π°ΠΉΡ‚Π΅ΡΡŒ - Π²ΠΈΠ΄Π½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚ строка мСню, опрСдСляСтся настройками ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹).