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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Шоттс Уильям

Π’Π°Π±Π»ΠΈΡ†Π° 7.1. АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

ОписаниС

+

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅

-

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅

*

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅

/

Π”Π΅Π»Π΅Π½ΠΈΠ΅ (Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ подстановка ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число)

%

Π”Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈΠ»ΠΈ остаток ΠΎΡ‚ дСлСния

**

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ

ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² арифмСтичСских выраТСниях Π½Π΅ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ€ΠΎΠ»ΠΈ, Π° выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ выраТСния. НапримСр, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ 52 Π½Π° 3:

[[email protected] ~]$ echo $(($((5**2)) * 3))

75

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

[[email protected] ~]$ echo $(((5**2) * 3))

75

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² дСлСния ΠΈ получСния остатка. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ дСйствуСт цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

[[email protected] ~]$ echo ΠŸΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π° Π±ΡƒΠ΄Π΅Ρ‚ $((5/2))

ΠŸΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π° Π±ΡƒΠ΄Π΅Ρ‚ 2

[[email protected] ~]$ echo ΠΈ $((5%2)) Π² остаткС.

ΠΈ 1 Π² остаткС.

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π΅ 34.

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок

Π‘Π°ΠΌΡ‹ΠΌ малопонятным, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, выглядит Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ подстановки Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ шаблона, содСрТащСго Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, создаСтся мноТСство тСкстовых строк. НапримСр:

[[email protected] ~]$ echo Π’ΠΏΠ΅Ρ€Π΅Π΄ΠΈ-{A,B,C}-ΠΏΠΎΠ·Π°Π΄ΠΈ

Π’ΠΏΠ΅Ρ€Π΅Π΄ΠΈ-A-ΠΏΠΎΠ·Π°Π΄ΠΈ Π’ΠΏΠ΅Ρ€Π΅Π΄ΠΈ-B-ΠΏΠΎΠ·Π°Π΄ΠΈ Π’ΠΏΠ΅Ρ€Π΅Π΄ΠΈ-C-ΠΏΠΎΠ·Π°Π΄ΠΈ

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ с Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, которая называСтся ΠΏΡ€Π΅Π°ΠΌΠ±ΡƒΠ»ΠΎΠΉ, ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, которая называСтся эпилогом. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок находится список строк, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми, ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… символов. ИспользованиС ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π½Π΅ допускаСтся. НиТС приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл:

[[email protected] ~]$ echo Число_{1..5}

Число_1 Число_2 Число_3 Число_4 Число_5

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ символов Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС:

[[email protected] ~]$ echo {Z..A}

Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

ДопускаСтся Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок:

[[email protected] ~]$ echo a{A{1,2},B{3,4}}b

aA1b aA2b aB3b aB4b

ΠšΠ°ΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· этого? Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для формирования списков Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. НапримСр, Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΠΎ Π³ΠΎΠ΄Π°ΠΌ ΠΈ мСсяцам, ΠΌΠΎΠ³ Π±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с создания Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, состоящими ΠΈΠ· Π½ΠΎΠΌΠ΅Ρ€Π° Π³ΠΎΠ΄Π° ΠΈ мСсяца. Благодаря этому ΠΈΠΌΠ΅Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ отсортированы Π² хронологичСском порядкС. МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ввСсти ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π½ΠΎ это ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ошибками. ВмСсто этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[[email protected] ~]$ mkdir Pics

[[email protected] ~]$ cd Pics

[[email protected] Pics]$ mkdir {2009..2011}-0{1..9} {2009..2011}-{10..12}

[[email protected] Pics]$ ls

2009-01 2009-07 2010-01 2010-07 2011-01 2011-07

2009-02 2009-08 2010-02 2010-08 2011-02 2011-08

2009-03 2009-09 2010-03 2010-09 2011-03 2011-09

2009-04 2009-10 2010-04 2010-10 2011-04 2011-10

2009-05 2009-11 2010-05 2010-11 2011-05 2011-11

2009-06 2009-12 2010-06 2010-12 2011-06 2011-12

Однако!

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

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

[[email protected] ~]$ echo $USER

me

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ список доступных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[[email protected] ~]$ printenv | less

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… подстановки Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² шаблонС, подстановка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° echo просто Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ шаблон. Π’ случаС с подстановкой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² всС ΠΈΠ½Π°Ρ‡Π΅: Ссли ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, подстановка всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ пустая строка:

[[email protected] ~]$ echo $SUER

[[email protected] ~]$

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

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

[[email protected] ~]$ echo $(ls)

Desktop Documents ls-output.txt Music Pictures Public Templates Videos

Один ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² выглядит Ρ‚Π°ΠΊ:

[[email protected] ~]$ ls -l $(which cp)

-rwxr-xr-x 1 root root 71516 2012-12-05 08:58 /bin/cp

Π—Π΄Π΅ΡΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ which cp пСрСдаСтся ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ls, благодаря Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ cp, Π½Π΅ зная ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΊ Π½Π΅ΠΉ. ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ ограничиваСтся Ρ‚Π°ΠΊΠΈΠΌΠΈ простыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ (здСсь ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π°):

[[email protected] ~]$ file $(ls /usr/bin/* | grep zip)

/usr/bin/bunzip2:Β Β Β Β Β Β symbolic link to `bzip2'

/usr/bin/bzip2:Β Β Β Β Β Β Β Β ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV ), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

/usr/bin/bzip2recover: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

/usr/bin/funzip:Β Β Β Β Β Β Β ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

/usr/bin/gpg-zip:Β Β Β Β Β Β Bourne shell script text executable

/usr/bin/gunzip:Β Β Β Β Β Β Β symbolic link to `../../bin/gunzip'

/usr/bin/gzip:Β Β Β Β Β Β Β Β Β symbolic link to `../../bin/gzip'

/usr/bin/mzip:Β Β Β Β Β Β Β Β Β symbolic link to `mtools'

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ file.

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

[[email protected] ~]$ ls -l `which cp`

-rwxr-xr-x 1 root root 71516 2012-12-05 08:58 /bin/cp

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, послС знакомства с мноТСством способов подстановки, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ. НапримСр, взглянитС Π½Π° эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[[email protected] ~]$ echo this is aΒ Β Β Β Β test

this is a test

Или Π½Π° эту:

[[email protected] ~]$ echo Π˜Ρ‚ΠΎΠ³ΠΎ $100.00

Π˜Ρ‚ΠΎΠ³ΠΎ 00.00

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ разбиСния Π½Π° слова ΡƒΠ΄Π°Π»ΠΈΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ· списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² подставил ΠΏΡƒΡΡ‚ΡƒΡŽ строку вмСсто $1, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ нашСл Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся экранированиСм (quoting), для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ подавлСния Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ подстановки.

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ экранирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим, β€” Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Если Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ тСкст Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, всС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ своС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ символы. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚: $ (Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π°), \ (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш) ΠΈ ` (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ апостроф). Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° слова, подстановка ΠΏΡƒΡ‚Π΅ΠΉ, подстановка Ρ‚ΠΈΠ»ΡŒΠ΄Ρ‹ ΠΈ подстановка Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, Π½ΠΎ подстановка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², подстановка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ подстановка ΠΊΠΎΠΌΠ°Π½Π΄ всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Благодаря Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌ ΠΌΡ‹ смоТСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎ ошибкС создали Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π”Π²Π° слова.txt. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это имя Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ разбиСния слов Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: