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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ срСда программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 13

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ для совсСм "Π·Π΅Π»Π΅Π½Ρ‹Ρ…" Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΈ нСпрограммистов прСдставляСтся ΠΊΠ½ΠΈΠ³Π° Π­. ΠΈ Н. Π›ΠΎΠΌΠ°Ρ‚ΠΎ "A UNIX Primer" (Prentice-Hall, 1983).

Π“Π»Π°Π²Π° 2

Ѐайловая систСма

ВсС, с Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСма UNIX, ΠΎΠ½Π° воспринимаСт Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΆ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Когда Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ пСрвая вСрсия систСмы, Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π΅ΠΉ Π΄Π°Π»ΠΈ имя, всС усилия ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° создании структуры Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹Ρ‚ΡŒ простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Π² использовании. Ѐайловая систСма β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²ΡˆΠ΅Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ UNIX. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ философии "прСкрасноС Π² ΠΌΠ°Π»ΠΎΠΌ", ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… ΠΈΠ΄Π΅ΠΉ.

Для описания ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΈΡ… взаимодСйствия Π½ΡƒΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°Ρ‚ΡŒ структуру ΠΈ внСшниС связи Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π’ этой Π³Π»Π°Π²Π΅ излагаСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ вопросов, связанных с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, β€” понятиС Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ прСдставлСниС, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ иСрархия Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΡ€Π°Π²Π° доступа, индСксный дСскриптор (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Ρ„Π°ΠΉΠ»Π° Π² систСмС) ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ устройств. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ основная Ρ€Π°Π±ΠΎΡ‚Π° Π² систСмС связана с ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, сущСствуСт мноТСство ΠΊΠΎΠΌΠ°Π½Π΄ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°; здСсь вводятся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

2.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свСдСния ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ…

Π€Π°ΠΉΠ» прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ². (Π‘Π°ΠΉΡ‚ β€” нСбольшая порция ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² восСмь Π±ΠΈΡ‚. Для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ синонимом слова "символ".) Никаких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ структурС систСмой Π½Π° Ρ„Π°ΠΉΠ» Π½Π΅ накладываСтся, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла Π½Π΅ приписываСтся Π΅Π³ΠΎ содСрТимому: смысл Π±Π°ΠΉΡ‚ΠΎΠ² зависит ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ». Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, это Π²Π΅Ρ€Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ², хранящихся Π½Π° дисках, Π½ΠΎ ΠΈ для Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства. Записи Π½Π° ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Ρ… Π»Π΅Π½Ρ‚Π°Ρ…, ΠΏΠΎΡ‡Ρ‚Π°, символы, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰Π΅Π΅ устройство, Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Ρ„Π°ΠΉΠ»ΠΎΠ² систСма ΠΈ входящиС Π² Π½Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ просто ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ².

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π½Π΅ΠΌ с создания нСбольшого Ρ„Π°ΠΉΠ»Π°:

$ ed Π°

now is the time,

for all good people

.

w junk

36

q

$ls -l

-rw-r--r-- 1 you 26 Sep 27 06:11 junk

$

Π—Π΄Π΅ΡΡŒ junk β€” это Ρ„Π°ΠΉΠ» ΠΈΠ· 36 Π±Π°ΠΉΡ‚, Ρ‚.Π΅. 36 символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²Π²Π΅Π»ΠΈ (Π½Π΅ считая, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, символов, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ ошибок). Команда cat ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

$ cat junk

now is the time

for all good people

$

Команда od ("octal dump" β€” Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Π΄Π°ΠΌΠΏ) Π²Ρ‹Π΄Π°Π΅Ρ‚ "ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅" всСх Π±Π°ΠΉΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π°:

$ od -с junk

0000000 n o w   i s   t h e   t i m e \n

0000020 f o r   a l l   g o o d   p e o

0000040 p l e \n

0000044

$

Π€Π»Π°Π³ -с ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ ΠΊΠ°ΠΊ символы. Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ -b, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ ΠΊΠ°ΠΊ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ числа.[5]

$ od -cb junk

0000000  n   o   w       i   s       t   h   e       t   i   m   e  \n

        156 157 167 040 151 163 040 164 150 145 040 164 151 155 145 012

0000020  f   o   r       a   l   l       g   o   o   d       p   e   o

        146 157 162 040 141 154 154 040 147 157 157 144 040 160 145 157

0000040  d   l   e  \n

        160 154 145 012

0000044 $

Π‘Π΅ΠΌΠΈΠ·Π½Π°Ρ‡Π½Ρ‹Π΅ числа Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ слСва ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ мСсто Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‚.Π΅. порядковый Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ символа Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… чисСл β€” это ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ PDP-11, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΎΡΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… машин большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Π°Ρ нотация; Ρ„Π»Π°Π³ -Ρ… прСдписываСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ od ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈΠ΄Π΅Ρ‚ символ с Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 012. Π­Ρ‚ΠΎ символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки для ASCII; систСма ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ RETURN. По соглашСнию, заимствованному ΠΈΠ· языка Π‘ΠΈ, символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки изобраТаСтся ΠΊΠ°ΠΊ \n, Ρ‡Ρ‚ΠΎ лишь ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΎΠ³ΠΎ соглашСния ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚ΠΈΠΏΠ° od; Π² Ρ„Π°ΠΉΠ»Π΅ ΠΆΠ΅ хранится СдинствСнный Π±Π°ΠΉΡ‚ 012.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами, связанными с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ опСрациями управлСния Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ символы: шаг Π½Π°Π·Π°Π΄ (Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 010 изобраТаСтся ΠΊΠ°ΠΊ \b), табуляция (011, \t), Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ (015, \r).

Π’Π°ΠΆΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ символ хранится Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ интСрпрСтируСтся Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ситуации. НапримСр, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символ "шаг Π½Π°Π·Π°Π΄" (прСдполагая, Ρ‡Ρ‚ΠΎ это ваш символ стирания), систСма воспринимаСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ символ, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ. Оба символа β€” ΠΈ стираСмый, ΠΈ "шаг Π½Π°Π·Π°Π΄" β€” Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚, Π° курсор возвращаСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Π·Π°Π΄.

Если ввСсти ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

\←

(Ρ‚.Π΅. символ \ ΠΈ вслСд Π·Π° Π½ΠΈΠΌ "шаг Π½Π°Π·Π°Π΄"), Ρ‚ΠΎ ядро Π² этом случаС "считаСт", Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти символ ←, поэтому \ исчСзаСт, Π° Π² вашСм Ρ„Π°ΠΉΠ»Π΅ появляСтся Π±Π°ΠΉΡ‚ 010. Когда "шаг Π½Π°Π·Π°Π΄" отраТаСтся Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, происходит Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ курсора, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° символ \.

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ„Π°ΠΉΠ»Π°, содСрТащСго символ ←, ΠΎΠ½ пСрСдаСтся Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π±Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠΊΠ΅ курсора Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Π·Π°Π΄. Если Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ od, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Ρ„Π°ΠΉΠ», содСрТащий символ ←, ΠΎΠ½ появится ΠΊΠ°ΠΊ Π±Π°ΠΉΡ‚ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 010 ΠΈΠ»ΠΈ, Ссли ΡƒΠΊΠ°Π·Π°Π½ Ρ„Π»Π°Π³ -с, ΠΊΠ°ΠΊ \b.

ΠΠ½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈ с символом табуляции: ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΎΠ½ отраТаСтся Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈ посылаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π²Π²ΠΎΠ΄; ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ символ табуляции просто пСрСдаСтся Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ интСрпрСтируСтся. Однако Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ случая здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ядру, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ табуляции ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅; Ρ‚ΠΎΠ³Π΄Π° вмСсто изобраТСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа табуляции Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΡƒΠΆΠ½ΠΎΠ΅ число ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ табуляции. ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΈ табуляции установлСны Π² столбцах 9, 17, 25 ΠΈ Ρ‚.Π΄. Команда

$ stty = tabs

ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°ΠΌΠ΅Π½Π΅ символов табуляции ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» см. описаниС stty(1).

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° символа RETURN Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° рассмотрСнной Π²Ρ‹ΡˆΠ΅. Π―Π΄Ρ€ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ RETURN Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΊΠ°ΠΊ "Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ" ΠΈ "ΠΊΠΎΠ½Π΅Ρ† строки", Π½ΠΎ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ "ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки". ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ этот символ вновь замСняСтся символами Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊΠΎΠ½Ρ†Π° строки.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ систСмы UNIX ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½, особСнно использованиС символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ строки (Π² качСствС ΠΊΠΎΠ½Ρ†Π° посылки). МногиС систСмы вмСсто этого Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΊΠ°ΠΊ "запись", ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ счСтчик числа символов Π² строкС (ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΊΠΎΠ½Ρ†Π° строки Π½Π΅Ρ‚). Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах каТдая строка Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ символами Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ такая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ². (Π‘Π»ΠΎΠ²ΠΎ "linefeed" Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки, синоним ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, поэтому Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "CRLF", Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ произнСсти.)

БистСма UNIX Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ: Π½Π΅Ρ‚ записСй ΠΈ счСтчиков, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ Π²Ρ‹ ΠΈΠ»ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ помСстили Ρ‚ΡƒΠ΄Π°. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки прСобразуСтся Π² Π΄Π²Π° символа Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ символом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это всС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ "ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ". Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв подобная простая схСма являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π±ΠΎΠ»Π΅Π΅ слоТная структура, Π΅Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° Π±Π°Π·Π΅ этой, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ простоС ΠΈΠ· слоТного Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Π΅ΠΉ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки обозначаСтся символом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„Π°ΠΉΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ символом, скаТСм \Π΅ ΠΊΠ°ΠΊ сокращСниС "end of file" ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°. Но, посмотрСв Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ od, Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π° ΠΎΠ½ просто кончаСтся. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ, систСма ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° сообщСниСм ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ большС Π½Π΅Ρ‚. Π―Π΄Ρ€ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Ρ„Π°ΠΉΠ»Π°, поэтому ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° встрСчаСт ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСх ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ» Π±Π°ΠΉΡ‚ΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного обращСния с ΠΈΠΌΠ΅Π½Π΅ΠΌ read (ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ядрС). ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ read читаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ очСрСдная ввСдСнная строка. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° read Ρ‚Π°ΠΊΠΆΠ΅ сообщаСт число ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π°, поэтому ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° обнаруТиваСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° сообщаСт: "ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ 0 Π±Π°ΠΉΡ‚". Если ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±Π°ΠΉΡ‚Ρ‹ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° read Π²Ρ‹Π΄Π°Π»Π° хотя Π±Ρ‹ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΡ…. На самом Π΄Π΅Π»Π΅, ΠΎΡ‚ΠΊΠ°Π· ΠΎΡ‚ Π²Π²ΠΎΠ΄Π° Π±Π°ΠΉΡ‚Π° со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°" Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, смысл содСрТимого Π±Π°ΠΉΡ‚Π° зависит ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°. Но всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ†, ΠΈ поэтому ΠΈΡ… слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ read, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ нуля это зависящий ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ способ прСдставлСния ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов.