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

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

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

$ mesg n Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΠΌ сообщСния

$ ls -l /dev/tty0

crw--w---- 1 you 1, 12 Sep 28 02:41 /dev/tty0

$ mesg y Π Π°Π·Ρ€Π΅ΡˆΠΈΠΌ

$ ls -l /dev/tty0

crw--w--w- 1 you 1, 12 Sep 28 02:42 /dev/tty0

$

Часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя для ссылки Π½Π° примСняСмый Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π½ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ²ΠΎ имя вашСго Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Имя устройства /dev/tty являСтся синонимом ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ вошли Π² систСму, с ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Π²Ρ‹ Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° самом Π΄Π΅Π»Π΅:

$ date >/dev/tty

Wed Sep 28 02:42:23 EDT 1983

$

Имя /dev/tty особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² Ρ‚ΠΎ врСмя ΠΊΠΎΠ³Π΄Π° Π΅Π΅ стандартный Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΈ связаны с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π° Π½Π΅ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ. Команда crypt являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… имя /dev/tty. "ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ" тСкст поступаСт ΠΈΠ· стандартного Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π° Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Π°Ρ информация направляСтся Π² стандартный Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, поэтому ΠΊΠΎΠΌΠ°Π½Π΄Π° crypt Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ с /dev/tty:

$ crypt <cleartext >cryptedtext

Enter key: Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ

$

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ имя /dev/tty ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСявно, Π½ΠΎ всС-Ρ‚Π°ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если Π±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π° crypt Ρ‡ΠΈΡ‚Π°Π»Π° ΠΊΠ»ΡŽΡ‡ ΠΈΠ· стандартного Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΎΠ½Π° Π±Ρ‹ ΠΏΡ€ΠΎΡ‡Π»Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку ΠΈΠ· Ρ„Π°ΠΉΠ»Π° cleartext. ВмСсто этого ΠΎΠ½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» /dev/tty, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ автоматичСскоС эхо Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠ»ΡŽΡ‡ Π½Π΅ появился Π½Π° экранС, ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡. Π’ Π³Π». 5 ΠΈ 6 приводится нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования /dev/tty.

Иногда Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ Π²Π°ΠΆΠ΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ выполнСния. НапримСр, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с сСгодняшними новостями ΠΈ Π½Π΅ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Π΅Ρ‰Π΅ Ρ€Π°Π·. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ news Π² Ρ„Π°ΠΉΠ» /dev/null ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°:

$ news >/dev/null

$

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, направляСмая Π² /dev/null, просто ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π°, сразу ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ символ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° чтСния всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ².

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ» /dev/null ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ стандартного Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ диагностичСскиС сообщСния. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° time (time(1)) сообщаСт ΠΎΠ± использованном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ процСссорном Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выдаСтся Π² стандартный ΠΏΠΎΡ‚ΠΎΠΊ диагностики, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€ΠΎΠ½ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, производящиС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ стандартный Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² Ρ„Π°ΠΉΠ» /dev/null:

$ ls -l /usr/diet/words

-r--r--r-- 1 bin 196513 Jan 20 1979 /usr/dict/words

$ time grep e /usr/dict/words/ >/dev/null

real 13.0

user  9.0

sys   2.7

$ time egrep e /usr/dict/words >/dev/null

real  8.0

user  3.9

sys   2.8

$

Команда time Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя, врСмя процСссора, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΈ врСмя процСссора, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ ядром систСмы для выполнСния запросов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Команда egrep β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ обсудим Π² Π³Π». 4; ΠΎΠ½Π° выполняСтся ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Π΄Π²Π° Ρ€Π°Π·Π° быстрСС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep ΠΏΡ€ΠΈ просмотрС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². Если Π±Ρ‹ Π²Ρ‹Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄ egrep ΠΈΠ»ΠΈ grep Π½Π΅ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² /dev/null ΠΈΠ»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ», ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° сотни тысяч символов "ΠΏΡ€ΠΎΠ±Π΅Π³ΡƒΡ‚" Π½Π° экранС, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ появятся Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ характСристики.

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

ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /dev, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Ρ€Π°Π·Π΄. 4 справочного руководства. Π’ Ρ‡Π΅ΠΌ состоит Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ /dev/mt0 ΠΈ /dev/rmt0? ΠŸΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ примСнСния Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² /dev для дисков, ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Ρ… Π»Π΅Π½Ρ‚ ΠΈ Ρ‚.ΠΏ.

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

ΠœΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Π΅ Π»Π΅Π½Ρ‚Ρ‹, записанныС Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±Π»ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ 800 Π±Π°ΠΉΡ‚ β€” дСсятикратный ΠΎΠ±Ρ€Π°Π· ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ· 80 символов, Π½ΠΎ устройство /dev/mt0 ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈ ΠΈΠ· 512 Π±Π°ΠΉΡ‚. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ dd (dd(1)), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π»Π΅Π½Ρ‚Ρƒ.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ /dev/tty Π½Π΅ являСтся просто связью с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ вошли Π² систСму? Π§Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ссли Π±Ρ‹ ΠΏΡ€Π°Π²Π° доступа для Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ rw--w--w-, ΠΊΠ°ΠΊ Π½Π° вашСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅?

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

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ write(1)? Подсказка: см. Π² utmp(5).

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

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚?

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΈ библиографичСская справка

Π€Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС посвящСна Ρ‡Π°ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ К. Вомпсона "UNIX implementation" (BSTJ, July, 1978). Π‘Ρ‚Π°Ρ‚ΡŒΡ Π”. Π ΠΈΡ‚Ρ‡ΠΈ ""The evolution of the UNIX time-sharing system" (Symposium on Language Design and Programming Methodology", Sydney, Australia, Sept., 1979) содСрТит Π·Π°Π²ΠΎΡ€Π°ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΈ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° исходной PDP-7 файловая систСма UNIX ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° Π½Ρ‹Π½Π΅ΡˆΠ½ΡŽΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

ΠŸΡ€ΠΈ создании Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы UNIX Π±Ρ‹Π»ΠΈ заимствованы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΈΠ· систСмы Ρ„Π°ΠΉΠ»ΠΎΠ² ΠœΠΠ›Π’Π˜ΠšΠ‘. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС послСднСй содСрТится Π² ΠΊΠ½ΠΈΠ³Π΅ И. ΠžΡ€Π³Π°Π½ΠΈΠΊΠ° "The MULTICS System: An Examination of its Structure" (MIT Press, 1972).

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π‘. ΠœΠΎΡ€Ρ€ΠΈΡΠ° ΠΈ К. Вомпсона "Password security: a case history" посвящСна интСрСсным сравнСниям ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ‚. 2Π’ справочного руководства программиста систСмы UNIX. Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ‚ΠΎΠΌΠ΅ Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ Π”. Π ΠΈΡ‚Ρ‡ΠΈ "On the security of UNIX", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ поясняСтся, Ρ‡Ρ‚ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ систСмы Π² большСй стСпСни зависит ΠΎΡ‚ ΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… администрациСй, Ρ‡Π΅ΠΌ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠ°ΠΊ crypt.

Π“Π»Π°Π²Π° 3

ВозмоТности ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° shell

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ shell β€” это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ваТная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ UNIX, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ вашСго любимого тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Она исполняСт ваши запросы Π½Π° запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС вашСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ любая другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° систСмы. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ настоящСй Π³Π»Π°Π²Ρ‹ ΠΈ Π³Π». 5 Π±ΡƒΠ΄ΡƒΡ‚ посвящСны описанию возмоТностСй ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Основная ΠΌΡ‹ΡΠ»ΡŒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ подвСсти вас, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚ΠΎ смоТСтС Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π· особого Ρ‚Ρ€ΡƒΠ΄Π°, Π½Π΅ прибСгая ΠΊ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ языкам программирования Ρ‚ΠΈΠΏΠ° Π‘ΠΈ.

Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, описаниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π΄Π²Π΅ части. Π’ этой Π³Π»Π°Π²Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… возмоТностСй, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Π³Π». 1, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, Π½ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… конструкций, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ мСтасимволы, ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ shell ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры управлСния. ВсС это понадобится Π²Π°ΠΌ для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π³Π». 5 Π±ΠΎΠ»Π΅Π΅ слоТный. Π˜Π·ΡƒΡ‡ΠΈΠ² Π΅Π³ΠΎ, Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ настоящиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС shell ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. Π’Π°ΠΊΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ, поэтому ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Π΅ Π³Π»Π°Π²Ρ‹.

3.1 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ рассмотрСниС, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° интСрпрСтируСтся shell. Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» содСрТит Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± основных возмоТностях ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, описанных Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Π΅.

Бамая простая ΠΊΠΎΠΌΠ°Π½Π΄Π° состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ слова, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для выполнСния (ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄):

$ who ВыполняСм Ρ„Π°ΠΉΠ» /bin/who

you tty2 Sep 28 07:51

jpl tty4 Sep 28 08:32

$

Команда, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ символом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой:

$ date;

Wed Sep 28 09:07:15 EDT 1983

$ date; who

Wed Sep 28 09:07:23 EDT 1983

you tty2 Sep 28 07:51

jpl tty4 Sep 28 08:32

$

Однако Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ начнСтся, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ RETURN. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, Π½ΠΎ Ссли Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ этого, Ρ‚ΠΎ Π²Π²ΠΎΠ΄

$ date; who

ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ Π²Π²ΠΎΠ΄Ρƒ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ€Π°Π·Π½Ρ‹Ρ… строках. Π’ частности, ΠΊΠΎΠΌΠ°Π½Π΄Π° who Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ date. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этих ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ:

$ date; who | wc

Wed Sep 28 09: 08:48 EDT 1983

2 10 60

$

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ who пСрСдаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π΅ wc. ΠŸΡ€ΠΈ связывании who ΠΈ wc Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» образуСтся Сдиная ΠΊΠΎΠΌΠ°Π½Π΄Π°, называСмая ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ, которая выполняСтся послС date. Π’ процСссС Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки shell считаСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ '|' Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ';'. Для группирования ΠΊΠΎΠΌΠ°Π½Π΄ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скобки:

$ (date; who)

Wed Sep 28 09:11:09 EDT 1983

you tty2 Sep 28 07:51

jpl tty4 Sep 28 08:32

$ (date; who) | wc

3 16 89