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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

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

[ [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. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это имя Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ разбиСния слов Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

[ [email protected] ~]$ ls -l Π”Π²Π° слова.txt

ls: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ 'Π”Π²Π°': НСт Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

ls: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ 'слова.txt': НСт Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

Π”ΠΎΠ±Π°Π²ΠΈΠ² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ слов ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚; ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΡ‹ исправим ΠΎΡˆΠΈΠ±ΠΊΡƒ:

[ [email protected] ~]$ ls -l "Π”Π²Π° слова.txt"

-rw-rw-r-- 1 me me 18 2012-02-20 13:03 Π”Π²Π° слова.txt

[ [email protected] ~]$ mv "Π”Π²Π° слова.txt" Π”Π²Π°_слова.txt

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: подстановка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², подстановка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ подстановка ΠΊΠΎΠΌΠ°Π½Π΄ всС Π΅Ρ‰Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…:

[ [email protected] ~]$ echo "$USER $((2+2)) $(cal)"

me 4 February 2012

Su Mo Tu We Th Fr Sa

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29

Π”Π°Π²Π°ΠΉΡ‚Π΅ отвлСчСмся ΠΈ посмотрим, ΠΊΠ°ΠΊΠΎΠΉ эффСкт ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π° подстановку ΠΊΠΎΠΌΠ°Π½Π΄. Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим дСйствиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° разбиСния Π½Π° слова. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ разбиСния Π½Π° слова удаляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ· тСкста:

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

this is a test

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, символы табуляции ΠΈ символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ слов. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Π½Π΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ упомянутыС символы Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ тСкста. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ лишь раздСлитСлями. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ дСлят слова Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, получаСтся, Ρ‡Ρ‚ΠΎ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ командная строка состоит ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Однако Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° слова Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ раздСлитСлями β€” ΠΎΠ½ΠΈ станут Ρ‡Π°ΡΡ‚ΡŒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

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

this is a test

ПослС добавлСния Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ командная строка Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ разбиСния Π½Π° слова ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ интСрСсный ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡƒΠ»ΠΎΠ²ΠΈΠΌΡ‹ΠΉ эффСкт ΠΏΡ€ΠΈ подстановкС ΠΊΠΎΠΌΠ°Π½Π΄. ВзглянитС:

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

February 2012 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

[ [email protected] ~]$ echo "$(cal)"

February 2012

Su Mo Tu We Th Fr Sa

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29

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

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ


Если Π²Π°ΠΌ трСбуСтся ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ всС подстановки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. НиТС для сравнСния приводятся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ нСэкранированной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΊΠΎΠΌΠ°Π½Β­Π΄Ρ‹, экранированной Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:

[ [email protected] ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

text /home/me/ls-output.txt a b foo 4 me

[ [email protected] ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"

text ~/*.txt {a,b} foo 4 me

[ [email protected] ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'

text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ экранирования всС большС ΠΈ большС подавляСт подстановку.

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ символов


Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ символ. Для этого достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ символом ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС называСтся ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ символом (escape character). Часто этот ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ подстановку.

[ [email protected] ~]$ echo "Баланс счСта ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ $USER: \$5.00"

Баланс счСта ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ me: $5.00

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ символов Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся для подавлСния ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния символов Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². НапримСр, Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² допускаСтся использованиС символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. К ΠΈΡ… числу относятся: $, !, &, (ΠΏΡ€ΠΎΠ±Π΅Π») ΠΈ Π΄Ρ€. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ Π² имя Ρ„Π°ΠΉΠ»Π°, Π΅Π³ΠΎ достаточно ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

[ [email protected] ~]$ mv bad\&filename good_filename

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сам ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ символ, Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ввСдя \\. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш тСряСт своС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ интСрпрСтируСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ символ.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅


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

ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€ΠΎΠ»ΠΈ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ символа, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ (control codes). ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 32 символа Π² схСмС кодирования ASCII использовались для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² устройствах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ‚Π΅Π»Π΅Ρ‚Π°ΠΉΠΏ. НСкоторыС ΠΈΠ· этих ΠΊΠΎΠ΄ΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ Π²Π°ΠΌ (табуляция, Π·Π°Π±ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π΅Ρ‚ (пустой символ, ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π». 7.2.

Π’Π°Π±Π»ΠΈΡ†Π° 7.2. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

\a

Π—Π²ΠΎΠ½ΠΎΠΊ (Β«ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Β» β€” заставляСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал)

\b

Π—Π°Π±ΠΎΠΉ (backspace)

\n

Новая строка (Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах этот символ выполняСт ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки)

\r

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ

\t

Вабуляция


Π’ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ пСрСчислСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстныС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ИдСя использования ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша Π·Π°Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² языкС программирования C ΠΈ Π±Ρ‹Π»Π° заимствована ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ язык ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -e ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ $' '. НиТС дСмонстрируСтся использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ sleep, простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая всСго лишь ΠΆΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число сСкунд ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, для создания элСмСнтарного Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.