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

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

Автор ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ Π‘Ρ€Π°ΠΉΠ°Π½ Уилсон

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки обозначаСтся символом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„Π°ΠΉΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ символом, скаТСм

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного обращСния с ΠΈΠΌΠ΅Π½Π΅ΠΌ

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

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ с вашСго Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, каТдая ввСдСнная строка пСрСдаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ядром Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π²Π²ΠΎΠ΄Π° символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки (Ρ‚.Π΅. наТатия RETURN). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Ρ‹ сдСлаСтС ошибки ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ это Π΄ΠΎ Π²Π²ΠΎΠ΄Π° RETURN, ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ…. Если символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки Π²Π²Π΅Π΄Π΅Π½ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ строка ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° систСмой ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ нСльзя.

МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π²ΠΎΠ΄ ΠΏΠΎ строкам Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

cat
. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ свой Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности ΠΏΠΈΡΠ°Ρ‚ΡŒ большими порциями, Π½ΠΎ Ρ„Π»Π°Π³
-u
ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Ρ‹Π΄Π°Π΅Ρ‚ строку сразу ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ:

$ catΒ Β Β 
Π’Ρ‹Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cat с Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

123

456

789

ctl-d

123

456

789

$ cat -u
Π’Ρ‹Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cat Π±Π΅Π· Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

123

123

456

456

789

789

ctl-d

$

Команда

cat
ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ RETURN; Π±Π΅Π· Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ½Π° Π²Ρ‹Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅: Π²Π²Π΅Π΄ΠΈΡ‚Π΅ нСсколько символов, Π° Π·Π°Ρ‚Π΅ΠΌ вмСсто RETURN Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ctl-d:

$ cat -u 123ctl-d123

Команда

cat
Π²Ρ‹Π΄Π°Π΅Ρ‚ символы ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. Π‘ΠΈΠΌΠ²ΠΎΠ» ctl-d ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ символы, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Π²ΠΎΠ΄ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ctl-d Π½Π΅ пСрСдаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· ctl-d Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ символов:

$ cat -u

123ctl-d123ctl-d$

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° это Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°

cat
, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² символов, считаСт, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» кончился, ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π‘ΠΈΠΌΠ²ΠΎΠ» ctl-d ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Π²Π΅Π»ΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, производящСй Π²Π²ΠΎΠ΄ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Если Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π²Π΅Π»ΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… символов, Ρ‡Ρ‚ΠΎ соотвСтствуСт ΠΊΠΎΠ½Ρ†Ρƒ Ρ„Π°ΠΉΠ»Π°. ИмСнно поэтому Π²Π²ΠΎΠ΄ ctl-d ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· систСмы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ большС Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, символ ctl-d Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ сигнал ΠΎ ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.1

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ввСсти ctl-d Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ

ed
? Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ этот случай с Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

$ ed < Ρ„Π°ΠΉΠ»

2.2 Π§Ρ‚ΠΎ хранится Π² Ρ„Π°ΠΉΠ»Π΅?

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΅Π³ΠΎ. Π’ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»Π° вСсьма Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сущСствуСт большоС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, ядро Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° ΠΎΠ½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ Π΅Π³ΠΎ. Команда

file
Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ "Π΄ΠΎΠ³Π°Π΄ΠΊΡƒ" (ΠΌΡ‹ вскорС объясним, ΠΊΠ°ΠΊ это происходит):

$ file /bin /bin/ed /usr/src/cmd/ed.c /usr/man/man1/ed.1

/bin: directory

/bin/ed: pure executable

/usr/src/cmd/ed.с: c program text

/usr/man/man1/ed.1: roff, nroff, or eqn input text

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°. ВсС ΠΎΠ½ΠΈ связаны с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ: ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (

/bin
), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, готовая ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ (
/bin/ed
), Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ тСкст, Ρ‚.Π΅. ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ языка Π‘ΠΈ, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (
/usr/src/cmd/ed.с
), ΠΈ страница справочного руководства (
/usr/man/man1/ed.1
).

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°

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

Иногда ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. ВыполняСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° помСчаСтся Π²Π½Π°Ρ‡Π°Π»Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ "магичСским" числом. Команда

od
, запущСнная Π±Π΅Π· всяких Ρ„Π»Π°Π³ΠΎΠ², Π²Ρ‹Π΄Π°Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ словам Π² 16-разрядном ΠΈΠ»ΠΈ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ прСдставлСнии, ΠΈ магичСскоС число становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ:

$ od /bin/ed

0000000 000410 025000 000462 011444 0000000 000000 000000 000001

0000020 170011 016600 000002 005060 1777776 010600 162706 000004

0000040 016616 000004 005720 010066 0000002 005720 001376 020076