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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 72

Автор Уильям Шоттс

[ [email protected] ~]$ find playground \( -type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)

Π‘ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ слоТно. Π’ тСкстС сцСнария ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

find playground \

\( \

-type f \

-not -perm 0600 \

-exec chmod 0600 '{}' ';' \

\) \

-or \

\( \

-type d \

-not -perm 0700 \

-exec chmod 0700 '{}' ';' \

\)

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

настройка vim для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сцСнариСв

ВСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ vim ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² настройки. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сцСнариСв.

:syntax on Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ подсвСтку синтаксиса. Π‘ этой настройкой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ синтаксичСскиС элСмСнты сцСнариСв Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ошибок. И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, выглядит ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой настройки Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна полная вСрсия vim, Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ строку шСбанг (shebang), ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΡƒΡŽ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» являСтся сцСнариСм ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Если с настройкой :syntax on Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ слоТности, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ настройку :set syntax=sh.

:set hlsearch Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ подсвСтку Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. НапримСр, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск слова echo, с этой настройкой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ всС вхоТдСния искомого слова.

:set tabstop=4 опрСдСляСт число ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (знакомСст), Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… символом табуляции. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½ символ табуляции Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ восСмь знакомСст. ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΠ² этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠΌΠΈ программистами), Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ строки Π½Π° экранС.

:set autoindent Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ автоматичСскоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ отступов. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ заставляСт vim Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½ΠΎΠ²ΡƒΡŽ строку отступ, ΠΊΠ°ΠΊ Π² строкС Π²Ρ‹ΡˆΠ΅. Π­Ρ‚ΠΎ ускоряСт Π²Π²ΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… конструкций. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ автоматичСскоС Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅, достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ CTRL+D.

Π­Ρ‚ΠΈ измСнСния ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ постоянными, Π΄ΠΎΠ±Π°Π²ΠΈΠ² описанныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (Π±Π΅Π· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа двоСточия) Π² Ρ„Π°ΠΉΠ» ~/.vimrc.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅


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

25. Начало ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°


Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ приступаСм ΠΊ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ЦСль Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ возмоТности ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ, Ρ‡Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ, для создания Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ напишСм Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². Он Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ систСмС ΠΈ Π΅Π΅ состоянии Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ HTML, благодаря Ρ‡Π΅ΠΌΡƒ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ выполняСтся Π² нСсколько этапов, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ возмоТности. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ HTML-страницу Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапах.

Π­Ρ‚Π°ΠΏ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ: ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚


ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊ выглядит Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сформированного HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

<HTML>

<HEAD>

<TITLE>Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы</TITLE>

</HEAD>

<BODY>

Π’Π΅Π»ΠΎ страницы.

</BODY>

</HTML>

Если ввСсти этот тСкст Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ foo.html, ΠΌΡ‹ смоТСм ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ, ввСдя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ адрСс URL Π² Firefox: file:///home/username/foo.html.

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС создадим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ эту Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ HTML Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ просто. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ создайтС Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ ~/bin/sys_info_page:

[ [email protected] ~]$ vim ~/bin/sys_info_page

А Π·Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

#!/bin/bash

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° страницы с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ систСмС

echo "<HTML>"

echo " <HEAD>"

echo " <TITLE>Page Title</TITLE>"

echo " </HEAD>"

echo " <BODY>"

echo " Page body."

echo " </BODY>"

echo "</HTML>"

Наша пСрвая вСрсия содСрТит строку-шСбанг (shebang), ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ (ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ echo, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. ПослС сохранСния Ρ„Π°ΠΉΠ»Π° сдСлайтС Π΅Π³ΠΎ выполняСмым ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

[ [email protected] ~]$ chmod 755 ~/bin/sys_info_page

[ [email protected] ~]$ sys_info_page

ПослС запуска Π½Π° экранС Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ тСкст HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo Π² сцСнарии ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ свои строки Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. ЗапуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ снова ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„Π°ΠΉΠ» sys_info_page.html, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅:

[ [email protected] ~]$ sys_info_page > sys_info_page.html

[ [email protected] ~]$ firefox sys_info_page.html

Пока всС ΠΈΠ΄Π΅Ρ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ.

Разрабатывая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, всСгда слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ простотС ΠΈ ясности. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ даСтся ΠΏΡ€ΠΎΡ‰Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π»Π΅Π³ΠΊΠΎ читаСтся ΠΈ доступна для понимания, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. ВСкущая вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ. Если ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo Π² ΠΎΠ΄Π½Ρƒ, это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ упростит Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… строк Π² Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

#!/bin/bash

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° страницы с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ систСмС

echo "<HTML>

<HEAD>

<TITLE>Page Title</TITLE>

</HEAD>

<BODY>

Page body.

</BODY>

</HTML>"

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΈ, соотвСтствСнно, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько строк тСкста. Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСкст, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ дСйствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

[ [email protected] ~]$ echo "<HTML>

> <HEAD>

> <TITLE>Page Title</TITLE>

> </HEAD>

> <BODY>

> Page body.

> </BODY>

> </HTML>"

Π‘ΠΈΠΌΠ²ΠΎΠ» > Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки β€” это ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π²Π²ΠΎΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, опрСдСляСмоС Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PS2. Оно появляСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° происходит Π²Π²ΠΎΠ΄ многострочной инструкции. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΠ° ΠΌΠ°Π»ΠΎ понятна, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ познакомимся с многострочными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ инструкциями, Π΅Π΅ прСимущСства станут ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ.

Π­Ρ‚Π°ΠΏ Π²Ρ‚ΠΎΡ€ΠΎΠΉ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° способна ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Для этого внСситС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния:

#!/bin/bash

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° страницы с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ систСмС

echo "<HTML>

<HEAD>

<TITLE>System Information Report</TITLE>

</HEAD>

<BODY>

<H1>System Information Report</H1>

</BODY>

</HTML>"

Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страницы ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π² Ρ‚Π΅Π»Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы


Π’ нашСм сцСнарии Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ строка System Information Report повторяСтся Π΄Π²Π°ΠΆΠ΄Ρ‹? Π’ΠΎΠΎΠ±Ρ‰Π΅, для Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΡ€ΠΎΡ…ΠΎΡ‚Π½ΠΎΠ³ΠΎ сцСнария это Π½Π΅ такая большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎ-настоящСму Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ сцСнарий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта строка повторяСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Если Π² Ρ‚Π°ΠΊΠΎΠΌ сцСнарии понадобится ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, придСтся внСсти измСнСния Π²ΠΎ мноТСствС мСст, Π° это масса Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сцСнарий Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строка ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»Π°ΡΡŒ Π² Π½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·? Π­Ρ‚ΠΎ сущСствСнно упростило Π±Ρ‹ сопровоТдСниС сцСнария Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π”Π°, это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

#!/bin/bash

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° страницы с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ систСмС

title="System Information Report"

echo "<HTML>

<HEAD>

<TITLE>$title</TITLE>

</HEAD>

<BODY>

<H1>$title</H1>

</BODY>

</HTML>"

Π‘ΠΎΠ·Π΄Π°Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ title ΠΈ присвоив Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ System Information Report, ΠΌΡ‹ воспользовались прСимущСствами подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ помСстили строку Π²ΠΎ мноТСство мСст.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ констант


Но ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ? ΠŸΡ€ΠΎΡΡ‚ΠΎ, β€” достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅. Когда командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° встрСчаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ½Π° автоматичСски создаСт Π΅Π΅. Π­Ρ‚ΠΈΠΌ ΠΎΠ½Π° отличаСтся ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… языков программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π΅Π΅ использования. Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° слишком Π»ΠΈΠ±Π΅Ρ€Π°Π»ΡŒΠ½Π° Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ.