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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма UNIXΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор РобачСвский АндрСй ΠœΠΈΡ…Π°ΠΉΠ»ΠΎΠ²ΠΈΡ‡

 ‒ Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ зарСгистрирован Π² систСмС ΠΈ Π²Π²Π΅Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, login(1) запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π² послСднСм ΠΏΠΎΠ»Π΅ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ„Π°ΠΉΠ»Π΅ /etc/passwd. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½ΠΎ Π² нашСм случаС β€” это ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ shell.

Β β€’Β Shell выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Β β€’Β Shell считываСт Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ синтаксичСский Π°Π½Π°Π»ΠΈΠ· Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки, подстановку шаблонов ΠΈ выполняСт дСйствиС, прСдписанноС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°) ΠΈΠ»ΠΈ сообщаСт ΠΎΠ± ошибкС, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ функция Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.

β€’ По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, вводя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ exit, ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· систСмы.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма UNIX - img_11.jpeg

Рис. 1.8. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² систСму

2.Β ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ являСтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ срСдством программирования. Бинтаксис языка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² нСсколько отличаСтся, Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΡ‹ рассмотрим ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Bourne. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ shell Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, конструируя ΠΈΡ…, ΠΊΠ°ΠΊ ΠΈΠ· ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΎΠ², ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ UNIX. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС shell часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ скриптами ΠΈΠ»ΠΈ сцСнариями (script). Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ считываСт строки ΠΈΠ· Ρ„Π°ΠΉΠ»Π°- скрипта ΠΈ выполняСт ΠΈΡ…, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

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

Для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ скрипты ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
Bourne shell (sh) .profile
Π‘ shell (csh) .login ΠΈ .cshrc
Korn shell (ksh) .profile ΠΈ .kshrc
Bourne-Again shell (bash) .profile ΠΈ .bashrc

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ .profile ΠΈ .login Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² систСму.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ .cshrc, .kshrc ΠΈ .bashrc Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

4. НаконСц, основная инициализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы происходит Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния скриптов shell. Если Π²Π°ΠΌ понадобится ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ систСмный сСрвис), Ρ‚ΠΎ придСтся Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² эти скрипты.

Бинтаксис языка Bourne shell

Π›ΡŽΠ±ΠΎΠΉ ΠΈΠ· стандартных ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΉ язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠ»ΠΈ скрипты, для выполнСния достаточно слоТных Π·Π°Π΄Π°Ρ‡. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ shell являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΎΠ½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ считываСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· скрипта ΠΈ выполняСт ΠΈΡ…, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ вводились ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ большой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ скриптов, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ опрСдСляСтся простотой ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ. Если ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π³Π»Π°Π²Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, Ρ‚ΠΎ самым эффСктивным срСдством ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся язык программирования Π‘.

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

ΠžΠ±Ρ‰ΠΈΠΉ синтаксис скрипта

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ, скрипт прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкстовый Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ записаны инструкции, понятныС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, выраТСния shell ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ считываСт эти инструкции ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выполняСт ΠΈΡ….

БСзусловно, ΠΊΠ°ΠΊ ΠΈ Π² случаС любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка программирования, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ использованиС ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ написанной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Bourne shell ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа '#':

# Π­Ρ‚ΠΎΡ‚ скрипт выполняСт поиск "мусора" (Π·Π°Π±Ρ‹Ρ‚Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

# Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ„Π°ΠΉΠ»ΠΎΠ² core ΠΈ Ρ‚.ΠΏ.) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ всю строку, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

find /home -name core -print # Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ поиск Ρ„Π°ΠΉΠ»ΠΎΠ² core

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² систСмС ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ скрипты для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², имя ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ помСщаСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

#!/bin/sh

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст скрипта Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Bourne shell. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС скрипта ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (для этого ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΌ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€” x), Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° скрипта.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈΠ»ΠΈ скриптС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ являСтся строка, которая пСрСдаСтся присвоСниСм:

var=<i>value</i>

Π³Π΄Π΅ var β€” имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, a value β€” Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°ΠΊ. НапримСр, вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name Π½Π° экран ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

$ <b>echo $name</b>

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (name1) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name:

$ <b>name1=$name</b>

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСдставляСт собой строку, shell прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ строк ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Бинтаксис присвоСния ΠΏΡ€ΠΈ этом ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

var=`<i>command</i>`

Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ var β€” имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, a command β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π° pwd(1) Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°:

$ <b>pwd</b>

/usr/home/andrei/test

МоТно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ cdir Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сохранится Π² Π½Π΅ΠΉ:

$ <b>cdir=`pwd`</b>

$ <b>echo $cdir</b>

/usr/home/andrei/test

$ <b>cd /usr/bin</b>

$ <b>pwd</b>

/usr/bin

$ <b>cd $cdir</b>

$ <b>pwd</b>

/usr/home/andrei/test

ΠŸΡ€ΠΈ использовании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ var, ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ подставляСт вмСсто $var Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΎΠ»Π΅Π΅ слоТныС синтаксичСскиС конструкции получСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π».Β 1.7.