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

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

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

Π‘ΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ†ΠΈΡ„Ρ€, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ слСдуСт символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ.

ВсС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ подстановкС Π·Π½Π°ΠΊΠ° Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹, Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, подстановкС ΠΊΠΎΠΌΠ°Π½Π΄, подстановкам арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов цитирования (см. Π½ΠΈΠΆΠ΅). Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ слов Π½Π΅ производится, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случая " [email protected]" (объяснСниС см. Π²Ρ‹ΡˆΠ΅ Π² Ρ‚Π°Π±Π». 5.3). РаскрытиС шаблонов ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π½Π΅ производится.

5.7.4 ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ являСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтов bash. Она Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π·Π°ΠΌΠ΅Π½Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ выполнСния. БущСствуСт Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ подстановки ΠΊΠΎΠΌΠ°Π½Π΄:

$(command) ΠΈ `command`

Если примСняСтся вторая ΠΈΠ· этих Ρ„ΠΎΡ€ΠΌ, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ трактуСтся ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π», ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° Π·Π° Π½ΠΈΠΌ слСдуСт $, `, ΠΈΠ»ΠΈ \. Если ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ° $(command), всС символы Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ считаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ символом.

Если подстановка производится Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… подстановки Π½Π΅ осущСствляСтся Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ слов ΠΈ раскрытиС шаблонов ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

5.7.5 АрифмСтичСcΠΊΠΈΠ΅ подстановки (Arithmetic Expansion)

АрифмСтичСскиС подстановки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ арифмСтичСского выраТСния ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ вмСсто Π½Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. БущСствуСт Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ задания арифмСтичСских подстановок:

$[expression]

$((expression)),

Π³Π΄Π΅ expression трактуСтся Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² expression Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ простой Π»ΠΈΡ‚Π΅Ρ€Π°Π». Π’Π½ΡƒΡ‚Ρ€ΠΈ expression Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄.

Бинтаксис выраТСния expression ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ синтаксису арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² языкС C, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ARITHMETIC EVALUATION man-страницы ΠΏΠΎ ΠΊΠ°ΠΌΠ°Π½Π΄Π΅ bash. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°

[user]$ echo $((2 + 3* 5))

Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π΄Π°Π΅Ρ‚ "17".

Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, bash Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС.

5.7.6 РаздСлСниС слов (word splitting)

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ подстановок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° снова Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку (Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ) ΠΈ осущСствляСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ слов (word splitting).

Π­Ρ‚Π° опСрация Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ищутся всС вхоТдСния символов-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ IFS, ΠΈ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… мСстах строки Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ IFS Ρ€Π°Π²Π½ΠΎ пустой строкС, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ слов Π½Π΅ производится.

Если Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… подстановок, Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° слова Π½Π΅ производится.

5.7.7 РаскрытиС шаблонов ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² (Pathname Expansion)

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² (Pathname expansion) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Π° ΠΈΠ»ΠΈ шаблона ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²), ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ПослС раздСлСния слов, Ссли Π½Π΅ Π±Ρ‹Π»Π° Π·Π°Π΄Π°Π½Π° опция -f, bash ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ поиск Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ словС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки символов*,?, and [. Если Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ слово с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими вхоТдСниями Ρ‚Π°ΠΊΠΈΡ… символов, Ρ‚ΠΎ это слово рассматриваСтся ΠΊΠ°ΠΊ шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½ словами ΠΈΠ· лСксикографичСски упорядочСнного списка ΠΈΠΌΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Если ΠΈΠΌΠ΅Π½, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΈ пСрСмСнная nullglob Π½Π΅ Π·Π°Π΄Π°Π½Π°, слово Π½Π΅ измСняСтся. Если эта пСрСмСнная установлСна, Π° ΠΏΡƒΡ‚Π΅ΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, слово удаляСтся ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы шаблонов ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’Π°Π±Π»ΠΈΡ†Π° 5.4. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ шаблонов

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠŸΡ€Π°Π²ΠΈΠ»Π° Π·Π°ΠΌΠ΅Π½Ρ‹ * БоотвСтствуСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ строкС символов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. НапримСр, my*.txt Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° myday.txt, myweek.txt ΠΈ mymonth.txt (Ссли Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚), Π°*.jpg соотвСтствуСт всСм Ρ„Π°ΠΉΠ»Π°ΠΌ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ jpg Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ? БоотвСтствуСт Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΌΡƒ символу. НапримСр, вмСсто шаблона file?.txt Π±ΡƒΠ΄ΡƒΡ‚ подставлСны ΠΈΠΌΠ΅Π½Π° file1.txt ΠΈ filex.txt, Π½ΠΎ Π½Π΅ file10.txt […] БоотвСтствуСт Π»ΡŽΠ±ΠΎΠΌΡƒ символу ΠΈΠ· числа символов, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² скобках. ΠŸΠ°Ρ€Ρ‹ символов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π½Π°ΠΊΠΎΠΌ минуса, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»; любой символ стоящий лСксичСски ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя символами, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ символы, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», соотвСтствуСт ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ символом Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок являСтся ! ΠΈΠ»ΠΈ ^, Ρ‚ΠΎ считаСтся, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ) ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ всС символы, Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² скобках

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… строках, содСрТащих ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ содСрТимом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π°ΠΉΠ»ΠΎΠ² с изобраТСниями Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² gif, jpeg, avi ΠΈ Ρ‚. Π΄.. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° jpeg, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

[user]$ ls*.jpg

Если Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ имССтся мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдставлСны Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π·Π½Π°Ρ‡Π½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ, Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎΡ‚ 0200 Π΄ΠΎ 0499:

[user]$ ls -l 0[2-4]??.*

5.7.8 Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС подстановки Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС сдСланы, ΠΈΠ· Π½Π΅Π΅ Π΅Ρ‰Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ всС вхоТдСния символов \, ` ΠΈ ", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТили для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΄Ρ€ΡƒΠ³ΠΈΡ… символов.

5.8. Shell ΠΊΠ°ΠΊ язык программирования

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, для построСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° if… then… else ΠΈ case, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² for, while, until, благодаря Ρ‡Π΅ΠΌΡƒ ΠΎΠ½Π° прСвращаСтся Π² ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования.

5.8.1 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ if ΠΈ test (ΠΈΠ»ΠΈ [])

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² слСгка ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ выглядит Ρ‚Π°ΠΊ:

if list1 then list2 else list3 fi

Π³Π΄Π΅ list1, list2 ΠΈ list3 - это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми ΠΈ ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой ΠΈΠ»ΠΈ символом Π½ΠΎΠ²ΠΎΠΉ строки. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, эти ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки: {list}.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if провСряСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈΠ· list1. Если Π² этом спискС нСсколько ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚ΠΎ провСряСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ послСднСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ списка. Если это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0, Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· list2; Ссли это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· list3. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ Ρ‚Π°ΠΊΠΈΠΌ составным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ if, совпадаСт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ послСднСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ выполняСмой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ if ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

if list then list [elif list then list]… [else list] fi

(здСсь ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ присутствия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… содСрТится).

Π’ качСствС выраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ стоит сразу послС if ΠΈΠ»ΠΈ elif, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° test, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками []. Команда test выполняСт вычислСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно, ΠΈ 1 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ пСрСдаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ test ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ

test expression,

 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки:

[expression].

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ test ΠΈ [- это Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ магичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, выполняСмоС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ bash (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксис [Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»Π° поставлСна Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка). Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ вмСсто test Π² конструкции if ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if:

if [-e textmode2.htm]; then

ls textmode*

else

pwd

fi

Об ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ test (ΠΈΠ»ΠΈ […]) Π½Π°Π΄ΠΎ Π±Ρ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ особо.

5.8.2 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ test ΠΈ условныС выраТСния

УсловныС выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ test, строятся Π½Π° основС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², сравнСния строк ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… арифмСтичСских сравнСний. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ выраТСния строятся ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ("элСмСнтарных ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΎΠ²"):

β€’ -a file

Π’Π΅Ρ€Π½ΠΎ, Ссли Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file сущСствуСт.

β€’ -b file

Π’Π΅Ρ€Π½ΠΎ, Ссли file сущСствуСт ΠΈ являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства.

β€’ -c file

Π’Π΅Ρ€Π½ΠΎ, Ссли file сущСствуСт ΠΈ являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ символьного устройства.

β€’ -d file

Π’Π΅Ρ€Π½ΠΎ, Ссли file сущСствуСт ΠΈ являСтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ.

β€’ -e file

Π’Π΅Ρ€Π½ΠΎ, Ссли Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file сущСствуСт.

β€’ -f file