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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux: ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 29

Автор ДСнис ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ

Командой Π² Linux считаСтся всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исполнСно: исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, встроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, псСвдонимы ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ„Π°ΠΉΠ»Ρ‹ сцСнариСв (скрипты) β€” Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² тСкстовом Π²ΠΈΠ΄Π΅. Π”ΠΎ сих ΠΏΠΎΡ€, приводя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄, я Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Π» ΠΈΡ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ, ΠΈ дальшС Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ этого, ΠΊΡ€ΠΎΠΌΠ΅ особых случаСв.

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

Для Linux Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ΠΎΡ‚ нСсколько ΠΈΠ· Π½ΠΈΡ…:

sh Bourne shell, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π‘ΠΎΡ€Π½Π°, стандарт для ΠΌΠ½ΠΎΠ³ΠΈΡ… UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм;

bash Bourne Again shell, Β«Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π‘ΠΎΡ€Π½Π°Β»;

csh Π‘ shell, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π‘ΠΈ: синтаксис Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ языка ΠΏΠΎΡ…ΠΎΠΆ Π½Π° синтаксис языка Π‘;

tcsh tiny Π‘ shell, минимальная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π‘ΠΈ;

pdksh public domain Korn shell, общСдоступная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠšΠΎΡ€Π½Π°;

sash stand-alone shell, автономная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ нСдоступны.

Бписок всСх установлСнных Π² систСмС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ находится Π² Ρ„Π°ΠΉΠ»Π΅ /etc/shells. Π£ мСня ΠΎΠ½ выглядит Ρ‚Π°ΠΊ:

/bin/sh

/bin/bash

/sbin/nologin # это "ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°" для Ρ‚Π΅Ρ…,

              # ΠΊΠΎΠΌΡƒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ Π²Ρ…ΠΎΠ΄ Π² систСму

/bin/ash

/bin/bsh

/bin/ksh

/usr/bin/ksh

/usr/bin/pdksh

/bin/tcsh

/bin/csh

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, запускаСмая для Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈ рСгистрации Π² систСмС, указываСтся Π² Ρ„Π°ΠΉΠ»Π΅ /etc/passwd:

$ grep den /etc/passwd # Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° строки,

                       # содСрТащиС подстроку den

den:x:501:501:Denis:/home/den:/bin/bash

Π’ дальнСйшСм Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΠ±ΠΎΠ΄ΠΎΡ‡ΠΊΡƒ Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· установлСнных (Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ). Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π΅ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ exit. Π’ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ сСанс Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’ любой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сцСнарии, состоящиС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ: пСрвая строка ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сцСнария содСрТит ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π΅Π³ΠΎ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, ΠΈ тСкущая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° запускаСт для Π½Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ назначаСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash. Π­Ρ‚ΠΎ прСкрасная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… свойств Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΠΎΠ΄ΠΎΡ‡Π΅ΠΊ, ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ я Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ. Π’ дальнСйшСм, говоря Β«ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°Β», я Π±ΡƒΠ΄Ρƒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π½ΠΎ bash.

3.4.1. ВстроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Бписок встроСнных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ help ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π½Π° man-страницС Π² сСкции SHELL BUILTIN COMMANDS. Напоминаю, Ρ‡Ρ‚ΠΎ поиск Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ man выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ /<ΠΎΠ±Ρ€Π°Π·Π΅Ρ†><Π’Π²ΠΎΠ΄>, Π° поиск ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ вхоТдСния ΠΎΠ±Ρ€Π°Π·Ρ†Π° β€” ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши <n>.

Π‘ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ help <имя>.

Π’ΠΎΡ‚ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… встроСнных ΠΊΠΎΠΌΠ°Π½Π΄:

♦ alias <псСвдоним> <длинная ΠΊΠΎΠΌΠ°Π½Π΄Π° с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ> β€” Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ псСвдонима. Π‘Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ псСвдонимов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root ΠΊΠΎΠΌΠ°Π½Π΄Π° rm сдСлана псСвдонимом для Β«rm -iΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ Π·Π°Π±Ρ‹Π» Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -i (см.ΠΏ.2.1.4.3). Π’Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ псСвдоним для опасной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ risk, создав сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сначала Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Β«Π° Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹?Β», ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ risk Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π”Π°ΠΉΡ‚Π΅ этому ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ имя risk, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ ΡΡΡ‹Π»Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ risk ΠΏΠΎ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ псСвдоним ΠΈΠ· списка ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ unalias.

♦ echo [Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹] β€” Π²Ρ‹Π²ΠΎΠ΄ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° экран. ПолСзно, Ссли Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ подстановку (ΠΏ.3.4.4) ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ получится.

♦ enable <имя_ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹> β€” заставляСт ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ вмСсто встроСнной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ПолСзно, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ собствСнный сцСнарий ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, echo.

♦ eval [Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹] β€” конструированиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Π»Π΅Ρ‚Ρƒ, ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΅Π΅ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

♦ let <пСрСмСнная>=<арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> β€” вычислСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊ, ΠΊΠΎΠΌΠ°Π½Π΄Π° var= 1 + 2 присвоит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var (см. ΠΏ.3.4.3) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«1 + 2Β», Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° let var=1+2 β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«3Β».

♦ source <Ρ„Π°ΠΉΠ»> β€” ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, содСрТащиСся Π² Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для опрСдСлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΏ.3.4.3).

Π”Ρ€ΡƒΠ³ΠΈΠ΅ встроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слуТат инструкциями ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ языка bash.

3.4.2. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ возмоТностСй для облСгчСния Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ рСдактирования ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Помимо Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ автозаполнСния, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ познакомились Π² ΠΏ.1.1.4.7, bash содСрТит ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ истории. Π‘ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1000) Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ доступны для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° β€” Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ с Π½ΠΈΠΌΠΈ.

Команда history Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, нумСруя ΠΏΡ€ΠΈ этом ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² порядкС ΠΈΡ… Π²Π²ΠΎΠ΄Π°.

Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдниС нСсколько ΠΊΠΎΠΌΠ°Π½Π΄:

$ history 23 # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ послСдниС 23 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° public:

$ history | grep mount | grep public

# Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°

НомСра ΠΊΠΎΠΌΠ°Π½Π΄ выводятся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ снова ввСсти эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π½Π°Π±Ρ€Π°Π²

$ ! <Π½ΠΎΠΌΠ΅Ρ€>

ΠΈΠ»ΠΈ

$ !! # запускаСт послСднюю ΠΈΠ· Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄

ΠΈΠ»ΠΈ

$ !<ΠΏΠ΅Ρ€Π²Ρ‹Π΅_Π±ΡƒΠΊΠ²Ρ‹> # запускаСт послСднюю ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄,

# Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ с этих Π±ΡƒΠΊΠ².

Π‘Ρ‚Ρ€Π΅Π»ΠΊΠΈ Β«Π²Π²Π΅Ρ€Ρ…Β» ΠΈ Β«Π²Π½ΠΈΠ·Β» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ истории, Π½Π΅ отправляя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° вводя Π΅Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку для рСдактирования.

ПослСднюю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ для вас ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сама ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°. Для этого вмСсто ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

$ ^Ρ‡Ρ‚ΠΎ_Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ^Ρ‡Π΅ΠΌ_Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

НапримСр, Π²Ρ‹ запросили справку ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ bash: man bash. Если сразу послС этого Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ справку ΠΏΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ csh, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вмСсто man csh Π½Π°Π±Ρ€Π°Ρ‚ΡŒ

$ ^ba^c

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ подстроки Β«Ρ‡Ρ‚ΠΎ_Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ».

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ послСднюю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ more), Π²Π²Π΅Π΄ΠΈΡ‚Π΅

$ !! | more

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

ОписаниС ΠΈ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Как любой язык программирования, ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ язык bash ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’ΠΈΠΏ ΠΈΡ… β€” строковый. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания выглядит Ρ‚Π°ΠΊ:

$ <имя_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ>=<Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅>

Имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Π±ΡƒΠΊΠ²Ρ‹ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· латинских Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€, Π·Π½Π°ΠΊΠ° подчСркивания. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ содСрТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм (см. ΠΏ. 2.1.1).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ подстановки значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ обозначаСтся символом $ (Π½Π΅ ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ с ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ΠΌ bash). ВывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ echo:

$ cwd=/home/den/MyDownloads/packages

$ echo cwd # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

cwd

$ echo $cwd # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

/home/den/MyDownloads/packages

УстановлСнныС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встроСнным ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ bash. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ стали доступны Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ процСссам (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌ сцСнариям, запускаСмым ΠΈΠ·-ΠΏΠΎΠ΄ bash), ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ bash. ДСлаСтся это ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ export:

$ export HELLO="Hello from environment!" # ΠΏΡ€ΠΎΠ±Π΅Π» Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, создайтС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ сцСнарий, выводящий значСния Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Для записи сцСнария ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой Ρ„Π°ΠΉΠ» ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ASCII-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏ.2.1.4 ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cat:

$ cat > myscript

echo Env variable: $HELLO

echo Local variable: $hello # ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ Π² рСгистрС?

# Π­Ρ‚ΠΎ другая пСрСмСнная.

^D

$

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ клавиш Ctrl+D Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Π²ΠΎΠ΄ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», ΠΈ Π²Ρ‹ снова Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Ρ„Π°ΠΉΠ» сцСнария Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ исполняСмым (ΠΏ.2.1.4):