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

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

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

bash$ sleep 100 &

[1] 1384


bash $ jobs

[1]+ Running sleep 100 &


"1" -- это Π½ΠΎΠΌΠ΅Ρ€ задания (ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ заданиями осущСствляСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€), Π° "1384" -- Π½ΠΎΠΌΠ΅Ρ€ процСсса (ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами осущСствляСтся систСмой). Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅/процСсс ("ΠΏΡ€ΠΈΡ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒ") ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ kill %1, Π»ΠΈΠ±ΠΎ kill 1384.

Бпасибо S.C.

disown

УдаляСт Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

fg, bg

Команда fg ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· Ρ„ΠΎΠ½Π° Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½. Команда bg пСрСзапускаСт приостановлСнноС Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Если эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π±Π΅Π· указания Π½ΠΎΠΌΠ΅Ρ€Π° задания, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π΅ΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅.

wait

ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ сцСнария Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ всС Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅/процСсс с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ задания/PID процСсса. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ задания/процСсса.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ wait для прСдотвращСния ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сцСнария Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-22. ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ

#!/bin/bash


ROOT_UID=0 # Волько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с $UID = 0 ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root.

E_NOTROOT=65

E_NOPARAMS=66


if [ "$UID" -ne "$ROOT_UID" ]

then

echo "Для запуска этого сцСнария Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ привилСгиями root."

exit $E_NOTROOT

fi


if [ -z "$1" ]

then

echo "ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ использования: `basename $0` имя-Ρ„Π°ΠΉΠ»Π°"

exit $E_NOPARAMS

fi


echo "ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ΡΡ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… 'locate'..."

echo "Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя."

updatedb /usr & # Π”ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root.


wait

# Π’ этом мСстС сцСнарий приостанавливаСт свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 'updatedb'.

# Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск Ρ„Π°ΠΉΠ»Π°.


locate $1


# Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС, Π±Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ wait, сцСнарий Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Π±Ρ‹ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ,

# ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π° Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° 'updatedb',

# сдСлав ΠΈΠ· Π½Π΅Π΅ "ΠΎΡΠΈΡ€ΠΎΡ‚Π΅Π²ΡˆΠΈΠΉ" процСсс.


exit 0

Команда wait ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -- Π½ΠΎΠΌΠ΅Ρ€ задания/процСсса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, wait %1 ΠΈΠ»ΠΈ wait $PPID. Π‘ΠΌ. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ.

ΠŸΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ„ΠΎΠ½Π΅ ΠΈΠ· сцСнария ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° сцСнарий приостанавливаСт свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° клавиша ENTER. Π­Ρ‚ΠΎ, каТСтся, происходит с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° stdout. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

#!/bin/bash

# test.sh


ls -l &

echo "Done."

bash$ ./test.sh

Done.

[ [email protected] test-scripts]$ total 1

-rwxr-xr-x 1 bozo bozo 34 Oct 11 15:09 test.sh

_


РазмСстив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ wait, послС запуска Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сцСнария.

#!/bin/bash

# test.sh


ls -l &

echo "Done."

wait

bash$ ./test.sh

Done.

[ [email protected] test-scripts]$ total 1

-rwxr-xr-x 1 bozo bozo 34 Oct 11 15:09 test.sh

ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° устройство /dev/null Ρ‚Π°ΠΊΠΆΠ΅ снимаСт эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

suspend

ДСйствуСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш Control+-Z, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° приостанавливаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

logout

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ сСанс Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

times

Π’Ρ‹Π΄Π°Π΅Ρ‚ статистику исполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

0m0.020s 0m0.020s

Π˜ΠΌΠ΅Π΅Ρ‚ вСсьма ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ сфСру примСнСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сцСнарии ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

kill

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ процСсса ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅ΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сигнала (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 13-4).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-23. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ сСбя сам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ kill

#!/bin/bash

# self-destruct.sh


kill $$ # Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ сСбя сам.

# НадСюсь Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ, Ρ‡Ρ‚ΠΎ "$$" -- это PID сцСнария.


echo "Π­Ρ‚Π° строка Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π°."

# ВмСсто Π½Π΅Π³ΠΎ Π½Π° stdout Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС "Terminated".


exit 0


# Какой ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Π΅Ρ€Π½Π΅Ρ‚ сцСнарий?

#

# sh self-destruct.sh

# echo $?

# 143

#

# 143 = 128 + 15

# сигнал TERM

Команда kill -l Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх сигналов. Команда kill -9 -- это "ТСсткий kill", ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΡˆΠΈΡ… процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΠΎΡ€Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ "ΡƒΠΌΠΈΡ€Π°Ρ‚ΡŒ", отвСргая простой kill. Иногда достаточно ΠΏΠΎΠ΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kill -15. "ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹-Π·ΠΎΠΌΠ±ΠΈ", Ρ‚.Π΅. процСссы, "Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ" ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ "ΡƒΠ±ΠΈΡ‚Ρ‹" Ρ‚Π°ΠΊΠΈΠΌ способом (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ "ΡƒΠ±ΠΈΡ‚ΡŒ" "ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ"), Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ с Π½ΠΈΠΌΠΈ "расправится" процСсс init.

command

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° command COMMAND Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ использованиС псСвдонимов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "COMMAND".

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, которая влияСт Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²Π΅ -- builtin ΠΈ enable.

builtin

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ builtin BUILTIN_COMMAND запускаСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "BUILTIN_COMMAND", Π½Π° врСмя запрСщая использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСмных ΠΊΠΎΠΌΠ°Π½Π΄ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

enable

Π›ΠΈΠ±ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚, Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр, enable -n kill Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ использованиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ kill, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ встрСтит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kill, Ρ‚ΠΎ ΠΎΠ½ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ внСшнюю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kill, Ρ‚.Π΅. /bin/kill.

Команда enable -a Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, указывая для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ -- Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°. Команда enable -f filename Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (DLL) ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°[ 26 ].

autoload

ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠ΅Π½Π° Π² Bash ΠΈΠ· ksh. Если функция объявлСна ΠΊΠ°ΠΊ autoload, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈΠ· внСшнСго Ρ„Π°ΠΉΠ»Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°[ 27 ]. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ систСмныС рСсурсы.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: autoload Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ядра Bash. Π•Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ enable -f (см. Π²Ρ‹ΡˆΠ΅).

Π’Π°Π±Π»ΠΈΡ†Π° 11-1. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ

Нотация ОписаниС %N НомСр задания [N] %S Π’Ρ‹Π·ΠΎΠ² (командная строка) задания, которая начинаСтся со строки S %?S Π’Ρ‹Π·ΠΎΠ² (командная строка) задания, которая содСрТит строку S %% "Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅" Π·Π°Π΄Π°Π½ΠΈΠ΅ (послСднСС Π·Π°Π΄Π°Π½ΠΈΠ΅ приостановлСнноС Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² Ρ„ΠΎΠ½Π΅) %+ "Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅" Π·Π°Π΄Π°Π½ΠΈΠ΅ (послСднСС Π·Π°Π΄Π°Π½ΠΈΠ΅ приостановлСнноС Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² Ρ„ΠΎΠ½Π΅) %- ПослСднСС Π·Π°Π΄Π°Π½ΠΈΠ΅ $! ПослСдний Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ процСсс

Π“Π»Π°Π²Π° 12. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹

Благодаря стандартизации Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ UNIX-систСм, сцСнарии, Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ пСрСнСсСны ΠΈΠ· систСмы Π² систСму практичСски Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠœΠΎΡ‰ΡŒ сцСнариСв складывСтся ΠΈΠ· Π½Π°Π±ΠΎΡ€Π² систСмных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ с простыми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ конструкциями.


12.1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ

ls

Команда Π²Ρ‹Π²ΠΎΠ΄Π° "списка" Ρ„Π°ΠΉΠ»ΠΎΠ². МногиС Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ всю ΠΌΠΎΡ‰ΡŒ этой скромной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -R, рСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΠΌΠ°Π½Π΄Π² ls Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ряд Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (ΠΎΠΏΡ†ΠΈΠΉ) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls: -S -- сортировка ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ², -t -- сортировка ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСй ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈ -i -- Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΈΡ… inode (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-3).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ оглавлСния диска для записи CDR, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls