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

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

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

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

...

$

Π’ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число 410 ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ нСсколько процСссов. (ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ магичСскиС числа зависят ΠΎΡ‚ систСмы.) Набор разрядов, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ 410, Π½Π΅ являСтся символом ΠΈΠ· мноТСства ASCII, поэтому ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Но, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», запустив свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° систСма Π² соотвСтствии с соглашСниСм сочтСт Π΅Π³ΠΎ выполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

Π’ случаС тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрыто Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² Ρ„Π°ΠΉΠ»Π΅, поэтому ΠΊΠΎΠΌΠ°Π½Π΄Π° file отыскиваСт строки, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ #include, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ, ΠΈΠ»ΠΈ строки, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ nroff ΠΈΠ»ΠΈ troff.

Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: ΠΏΠΎΡ‡Π΅ΠΌΡƒ систСма Π½Π΅ слСдит Π·Π° Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, вСдь Ρ‚ΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ sort Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π» Π±Ρ‹ Ρ„Π°ΠΉΠ» /bin/ed. Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅- Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ для программиста свойства. Π₯отя ΠΊΠΎΠΌΠ°Π½Π΄Π°

$ sort /bin/ed

Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого смысла, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΈ Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… возмоТности. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ od, cp, wc, cmp, file ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ нСзависимо ΠΎΡ‚ ΠΈΡ… содСрТания. Но идСя бСстиповых Ρ„Π°ΠΉΠ»ΠΎΠ² этим Π½Π΅ ограничиваСтся. Если, скаТСм, для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ nroff Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΈΡ…, создавая Ρ„Π°ΠΉΠ», ΠΈ, вСроятно, считывая Ρ„Π°ΠΉΠ» для рСдактирования. Π’ΠΎΠ³Π΄Π°, Π±Π΅Π· сомнСния, Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ этой ΠΊΠ½ΠΈΠ³ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° языкС Π‘ΠΈ для Π³Π»Π°Π² 6, 7 ΠΈ 8.

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

$ od -с junk > temp

$ ed ch2.1

1534

r temp

168

...

Команда od ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ тСкст Π² стандартный Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ сам тСкст. Вакая ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Π°; Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм имССтся нСсколько Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π°, Π΄Π°ΠΆΠ΅ для тСкста, ΠΈ трСбуСтся Π΄ΠΈΠ°Π»ΠΎΠ³ с систСмой со стороны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ систСмС UNIX Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ Ρ„Π°ΠΉΠ»Π°, ΠΈ для доступа ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ достаточно лишь Π·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ имя.[6]

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π° Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π²ΠΎ всСм программисты Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΈΠΏΠ΅ Ρ„Π°ΠΉΠ»Π°, Π° всС стандартныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ. Однако Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈ нСдостатки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚, проводят поиск, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ тСкст Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°: ΠΊΠΎΠΌΠ°Π½Π΄Π° grep Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π° sort Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ стандартный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ тСкст Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ограничСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠœΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° тСкстС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 30 тыс. Π±Π°ΠΉΡ‚, Π½Π΅ содСрТащСм Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π΅Π»Π°ΡŽΡ‚ явно Π½Π΅ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ допущСния ΠΎ максимальном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ строки тСкста (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ BUGS (ошибки) описания sort(1)).