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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

#* ΠšΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°


cd $LOG_DIR


if [ `pwd` != "$LOG_DIR" ] # ΠΈΠ»ΠΈ if [ "$PWD" != "$LOG_DIR" ]

# НС в /var/log?

then

echo "НСвозмоТно ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ $LOG_DIR."

exit $E_XCD

fi # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΠ΅Ρ€Π΅Π΄ очисткой Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»ΠΎΠ².


# Π±ΠΎΠ»Π΅Π΅ эффСктивный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

#

# cd /var/log || {

# echo "НСвозмоТно ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³." >&2

# exit $E_XCD;

# }


tail -$lines messages > mesg.temp # Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ послСдниС строки Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π΅.

mv mesg.temp messages


# cat /dev/null > messages

#* ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ΠΏΠ°Π»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ очистка выполняСтся Π²Ρ‹ΡˆΠ΅.


cat /dev/null > wtmp # ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ': > wtmp' ΠΈ '> wtmp' ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСкт.

echo "Π›ΠΎΠ³-Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹."


exit 0

# Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0

#+ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сцСнария.

Если Π²Ρ‹ Π½Π΅ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Ρ‡ΠΈΡ‰Π°Ρ‚ΡŒ систСмныС Π»ΠΎΠ³ΠΈ, Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ прСдставлСна ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ вСрсия ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ сцСнария. Π—Π΄Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ послСдниС нСсколько строк (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ -- 50).

Если Ρ„Π°ΠΉΠ» сцСнария начинаСтся с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ #!, которая Π² ΠΌΠΈΡ€Π΅ UNIX называСтся sha-bang, Ρ‚ΠΎ это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ систСмС ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для исполнСния сцСнария. Π­Ρ‚ΠΎ двухбайтовая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠ»ΠΈ[ 4 ] -- ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ сцСнария, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС -- сцСнарий ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ (см. man magic). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ, sha-bang опрСдСляСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся для исполнСния сцСнария, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° (shell), ΠΈΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°[ 5 ].

#!/bin/sh

#!/bin/bash

#!/usr/bin/perl

#!/usr/bin/tcl

#!/bin/sed -f

#!/usr/awk -f


КаТдая, ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ сигнатур, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ /bin/sh -- ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (bash для Linux-систСм), Π»ΠΈΠ±ΠΎ ΠΈΠ½ΠΎΠΉ[ 6 ]. ΠŸΡ€ΠΈ пСрСносС сцСнариСв с сигнатурой #!/bin/sh Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ UNIX систСмы, Π³Π΄Π΅ Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π·Π°Π΄Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ shell, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΡˆΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… особСнностСй, присущих bash. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ сцСнарии Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ POSIX совмСстимыми[ 7 ].

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сигнатура Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС -- ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это "Command not found".

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° #! ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π°, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ спСцифичных ΠΊΠΎΠΌΠ°Π½Π΄. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (см. Π²Ρ‹ΡˆΠ΅) использованиС сигнатуры #! ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сцСнарий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ присваивания значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ lines=50. Π•Ρ‰Π΅ Ρ€Π°Π· Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ сигнатура #!/bin/sh Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ -- /bin/bash Π² Linux-систСмах.

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

if [ $# -ne Number_of_expected_args ]

then

echo "Usage: `basename $0` whatever"

exit $WRONG_ARGS

fi


2.1. Запуск сцСнария

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сцСнарий ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sh scriptname[ 8 ] ΠΈΠ»ΠΈ bash scriptname. (НС рСкомСндуСтся запуск сцСнария ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sh <scriptname>, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ использованиС устройства стандартного Π²Π²ΠΎΠ΄Π° stdin Π² скриптС). Π‘ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ -- ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» скрипта исполняСмым, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod.

Π­Ρ‚ΠΎ:

chmod 555 scriptname (Π²Ρ‹Π΄Π°Ρ‡Π° ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/исполнСниС Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² систСмС)[ 9 ]

ΠΈΠ»ΠΈ

chmod +rx scriptname (Π²Ρ‹Π΄Π°Ρ‡Π° ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/исполнСниС Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² систСмС)

chmod u+rx scriptname (Π²Ρ‹Π΄Π°Ρ‡Π° ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/исполнСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ "Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ" скрипта)


ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ сдСлаСтС Ρ„Π°ΠΉΠ» сцСнария исполняСмым, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ./scriptname.[ 10 ] Если, ΠΏΡ€ΠΈ этом, тСкст сцСнария начинаСтся с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ сигнатуры ("sha-bang"), Ρ‚ΠΎ для Π΅Π³ΠΎ исполнСния Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ² ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ сцСнария, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/local/bin (СстСствСнно, Ρ‡Ρ‚ΠΎ для этого Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π°ΠΌΠΈ root), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ доступным для сСбя ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ систСмы. ПослС этого сцСнарий ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, просто Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡˆΡƒ [ENTER].


2.2. УпраТнСния

1. БистСмныС администраторы часто ΡΠΎΠ·Π΄Π°ΡŽΡ‚ скрипты для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ своСго Ρ‚Ρ€ΡƒΠ΄Π°. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, для выполнСния ΠΊΠ°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны сцСнарии.

2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Ρ‚Ρƒ, врСмя, список Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠΈΡ…ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ uptime систСмы ΠΈ сохраняСт эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² систСмном ΠΆΡƒΡ€Π½Π°Π»Π΅.

Π§Π°ΡΡ‚ΡŒ 2. ΠžΡΠ½ΠΎΠ²Ρ‹

Π“Π»Π°Π²Π° 3. Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ символы

Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² тСкстах сцСнариСв.

#

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа # (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ #!) -- ΡΠ²Π»ΡΡŽΡ‚ΡΡ коммСнтариями.

# Π­Ρ‚Π° строка -- ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ строки с исполняСмым ΠΊΠΎΠ΄ΠΎΠΌ.

echo "Π”Π°Π»Π΅Π΅ слСдуСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ." # Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (ΠΏΡ€ΠΎΠ±Π΅Π», табуляция).

# ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ стоит символ табуляции.


Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ самой строкС. Пока Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт способа отдСлСния коммСнтария ΠΎΡ‚ "исполняСмого ΠΊΠΎΠ΄Π°", ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС.

Π‘Π°ΠΌΠΎ собой разумССтся, экранированный символ # Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ echo Π½Π΅ воспринимаСтся ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² опСрациях подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π² константных числовых выраТСниях.

echo "Π‘ΠΈΠΌΠ²ΠΎΠ» # Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария."

echo 'Π‘ΠΈΠΌΠ²ΠΎΠ» # Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария.'

echo Π‘ΠΈΠΌΠ²ΠΎΠ» \# Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария.

echo А здСсь символ # ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария.


echo ${PATH#*:} # ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° -- Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

echo $(( 2#101011 )) # Π‘Π°Π·Π° систСмы счислСния -- Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.


# Бпасибо, S.C.

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ " ' ΠΈ \ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ дСйствиС символа #.

Π’ опСрациях поиска ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ символ # Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ воспринимаСтся ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария.

;

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄. [Π’ΠΎΡ‡ΠΊΠ°-с-запятой] ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС.

echo hello; echo there


Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ символ ";" ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ # Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

;;

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹Π±ΠΎΡ€Π° case . [Двойная-Ρ‚ΠΎΡ‡ΠΊΠ°-с-запятой]

case "$variable" in

abc) echo "$variable = abc" ;;

xyz) echo "$variable = xyz" ;;

esac


.

ΠΊΠΎΠΌΠ°Π½Π΄Π° "Ρ‚ΠΎΡ‡ΠΊΠ°". Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ source (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-18). Π­Ρ‚ΠΎ встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° bash.

.

"Ρ‚ΠΎΡ‡ΠΊΠ°" ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° . Если имя Ρ„Π°ΠΉΠ»Π° начинаСтся с Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚ΠΎ это "скрытый" Ρ„Π°ΠΉΠ», Ρ‚.Π΅. ΠΊΠΎΠΌΠ°Π½Π΄Π° ls ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… условиях Π΅Π³ΠΎ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚.

bash$ touch .hidden-file

bash$ ls -l

total 10

-rw-r--r-- 1 bozo 4034 Jul 18 22:04 data1.addressbook

-rw-r--r-- 1 bozo 4602 May 25 13:58 data1.addressbook.bak

-rw-r--r-- 1 bozo 877 Dec 17 2000 employment.addressbook


bash$ ls -al

total 14

drwxrwxr-x 2 bozo bozo 1024 Aug 29 20:54 ./

drwx------ 52 bozo bozo 3072 Aug 29 20:51 ../

-rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.addressbook

-rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.addressbook.bak

-rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.addressbook

-rw-rw-r-- 1 bozo bozo 0 Aug 29 20:54 .hidden-file


Если подразумСваСтся имя ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Ρ‚ΠΎ ΠΎΠ΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ -- ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅, ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

bash$ pwd

/home/bozo/projects


bash$ cd .

bash$ pwd

/home/bozo/projects


bash$ cd ..

bash$ pwd

/home/bozo/


Π‘ΠΈΠΌΠ²ΠΎΠ» Ρ‚ΠΎΡ‡ΠΊΠ° довольно часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° назначСния Π² опСрациях копирования/пСрСмСщСния Ρ„Π°ΠΉΠ»ΠΎΠ².

bash$ cp /home/bozo/current_work/junk/* .


Π‘ΠΈΠΌΠ²ΠΎΠ» "Ρ‚ΠΎΡ‡ΠΊΠ°" Π² опСрациях поиска. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ поиска ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ , Π² рСгулярных выраТСниях, символ "Ρ‚ΠΎΡ‡ΠΊΠ°" ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ.