variable1=22
variable2=474
variable3=5
variable4=97
message1="ΠΡΠΈΠ²Π΅Ρ! ΠΠ°ΠΊ ΠΏΠΎΠΆΠΈΠ²Π°Π΅ΡΠ΅?"
message2="ΠΠΎΡΠ²ΠΈΠ΄Π°Π½ΠΈΡ!"
print_message ()
{
# ΠΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
if [ -z "$1" ]
then
return 1
# ΠΡΠΈΠ±ΠΊΠ°, Π΅ΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
fi
echo
until [ -z "$1" ]
do
# Π¦ΠΈΠΊΠ» ΠΏΠΎ Π²ΡΠ΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
echo -n "$1"
# ΠΡΠ²ΠΎΠ΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ.
echo -n " "
# ΠΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π΅Π», Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
shift
# ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
done
echo
return 0
}
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΌΡ Π΅Π΄Π²Π° Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠ°ΠΊΠΎΠ΅ Π»ΠΈΠ±ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 11-19. ΠΡΠΈΠΌΠ΅Ρ (Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ) ΡΡΠ΅Π½Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ.
#!/bin/bash
# self-source.sh: ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ."
# ΠΠ· "ΠΠ΅ΡΡΠΎΠ»ΠΊΠΎΠ²ΡΠ΅ ΡΡΡΠΊΠΈ", ΡΠΎΠΌ II.
MAXPASSCNT=100 # ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ².
echo -n "$pass_count "
# ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ Π²ΡΠ²Π΅Π΄Π΅Ρ Π΄Π²Π° ΠΏΡΠΎΠ±Π΅Π»Π°,
#+ Ρ.ΠΊ. $pass_count Π΅ΡΠ΅ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°.
let "pass_count += 1"
# ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $pass_count
#+ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°.
# ΠΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π² Bash ΠΈ pdksh, Π½ΠΎ,
#+ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ,
#+ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΠ°ΡΠ½ΡΠΌ.
# ΠΡΡΡΠΈΠΌ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $pass_count
#+ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°.
while [ "$pass_count" -le $MAXPASSCNT ]
do
. $0 # "ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅" ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ.
# ./$0 (ΠΈΡΡΠΈΠ½Π½Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ) Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
done
# ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π΅ Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ΅ΠΉ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ,
#+ Ρ.ΠΊ. ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΊΠ°ΠΊ Π±Ρ "ΡΠ°ΡΡΠΈΡΡΠ΅Ρ" ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ
#+ (Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½ΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°)
#+ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΡΠΈΠΊΠ»Π° 'while',
#+ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ 'source' Π² ΡΡΡΠΎΠΊΠ΅ 22.
#
# Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° (#!), Π²Π½ΠΎΠ²Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ,
#+ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, Π° Π½Π΅ ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π»ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ (sha-bang)
echo
exit 0 # The net effect is counting from 1 to 100.
# Very impressive.
# Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅:
# ----------
# ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π±Ρ ΡΡΠΎΡ ΡΡΡΠΊ Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ.
exit
ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π΅ exit ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exit 0, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exit Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ ΡΡΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ exit.
exec
ΠΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° shell, Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½ΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exec. ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΎ ΠΎΠ½ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ exec, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ, Π° Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠΌ. ΠΠ»Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ exec. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π²ΡΡΡΠ΅ΡΠΈΡΡΡ exec Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 11-20. ΠΠΎΠΌΠ°Π½Π΄Π° exec
#!/bin/bash
exec echo "ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ \"$0\"." # ΠΡΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ.
# ----------------------------------
# Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΡΠΎΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Ρ
echo "ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΡΠΊΡΠ°Π½."
exit 99 # Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ Π·Π΄Π΅ΡΡ.
# ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ
#+ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ 'echo $?'.
# ΠΠ½ ΡΠΎΡΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ 99.
ΠΡΠΈΠΌΠ΅Ρ 11-21. Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ
#!/bin/bash
# self-exec.sh
echo
echo "ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ, Π½ΠΎ ΠΎΠ½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ°Π· Π·Π° ΡΠ°Π·ΠΎΠΌ."
echo "PID ΠΎΡΡΠ°Π»ΡΡ ΡΠ°Π²Π½ΡΠΌ $$."
# ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° exec Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ.
echo "==================== ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ - Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctl-C ===================="
sleep 1
exec $0 # ΠΠ°ΠΏΡΡΠΊ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ
#+ ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ.
echo "ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π°!" # ΠΠΎΡΠ΅ΠΌΡ?
exit 0
ΠΠΎΠΌΠ°Π½Π΄Π° exec ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊ, ΠΊΠΎΠΌΠ°Π½Π΄Π° exec <zzz-file Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²Π²ΠΎΠ΄Π° (stdin) ΡΠ°ΠΉΠ»ΠΎΠΌ zzz-file (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 16-1).
ΠΠ»ΡΡ -exec ΠΊΠΎΠΌΠ°Π½Π΄Ρ find -- ΡΡΠΎ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° exec.
shopt
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠ»ΡΡΠΈ (ΠΎΠΏΡΠΈΠΈ) ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π½Π° Π»Π΅ΡΡ (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 23-1 ΠΈ ΠΡΠΈΠΌΠ΅Ρ 23-2). ΠΠ΅ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² ΡΡΠ°ΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»Π°Ρ , Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π² ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ . Π’ΡΠ΅Π±ΡΠ΅Ρ Bash Π²Π΅ΡΡΠΈΠΈ 2 ΠΈΠ»ΠΈ Π²ΡΡΠ΅.
shopt -s cdspell
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΈΠΌΠ΅Π½Π°Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ 'cd'
cd /hpme # Oops! ΠΠΌΠ΅Π»ΠΎΡΡ Π²Π²ΠΈΠ΄Ρ '/home'.
pwd # /home
# Shell ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ.
ΠΠΎΠΌΠ°Π½Π΄Ρ
true
ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ -- Π½ΠΎΠ»Ρ, ΠΈΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
# ΠΠ΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»
while true # Π²ΠΌΠ΅ΡΡΠΎ ":"
do
operation-1
operation-2
...
operation-n
# Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°.
done
false
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎ Π½Π΅ΡΠ΄Π°ΡΠ΅, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅.
# Π¦ΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½
while false
do
# Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ Π½ΠΈΠΊΠΎΠ³Π΄Π°.
operation-1
operation-2
...
operation-n
done
type [cmd]
ΠΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Π²Π½Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ which, type cmd Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ "cmd". Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ which, type ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Bash. Π‘ ΠΎΠΏΡΠΈΠ΅ΠΉ -a Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ.
bash$ type '['
[ is a shell builtin
bash$ type -a '['
[ is a shell builtin
[ is /usr/bin/[
hash [cmds]
ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΡΡΡ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ (Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ), Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ, ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΉ, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΏΡΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² $PATH. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ hash Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ. Π‘ ΠΊΠ»ΡΡΠΎΠΌ -r -- ΠΎΡΠΈΡΠ°Π΅Ρ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ.
help
help COMMAND -- Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊΡΠ°ΡΠΊΡΡ ΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ COMMAND. ΠΠ½Π°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρ whatis, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄.
bash$ help exit
exit: exit [n]
Exit the shell with a status of N. If N is omitted, the exit status
is that of the last command executed.
11.1. ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, "ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π°Π΄Π°Π½ΠΈΡ". Π‘ΠΌ. ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Π³Π»Π°Π²Ρ.
jobs
ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΡΠΎΠ½Π΅. ΠΠΎΠΌΠ°Π½Π΄Π° ps Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½Π°.
ΠΠ°Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΡΠ°ΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ kill, disown ΠΈ wait ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π»ΠΈΠ±ΠΎ Π½ΠΎΠΌΠ΅Ρ Π·Π°Π΄Π°Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π½ΠΎΠΌΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠΎΠΌΠ°Π½Π΄Ρ fg, bg ΠΈ jobs ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠΌΠ΅Ρ Π·Π°Π΄Π°Π½ΠΈΡ.