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

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

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

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (порядковый Π½ΠΎΠΌΠ΅Ρ€ выполняСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² спискС истории ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ послСдний Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ сохранСны Π² Ρ„Π°ΠΉΠ»Π΅ истории ΠΊΠΎΠΌΠ°Π½Π΄.

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

НапримСр, послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² строкС имССтся ΠΏΡ€ΠΎΠ±Π΅Π», ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹)

[root]# PS1="[\ [email protected]\h \W]\$"

Π² стандартном ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ квадратная скобка, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, символ @, имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΏΡ€ΠΎΠ±Π΅Π», Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (Π±Π΅Π· указания ΠΏΡƒΡ‚ΠΈ), Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ квадратная скобка ΠΈ символ $ (Ссли Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ простой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ) ΠΈΠ»ΠΈ # (Ссли ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root).

5.6.3 ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ PATH

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΎΡ‡Π΅Π½ΡŒ ваТная пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ имя PATH. Она Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… bash осущСствляСт поиск Ρ„Π°ΠΉΠ»ΠΎΠ² (Π² частности, Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ) Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π½Π΅ Π·Π°Π΄Π°Π½ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² этом ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ двоСточиями. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пСрСмСнная PATH Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, Ρ‚. Π΅. ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² этот список, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[root]# PATH=$PATH:new_path.

ΠŸΡ€ΠΈ осущСствлСнии поиска ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° просматриваСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚ΠΎΠΌ порядкС, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ пСрСчислСны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² этот список ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH Ρ‚ΠΎΡ‡ΠΊΡƒ. Однако этого Π½Π΅ рСкомСндуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ сообраТСниям бСзопасности: Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² общСдоступный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ совпадаСт с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· часто выполняСмых ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия (особСнно Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ стоит Π² Π½Π°Ρ‡Π°Π»Π΅ пСрСчня ΠΏΡƒΡ‚Π΅ΠΉ поиска).

5.6.4 ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ IFS

Π­Ρ‚Π° пСрСмСнная Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ (Internal Field Separator), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ раздСлСния слов ΠΏΡ€ΠΈ прСобразованиях ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, выполняСмых ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Π½Π° исполнСниС. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - "β€ΉΠŸΡ€ΠΎΠ±Π΅Π»β€Ίβ€ΉTabβ€Ίβ€ΉΠ‘ΠΈΠΌΠ²ΠΎΠ»_Π½ΠΎΠ²ΠΎΠΉ_строки›".

5.6.5 Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈ домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ

Имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния (с ΠΈΠΌΠ΅Π½Π΅ΠΌ PWD), ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ измСняСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ cd (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ смСнС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Midnight Commander).

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя (с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡƒΡ‚ΠΈ) домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ процСсс, сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ HOME.

5.6.6 Команда export

Когда ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° запускаСт Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΠΌ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная окруТСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»Π°ΡΡŒ запускаСмому ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ процСссу, Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ export, Ρ‚. Π΅. вмСсто

[user]$ name=value

Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

[user]$ export name=value

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС всС запускаСмыС ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π² Ρ‚ΠΎΠΌ числС Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ экзСмпляры самой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ) Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‚. Π΅. ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… значСния ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ.

5.7. РаскрытиС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (expansion)

Когда ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ½Π° Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ осущСствляСт "грамматичСский Ρ€Π°Π·Π±ΠΎΡ€" ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Одним ΠΈΠ· этапов Ρ‚Π°ΠΊΠΎΠ³ΠΎ "Ρ€Π°Π·Π±ΠΎΡ€Π°" являСтся раскрытиС ΠΈΠ»ΠΈ подстановка Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (expansion). Π’ bash имССтся сСмь Ρ‚ΠΈΠΏΠΎΠ² подстановки Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

β€’ раскрытиС скобок (brace expansion);

β€’ Π·Π°ΠΌΠ΅Π½Π° Π·Π½Π°ΠΊΠ° Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ (tilde expansion);

β€’ подстановка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;

β€’ подстановка ΠΊΠΎΠΌΠ°Π½Π΄;

β€’ арифмСтичСскиС подстановки (выполняСмыС слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ);

β€’ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ слов (word splitting);

β€’ раскрытиС шаблонов ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² (pathname expansion).

ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚ΠΎΠΌ порядкС, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ здСсь пСрСчислСны. Рассмотрим ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

5.7.1 РаскрытиС скобок

РаскрытиС скобок ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сразу нСсколько ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° сразу Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΈ дСйствия ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

[user]$ mkdir /usr/local/src/bash/{old,new,dist,bugs}

[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/local/src/bash/ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ old, new, dist ΠΈ bugs. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² /usr/ucb/ex /usr/lib/ex?.?* /usr/ucb/edit /usr/lib/ex?.?* /usr/ucb/ex /usr/lib/how_ex /usr/ucb/edit /usr/lib/how_ex

Π’ΠΎ Π΅ΡΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ скобок Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ нСсколько ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк (ΠΈΡ… число Ρ€Π°Π²Π½ΠΎ числу слов, стоящих Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок) ΠΏΡƒΡ‚Π΅ΠΌ приписывания ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ слову ΠΈΠ· скобок (спСрСди) Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ стоит ΠΏΠ΅Ρ€Π΅Π΄ скобкой, ΠΈ приписывания Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ слова Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ стоит послС скобки. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: строка a{d,c,b}e ΠΏΡ€ΠΈ раскрытии скобок прСвращаСтся Π² Ρ‚Ρ€ΠΈ слова "ade ace abe".

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

5.7.2 Π—Π°ΠΌΠ΅Π½Π° Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ (Tilde Expansion)

Если слово начинаСтся с символа Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ ('~'), всС символы Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слэша (ΠΈΠ»ΠΈ всС символы, Ссли слэша Π½Π΅Ρ‚) Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (login name).

Если это имя Π΅ΡΡ‚ΡŒ пустая строка (Ρ‚. Π΅. вслСд Π·Π° Ρ‚ΠΈΠ»ΡŒΠ΄ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ сразу слэш), Ρ‚ΠΎ Ρ‚ΠΈΠ»ΡŒΠ΄Π° замСняСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ HOME. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ HOME Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Ρ‚ΠΈΠ»ΡŒΠ΄Π° замСняСтся Π½Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ.

Если вслСд Π·Π° Π·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ (Π΄ΠΎ слэша) стоит слово, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»Π΅Π³Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚ΠΈΠ»ΡŒΠ΄Π° ΠΈ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если слово, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° Ρ‚ΠΈΠ»ΡŒΠ΄ΠΎΠΉ, Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΈ Π½Π΅ пусто), Ρ‚ΠΎ ΠΎΠ½ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

Если вслСд Π·Π° Π·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ стоит β€˜+’, эти Π΄Π²Π° Π·Π½Π°ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (Ρ‚. Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PWD). Если Π·Π° Π·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ слСдуСт β€˜-β€˜, подставляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ OLDPWD.

5.7.3 ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π‘ΠΈΠΌΠ²ΠΎΠ» $ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², подстановки ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ подстановок арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ имя, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° $, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² скобки; Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ замСняСмоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° Π½ΠΈΠΌ слов ΠΈΠ»ΠΈ символов. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (Π² частности, любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ), Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ${parameter}.

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

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

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

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

$(command) ΠΈ `command`

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

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

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

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

$[expression]

$((expression)),

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