mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт

Консоль для маководов: Beyond the GUI

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

БСгодня я расскаТу ΠΊΠ°ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Mac OS X Π·Π° счёт использования консоли.mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. image loader. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

ЛиричСскоС отступлСниС

Если Π’Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΈΠ· ΠΌΠΈΡ€Π° M$, Ρ‚ΠΎ для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹ ΠΏΠΎΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ shell’Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π²ΠΎΡ‚ этому ΡƒΡ‡Π΅Π±Π½ΠΎΠΌΡƒ пособию. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΈ способы запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ скриптов.

Если Π’Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² ΠΌΠΈΡ€ Mac OS ΠΈΠ· ΠΌΠΈΡ€Π° Linux’Π° ΠΈ FreeBSD, Ρ‚ΠΎ, скорСС всСго, Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ основы shell-скриптинга. Но ΠΈ для вас Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ интСрСсноС, вСдь Π² ΠΌΠ°ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ.

Π’ΠΎΡ‚ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… особСнностях маковской консоли Π΄Π°Π»Π΅Π΅ ΠΈ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Начнём Ρ€Π°Π±ΠΎΡ‚Ρƒ

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. image loader. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!
Для Π½Π°Ρ‡Π°Π»Π° избавимся ΠΎΡ‚ стандартного Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Ну, Ρ‚ΠΎΡ‡Π½Π΅Π΅, поставим Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅. Π― Π»ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ iTerm2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΡƒΠ΄Π° Π»ΡƒΡ‡ΡˆΠ΅ систСмного. Π₯отя, ΠΈ Ρƒ Π½Π΅Π³ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ интСрСсныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ (см. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π²Π²Π΅Ρ€Ρ…Ρƒ).

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, поэтому устанавливаСм MacPorts (хотя, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр, ставим Midnight Commander (ΠΎΠ½ Π² любом случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ), Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ Π² iTerm2:

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΡƒΡ€ΠΈ ΠΌΠ°Π½ΡƒΠ°Π»Ρ‹ Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ понятно, Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ Π² консоли man ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. (ΠšΡΡ‚Π°Ρ‚ΠΈ, для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· просмотра ΠΌΠ°Π½ΡƒΠ°Π»Π° Π½Π°Π΄ΠΎ просто Π½Π°ΠΆΠ°Ρ‚ΡŒ Q).

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ знакомство с консолью. Команда open

И β€” ΠΎΠΏΠ°! β€” скрытый Ρ„Π°ΠΉΠ» открылся Π² TextEdit! Всё ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ просто.

ΠŸΠ°Ρ€Π° слов ΠΎ Π±Π°Π½Π΄Π»Π°Ρ…

Бпособ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΈ консоль Π±ΡƒΠ΄Π΅Ρ‚ свободна для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствий.

Бпособ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, интСрСсный:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Π½ΠΎ консоль Π½Π΅ освобидится β€” ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ вывСсти Π² Π½Π΅Ρ‘. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π»ΠΎΠ³ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

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

Π‘ΠΊΡ€ΠΈΠΏΡ‚?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ, Π½ΠΎ ΠΎΠ½ дСмонстрируСт Π³Π»Π°Π²Π½ΠΎΠ΅: Π² скриптах сокрыта вСликая сила.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ AppleScript

НС Π±ΡƒΠ΄Ρƒ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² AppleScript, ΠΎΠ½ заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΠ΄Π½ΠΎΠΉ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ справку ΠΈΠ»ΠΈ Π³ΡƒΠ³Π» ΠΏΠΎ Π½Π΅ΠΌΡƒ.

Π“Π»Π°Π²Π½ΠΎΠ΅: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ shell-скрипты со скриптами AppleScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ максимальной гибкости Π² Ρ€Π°Π±ΠΎΡ‚Π΅! К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΎΡ‚ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ скрипты для автоматичСской стилизации ΠΎΠ±Ρ€Π°Π·Π° диска: сам диск создаётся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ shell (см. Π½ΠΈΠΆΠ΅), Π° Ρ„ΠΎΠ½ ΠΈ располоТСниС элСмСнтов Π² ΠΎΠ±Ρ€Π°Π·Π΅ задаётся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AppleScript.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Automator, Π½ΠΎ ΠΎΠ½ совсСм ΡƒΠΆ GUI-ΡˆΠ½Ρ‹ΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π΅Π³ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ бСссмыслСнно. Он, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ, Π½ΠΎ Π΄ΠΎ ΠΌΠΎΡ‰ΠΈ консоли Π½Π΅ дотягиваСт.

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Mac OS X

ΠŸΠΎΠ»Π½Ρ‹ΠΉ (Π½Ρƒ, ΠΏΠΎΡ‡Ρ‚ΠΈ) список ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… для макоси ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ (хотя свСдСния Ρ‚Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ устарСли), я ΠΆΠ΅ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ расскаТу ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ интСрСсных.

Одна Π±Π΅Π΄Π° β€” ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ эта ΡˆΡ‚ΡƒΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ-английски.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ снимСм ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ· консоли.

Π’Π°ΠΊ ΠΆΠ΅ textutil ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π€Π°ΠΉΠ½Π΄Π΅Ρ€ автоматичСски пСрСзапустится ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ скрытыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ! Но ΠΎΠΏΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈ, это Π½Π΅ всСм нравится, Ρ‚Π°ΠΊ Π΄Π°Π²Π°ΠΉΡ‚Π΅ это Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠΌ, ΠΏΠΎΠΊΠ° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ испугался ΠΈΠ»ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ» Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΈΠΊΠΎΠ². Для сокрытия Π² ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ 0 вмСсто 1. Ну ΠΈ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ссылка Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π³Π΄Π΅ описано ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΠΊΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π§Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Ну Ρ‡Ρ‚ΠΎ ΠΆ, ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСрСсныС возмоТности консоли Π² Mac OS X. Π‘Ρ‚Π°Ρ‚ΡŒΡ, разумССтся, Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ ΠΈ являСтся, скорСС, Β«Π·Π°ΠΌΠ°Π½ΡƒΡ…ΠΎΠΉΒ» для вовлСчСния ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄ΠΎΠ² Π² shell-скриптинг Π΄Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π² консоль.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. apple2. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-apple2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° apple2. Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!Developer

Mac Automation Scripting Guide

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. . mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

Creating a Script

Generally, most scripts are written in Script Editor documents. Scripts can also be written in Xcode, but this is typically for scripts that require advanced user interfaces.

Press Command-N or select File > New.

If the script isn’t configured for the correct language, choose the language in the navigation bar.

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. script. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-script. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° script. Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

Write your script code in the editing area. Newly written code is uncompiled and formatted as new text.

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. . mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

Click the Compile button ( ) to compile the script and check for syntax errors.

If a syntax error occurs, an alert is displayed.

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. . mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

If the script compiles, code formatting is applied at this time.

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. . mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

Using an AppleScript Template

Script Editor includes a number of built-in templates for creating common types of AppleScripts, including droplets, Mail rule scripts, and Messages handler scripts.

Script Editor does not include JavaScript templates at this time.

Choose File > New from Template.

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. . mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

Select a script template.

A new Script Editor document window opens containing prewritten code and preconfigured settings. The following screenshot shows an example of a script created using a template.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΈΠ½Π³ для Mac OS X: Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° AppleSсriΡ€t

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Из этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚Ρ‹ ΡƒΠ·Π½Π°Π΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ AppleScript, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΊΠΎΠΌΡƒ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ прилоТСния ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² свои.

Автоматизируй это

Часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ языкС Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ. НапримСр, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ быстро ΡΠ»Π΅ΠΏΠΈΡ‚ΡŒ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” Π±Π΅Π· всяких GUI-ΡƒΠΊΡ€Π°ΡˆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСвозмоТных ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ. Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ приходят языки сцСнариСв β€” извСстныС Ρ‚Π΅Π±Π΅ shell, Perl, PHP ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ВсС ΠΎΠ½ΠΈ (Π½Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всС) доступны ΠΈ ΠΏΠΎΠ΄ Mac OS X. Но Π² этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½ΠΊΠ΅ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ общСпринятым скриптовым языкам Π΅ΡΡ‚ΡŒ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык сцСнариСв, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Mac OS X ΠΈ тСсно с Π½Π΅ΠΉ связанный. Π­Ρ‚ΠΎ AppleScript.

AppleScript ΠΈΠ΄Π΅Ρ‚ вмСстС с систСмой начиная с System 7. Π’Ρ‹Ρ€ΠΎΡΡˆΠΈΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° HyperCard (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТал скриптовый язык HyperTalk, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° СстСствСнный английский), AppleScript ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создавался для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для управлСния Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ сторонних ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Π°ΠΌ ΠΏΠΎ сСбС AppleScript ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ довольно скромной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ: Π½Π° этом языкС Π΄Π°ΠΆΠ΅ сцСнарии для выполнСния ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простых Π·Π°Π΄Π°Ρ‡ часто выглядят ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ прилоТСниям. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, послС сущСствСнной пСрСстройки систСмы ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠΊΠ΅ Mac OS X язык AppleScript стал Π±ΠΎΠ»Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ, Π° Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Cocoa ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² свои прилоТСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AppleScript’а с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ усилиями.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ сцСнарий

Для рСдактирования ΠΈ исполнСния скриптов ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный Script Editor. Найти Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ /Application/AppleScript. Для Π½Π°Ρ‡Π°Π»Π° напишСм простой Β«HelloWorld’ный» скрипт.

display alert «Hello World!» # ПокаТСм Π΄ΠΈΠ°Π»ΠΎΠ³
say «Hello World» # Π’Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ

ΠžΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚, Π΄ΡƒΠΌΠ°ΡŽ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ хочСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ простой доступ ΠΊ синтСзатору Ρ€Π΅Ρ‡ΠΈ ΠΈΠ· AppleScript c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ say. Π’ΠΎΡ‚ это ΠΈ Π΅ΡΡ‚ΡŒ настоящСС ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² стилС Apple :). ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, этот Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ:

ПанСль с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ

display alert «Hello World!» buttons <"Hello", "Bye">
set answer to button returned of the result
if answer is «Hello» then
.
else
.
end if

Π’Π΅ΠΏΠ΅Ρ€ΡŒ напишСм Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. НапримСр, Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ содСрТимоС:

# ПанСль Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π°
set theFile to (choose file with prompt «Select a file to read:» of type <"TEXT">)
open for access theFile

Π§ΠΈΡ‚Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚

set fileContents to (read theFile)
close access theFile

На этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²ΠΈΠ΄Π½Π° основная идСя AppleScript β€” ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΆΠΈΠ²ΠΎΠΌΡƒ английскому языку. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ скрипты Π»Π΅Π³ΠΊΠΎ Π΄Π°ΠΆΠ΅ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π΄Π°Π»Π΅ΠΊΠΎΠ³ΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π°Π³Π»Π°Π³ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

ВзаимодСйствиС c прилоТСниями

Для взаимодСйствия с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прилоТСниями AppleScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сообщСний:

tell application «Microsoft Word»
quit
end tell

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ tell Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ просим MS Word Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ. Π’ Π±Π»ΠΎΠΊΠ΅ Β«tell β€” end tellΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ любоС количСство ΠΊΠΎΠΌΠ°Π½Π΄. БообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ спСцифичными. ВсС зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. iTunes, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, экспортируСт довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ свойств Π² срСду AppleScript:

ЗапускаСм Π½ΡƒΠΆΠ½Ρ‹ΠΉ плСйлист Π² iTunes

tell application «iTunes»
play the playlist named «My Favorite»
end tell

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅Π±Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с классами ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ экспортируСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Ρ‹. ВсС прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ скриптинг, ΠΈΠΌΠ΅ΡŽΡ‚ хотя Π±Ρ‹ Π΄Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π°: ΠΎΠ΄ΠΈΠ½ стандартный ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ спСцифичных для Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» содСрТит Π½Π°Π±ΠΎΡ€ стандартных ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ любоС Mac-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: open, print, close ΠΈ quit. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² зависит ΠΎΡ‚ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ AppleScript ΠΈΠ· своСго прилоТСния

Если Ρ‚Ρ‹ пишСшь ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Objective-C/Cocoa, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AppleScript. Для создания ΠΈ выполнСния Π² Cocoa-прилоТСниях скриптов сущСствуСт класс NSAppleScript. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ использования β€” рСализация получСния Ρƒ прилоТСния iChat строки статуса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

NSAppleScript *iChatGetStatusScript = nil;
iChatGetStatusScript = [[NSAppleScript alloc] initWithSource: @»tell application «iChat» to get status message»];
NSString *statusString = [[iChatGetStatusScript executeAndReturnError:&errorDict] stringValue];

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ созданный Π²ΠΎ врСмя выполнСния скрипт, Π½ΠΎ вряд Π»ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ этот. Если скрипты большиС, ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² рСсурсах Π±Π°Π½Π΄Π»Π° ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости.

Автоматизация Π² Cocoa-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° scriptTermonology отобраТаСтся Π² Script Editor’С ΠΏΡ€ΠΈ просмотрС словаря прилоТСния. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит описаниС экспортируСмых Π² AppleScript ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΡ‚ΠΊΡ€Ρ‹Π² scriptSuite-Ρ„Π°ΠΉΠ» Π² Plist Editor’С, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Ρ€Π°Π·Π΄Π΅Π»Ρ‹:

Π Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство этих Ρ„Π°ΠΉΠ»ΠΎΠ² особого смысла Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅Π±Π΅ скорСС всСго придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с sdef-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ sdef-Ρ„Π°ΠΉΠ»Π°

.
NSAppleScriptEnabled
OSAScriptingDefinition
Scrtipting.sdef

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ„Π°ΠΉΠ» Scripting.sdef ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания:

Π˜Ρ‚Π°ΠΊ, ΠΈΠ· AppleScript’а Ρƒ нас доступно ΠΎΠ΄Π½ΠΎ свойство β€” myprop. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ObjC-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ свойства ΠΈΠ· скриптов. Для этого Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ NSApplication, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ этот класс ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π² качСствС получатСля сообщСний ΠΎΡ‚ скриптов.

Eсли ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ· AppleScript обратимся ΠΊ свойствам нашСго прилоТСния, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ срСди Π½ΠΈΡ… своС свойство ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

tell application «Scripting»
properties
end tell

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ здСсь всС возмоТности AppleScript ΠΈ Π΅Π³ΠΎ взаимодСйствия с Cocoa-прилоТСниями Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π”Π° это ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ β€” для этого Π΅ΡΡ‚ΡŒ ΠΌΠ°Π½ΡƒΠ°Π»Ρ‹. А ΠΌΡ‹ со своСй стороны ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ†ΠΈΠΊΠ» статСй ΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³Π΅ ΠΏΠΎΠ΄ эппловскиС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ расскаТСм Ρ‚Π΅Π±Π΅ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ интСрСсного.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Π² Mac OS ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сцСнарии

mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. kak v mac os samostoyatelno sozdavat komandnye scenarii. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Ρ„ΠΎΡ‚ΠΎ. mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт-kak v mac os samostoyatelno sozdavat komandnye scenarii. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° mac os ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° kak v mac os samostoyatelno sozdavat komandnye scenarii. Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ дня, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ…Π°Π±Ρ€Π°Π²Ρ‡Π°Π½Π΅-ΠΌΠ°ΠΊΠΎΠ²ΠΎΠ΄Ρ‹!

ΠžΡΠ²ΠΎΠΈΡ‚ΡŒ символы шаблона ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JPEG, хранящихся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, достаточно Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ-Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΎΠΊΠ½Π΅ Terminal:

1$ grep Devanshu *.doc

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строку (листинг Π½ΠΈΠΆΠ΅).

1234// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строкуBinary file BBoAH-04-Commandline.doc matchesBinary file BBoAH-06-Network-file.doc matchesBinary file BBoAH-14-Multimedia.doc matches

Grep β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ поиск ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ строки ΠΏΠΎ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ довольно слоТныС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ символов, Π² Ρ‚ΠΎΠΌ числС ΠΈ символов шаблона, для описания искомой строки. ИспользованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (regular expressions) позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ искомыС строки с использованиСм Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… символов, Π° Ρ‚Π°ΠΊΠΆΠ΅ классов Π±ΡƒΠΊΠ² ΠΈ Ρ†ΠΈΡ„Ρ€. НапримСр, описаниС [sS]hell позволяСт Π½Π°ΠΉΡ‚ΠΈ вхоТдСния shell ΠΈ Shell, Π° описаниС [a-z]+ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΡƒΠΊΠ² Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ описаниС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: man grep.

ΠŸΡ€ΠΈ использовании ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ grep ΠΈ find ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ Spotlight, с Ρ‚Π΅ΠΌ лишь нСдостатком, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Однако Π΅ΡΡ‚ΡŒ Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ своС прСимущСство β€” ΠΎΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТныС искомыС строки, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Spotlight. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ списка всСх Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащихся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°), содСрТащих ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ стандартов ISO:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° find ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ сортировку ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, выдСляСт Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ grep, которая ΠΈΡ‰Π΅Ρ‚ Π² Π½ΠΈΡ… строку ISO, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько Ρ†ΠΈΡ„Ρ€. Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ строку ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚ΠΎ Π²ΠΎΡ‚ Π²Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ. На самом Π΄Π΅Π»Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ постоянно, Π½ΠΎ Π½Π΅ Π²Π²ΠΎΠΆΡƒ Π΅Π΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это дСлаСтся? Π”Π°Π»Π΅Π΅ я расскаТу, ΠΊΠ°ΠΊ этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ псСвдонимы

Π’ срСдС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа запоминания ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… строк: псСвдонимы (aliases) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (variables). ПсСвдоним β€” это сокращСнноС имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ постоянно. НапримСр, я создаю ΠΏΠ°ΠΏΠΊΠΈ для хранСния тСкстов ΠΊΠ½ΠΈΠ³, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ, ΠΈ Ρ…Ρ€Π°Π½ΡŽ ΠΈΡ… Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Π³ΠΎΠ΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΊΠ½ΠΈΠ³. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½, Π½ΠΎ постоянно Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅

/ tech/08/oreilly/applehacks/draft довольно Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я воспользовался ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ для создания псСвдонима:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΠ½Π΅ трСбуСтся ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (variables), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ всСм своСм удобствС, псСвдонимы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния. НапримСр, для получСния Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΡ… возмоТностСй, я Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² листингС.

123// ΠŸΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…$ export WORK=

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΌΠΎΠ³Ρƒ ввСсти ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Набор ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ постоянно, ΠΈ называСтся вашим ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ срСдой (environment). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ вСсь Π½Π°Π±ΠΎΡ€ Π²Π°ΡˆΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ псСвдонимы ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Π°ΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ограничиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашим Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° исслСдования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ позволят Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для сСбя Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ срСду.

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сцСнарии

Π― лСнтяй. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для Π²Ρ‹Π²ΠΎΠ΄Π° всСх Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ стандартов ISO, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π½Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π΅? И ΠΊΡ‚ΠΎ ΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚, Π½ΠΎ ΡƒΠΆ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ я. Π”Π° ΠΈ Π²Π°ΠΌ это Ρ‚ΠΎΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСбольшой тСкстовый Ρ„Π°ΠΉΠ», выглядящий Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ этот Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, findfile, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Ρ‡Ρ‚ΠΎ исполнСниС ΠΊΠΎΠΌΠ°Π½Π΄, содСрТащихся Π² этом Ρ„Π°ΠΉΠ»Π΅, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ:

1$ chmod +x findfile

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ я помСстил ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ» findfile Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, я Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ³Ρƒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сцСнарий, ввСдя ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ сцСнарии с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈ условными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ

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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ выполняСтС Ρ€Π°Π±ΠΎΡ‚Ρƒ для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, которая ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΈ ΠΏΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большоС количСство Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° XML с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ встрСчаСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·. Π’ ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠΉ случай Π±Ρ‹Π», ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 120, поэтому пСрспСктива ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ рСдактирования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… мСня Π½Π΅ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я написал ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ сцСнарий, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² листингС Π½ΠΈΠΆΠ΅.

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ сцСнарий, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 4.6, цикличСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹, примСняя ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sed. Команда sed β€” это Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ полСзная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° UNIX, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ. Sed прСдставляСт собой Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ примСняСтся для выполнСния простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°ΠΌΠ΅Π½Ρ‹, которая автоматичСски замСняСт всС вхоТдСния строки oldName Π½Π° строку NewName.

Sed (Stream EDitor) β€” это ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΈ языком программирования. Он примСняСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ тСкстовыС прСобразования ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ»Ρƒ), Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² sed-скриптС, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²Ρ‹Π²ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ. Sed являСтся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ срСдством, Ρ‡Ρ‚ΠΎ заслуТиваСт ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния. Помимо man-страницы sed, рСкомСндуСтся ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ страницы Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ: http://en.wikipedia.org/wiki/Sed (Π°Π½Π³Π».) ΠΈ http://ru.wikipedia.org/wiki/Sed (рус.) ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Ρ‚Π°ΠΌ ссылкам.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС Π²Ρ‹ΡˆΠ΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π° grep ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»Π° строку OldName. Благодаря этому, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² этом Π½ΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ.

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

По ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ bash ΠΈ прСдоставляСмым Сю возмоТностям программирования написаны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ большиС ΠΊΠ½ΠΈΠ³ΠΈ. Π•ΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… руководств ΠΈ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ языкам ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сцСнариСв, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Perl ΠΈ Python. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности, Ρ‡Π΅ΠΌ прСдоставляСмыС bash, Ρ‚ΠΎ, скорСС всСго, смоТСтС Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ своих Ρ†Π΅Π»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих языков.

Π˜ΡΡ‚ΠΈΠ½Π½Π°Ρ ΠΌΠΎΡ‰ΡŒ программирования с использованиСм языков ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сцСнариСв Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ для вас Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π²Ρ‹ сами Π² это врСмя ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π²ΠΎΡ€Ρ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΡ‚Π΄Ρ‹Ρ…Π°Ρ‚ΡŒ, ΠΎΠ±Π΅Π΄Π°Ρ‚ΡŒ ΠΈ Ρ‚. ΠΏ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π΅Ρ‰Π΅ дальшС ΠΈ сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π΄Π°ΠΆΠ΅ запускался автоматичСски.

Mac OS X прСдоставляСт Ρ†Π΅Π»Ρ‹Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способа достиТСния этой Ρ†Π΅Π»ΠΈ β€” Π΄Π²Π° старомодных, принятых Π² Ρ‚Π΅ Π³ΠΎΠ΄Ρ‹, ΠΊΠΎΠ³Π΄Π° UNIX Π±Ρ‹Π»Π° Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, ΠΈ Π΄Π²Π° соврСмСнных, Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для Mac.

Π‘Ρ‚Π°Ρ€ΠΎΠΌΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматичСски Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΈ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ at. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ скрипт ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, test.sh. НС Π½Π°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ просто test, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это β€” встроСнноС имя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ, ΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄ΠΎΠ»Π³ΠΎ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²Ρƒ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ скрипт Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Если Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ творчСского, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² листингС.

1234// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ скрипт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² качСствС // ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° для запуска ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ#!/bin/bashecho Β«helloΒ» >>trash.txt

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ chmod +x, ΡƒΠΊΠ°Π·Π°Π² Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° имя Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

Когда Π²Ρ‹ запускаСтС эту Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ строку hΠ΅llo Π² состав Ρ„Π°ΠΉΠ»Π° trash.txt. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот сцСнарий, Π΄Π°Π², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

1$ at –f test.sh 1735

ПослС этого Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ, ΠΊΠΎΠ³Π΄Π° наступит 17:35, ΠΈ посмотритС Π½Π° Ρ„Π°ΠΉΠ» trash.txt.

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш скрипт запускался рСгулярно? Π’ этом случаС ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ cron. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° cron ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ для просмотра Ρ„Π°ΠΉΠ» crontab, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ автоматичСски Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ cron, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» crontab. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π΄Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Terminal (листинг Π½ΠΈΠΆΠ΅).

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ откроСтся сСанс рСдактирования ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° nano, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ экран Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ пустой Ρ„Π°ΠΉΠ». ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° строку Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со списком ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² nano.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ символ ^ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Control, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ^G соотвСтствуСт Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ctrl+G.

Π€Π°ΠΉΠ» crontab содСрТит строку, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ врСмя, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π² это врСмя. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС Π½ΠΈΠΆΠ΅.

ΠŸΠ΅Ρ€Π²Π°Ρ строка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ cron, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, запускаСмая этой строкой, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· 15 ΠΌΠΈΠ½ΡƒΡ‚ послС наступлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ часа. Вторая строка сообщаСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ cron ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ запускаСмая этой строкой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 12:30. Π’Ρ€Π΅Ρ‚ΡŒΡ строка сообщаСт, Ρ‡Ρ‚ΠΎ запускаСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² 12:35 Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца, Π° чСтвСртая β€” Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² 12:40 ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ дСнь. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° nano, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ctrl+X ΠΈ Π΄Π°ΠΉΡ‚Π΅ ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запрос ΠΎ Ρ‚ΠΎΠΌ, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ внСсСнныС измСнСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½ΠΈΠ΅ исполняСтся, Π² Π²Ρ‹Π²ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠ΄Π½Π° строка, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° процСссом.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° crontab, ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π΄Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Из Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ руководства Π²Ρ‹ смоТСтС ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² crontab.

НовыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ автоматичСского запуска сцСнариСв

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, связанная с использованиСм Ρ„Π°ΠΉΠ»Π° crontab, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ постоянно остаСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ. ЕстСствСнно, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, запускаСмая Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cron, Π½Π΅ смоТСт Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ запуск этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Как Π±Ρ‹Ρ‚ΡŒ, Ссли Ρƒ вас имССтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½). ΠŸΡ€ΠΈ этом, Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ окаТСтся Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ, Π²Π°ΠΌ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ исполнСно сразу ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ (ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ ΠΏΡ€ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Π½ΠΈΠΉ β€” это Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅). Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° способа выполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ваш сцСнарий Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /etc/periodic. Π’Π°ΠΊΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² всСго Ρ‚Ρ€ΠΈ β€” daily, weekly ΠΈ monthly.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Π°ΠΌ придСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· старомодных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *