ΠΡΠΊΡΡΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ
ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΎΠ΄Π½Π°ΠΊΠΎ, Π±ΡΡΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ, ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ ΡΠ°ΡΠΊΡΡΠ²Π°Ρ ΠΌΡΠ΄ΡΠΎΡΡΡ ΠΈ ΠΊΡΠ°ΡΠΎΡΡ UNIX. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π±Π½ΠΈΠΊ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° shell. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ½Π°Π±ΠΆΠ΅Π½ΠΎ ΡΠ΅ΡΠΈΠ΅ΠΉ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΡΡΡΠΈΠΉ ΠΏΡΡΡ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² -- ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
Advanced Bash-Scripting Guide
ΠΠ²ΡΠΎΡ: ΠΠ΅Π½Π΄Π΅Π»Ρ ΠΡΠΏΠ΅Ρ (Mendel Cooper [email protected])
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄: ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΈΡΠ΅Π»Π΅Π² < [email protected]>
ΠΠΎΡΠ²ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΡΠ²ΡΡΠ°Π΅ΡΡΡ ΠΠ½ΠΈΡΠ΅ -- ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΡ
Π§Π°ΡΡΡ 1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Shell -- ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°. ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΡΡΠΎ Π΅ΡΠ΅ ΠΈ ΠΌΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ shell Π½Π°Π·ΡΠ²Π°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΠΌΠΈ, ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΠ· ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΈΠ»ΠΈΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ UNIX. ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΠΎ ΠΊ Π²Π°ΡΠΈΠΌ ΡΡΠ»ΡΠ³Π°ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ shell -- ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΏΡ., ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΠΌΠΎΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². Shell-ΡΠΊΡΠΈΠΏΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΄Ρ., ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ²Π΅ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»Π°Π²Π° 1. ΠΠ°ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Shell?
ΠΠ½Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°Π»ΠΎΠ³ΠΎΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². ΠΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Linux Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈΠ· /etc/rc.d, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ΡΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ Π²Π½ΠΎΡΠΈΡΡ Π² Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Π―Π·ΡΠΊ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π»Π΅Π³ΠΎΠΊ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ, Π² Π½Π΅ΠΌ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ. [ 1 ]Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ ΠΈ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅Π΅Π½, ΠΎΠ½ ΠΎΡΠ΅Π½Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠΎΡΠΎΡΠΊΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅, ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠ° Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ Π²Π΅ΡΡΠΌΠ° Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Shell-ΡΠΊΡΠΈΠΏΡΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ² ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ "ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ". Π’Π°ΠΊΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ "Π»ΠΎΠ²ΡΡΠΊΠΈ" ΠΈ Π»ΠΈΡΡ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° C, C++, Java, ΠΈΠ»ΠΈ Perl.
Π‘ΠΊΡΠΈΠΏΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½Π°Ρ ΠΊ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ UNIX -- "ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°Π²ΡΡΠ²ΡΠΉ" Ρ.Π΅. ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ΡΡΠ΄ ΠΏΡΠΎΡΡΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΠΈΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² -- "Π²ΡΠ΅-Π²-ΠΎΠ΄Π½ΠΎΠΌ", ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Perl.
ΠΠ»Ρ ΠΊΠ°ΠΊΠΈΡ Π·Π°Π΄Π°Ρ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΡΠΊΡΠΈΠΏΡΡ
Π΄Π»Ρ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈΡ Π·Π°Π΄Π°Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΠΏΠΎΠΈΡΠΊ, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ Ρ.ΠΏ.)
Π΄Π»Ρ Π·Π°Π΄Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π» (Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ Π·Π°Π΄Π°Ρ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C++ ΠΈΠ»ΠΈ FORTRAN)
Π΄Π»Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠ·ΡΠΊ C)
Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ (ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Ρ.ΠΏ.)
Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΡΡ Π·Π°Π΄Π°Ρ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΡΠΏΠ΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ.
ΠΊΠΎΠ³Π΄Π° Π²ΠΎ Π³Π»Π°Π²Ρ ΡΠ³Π»Π° ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°ΡΠΈΡΠΈΡΡ Π΅Π΅ ΠΎΡ Π²ΡΠΎΡΠΆΠ΅Π½ΠΈΡ, Π²Π·Π»ΠΎΠΌΠ° ΠΈ Π²Π°Π½Π΄Π°Π»ΠΈΠ·ΠΌΠ°.
Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ.
Π΄Π»Ρ Π·Π°Π΄Π°Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
Π΄Π»Ρ Π·Π°Π΄Π°Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ΅Π²ΡΡ
ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ (GUI)
ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±ΠΌΠ΅Π½ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅ΡΡ
ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Π΄Π»Ρ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΡ , "Π·Π°ΠΊΡΡΡΡΡ " ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΠΊΡΠΈΠΏΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠ±ΠΎΠ·ΡΠ΅Π½ΠΈΡ)
ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΡΠΎ Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Perl, Tcl, Python, Ruby ΠΈΠ»ΠΈ ΠΊ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ -- C, C++ ΠΈΠ»ΠΈ Java. ΠΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ shell ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ.
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ BASH -- ΡΡΠΎ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° ΠΎΡ "Bourne-Again Shell" ΠΈ ΠΈΠ³ΡΠ° ΡΠ»ΠΎΠ² ΠΎΡ, ΡΡΠ°Π²ΡΠ΅Π³ΠΎ ΡΠΆΠ΅ ΠΊΠ»Π°ΡΡΠΈΠΊΠΎΠΉ, "Bourne Shell" Π‘ΡΠ΅ΡΠ΅Π½Π° ΠΡΡΠ½Π° (Stephen Bourne). Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ BASH Π΄ΠΎΡΡΠΈΠ³ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΡΡΠ°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ de facto Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ UNIX. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° BASH ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Korn Shell (ksh), ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Bash ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ[ 2 ], ΠΈ C Shell ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ . (ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ C Shell Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·-Π·Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π’ΠΎΠΌΠΎΠΌ ΠΡΠΈΡΡΠΈΠ°Π½ΡΠ΅Π½ΠΎΠΌ (Tom Christiansen) Π² ΠΎΠΊΡΡΠ±ΡΠ΅ 1993 Π³ΠΎΠ΄Π° Π½Π° Usenet post
ΠΠ°Π»Π΅Π΅, Π² ΡΠ΅ΠΊΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ shell. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ -- ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅. ΠΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅. Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅ΡΡ "ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ" Ρ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ, Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ scriptname.sh.[ 3 ] ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²ΡΠ΄Π°ΡΡ ΡΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (chmod u+rx scriptname), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Ρ ΡΠ΅Π±Ρ -- ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ.
Π‘ΠΊΡΠΈΠΏΡΡ Π±ΡΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π°Π²ΡΠΎΡΠΎΠΌ ΠΊΠ½ΠΈΠ³ΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΠΎΠ΅.
ΠΠ»Π°Π²Π° 2. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎ Sha-Bang
Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠΊΡΠΈΠΏΡ -- ΡΡΠΎ Π½ΠΈ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ». Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΡΡΡ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ 2-1. cleanup: Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»ΠΎΠ² Π² /var/log
# cleanup
# ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° root.
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "ΠΠΎΠ³-ΡΠ°ΠΉΠ»Ρ ΠΎΡΠΈΡΠ΅Π½Ρ."
ΠΠ΄Π΅ΡΡ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π±ΡΠ°Π½Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π² xterm. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· Π½Π°Π±ΠΈΡΠ°ΡΡ ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΡΠΈΠΏΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ 2-2. cleanup: Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ.
#!/bin/bash
# cleanup, version 2
# ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° root.
LOG_DIR=/var/log
ROOT_UID=0 # Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ $UID 0 ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root.
LINES=50 # ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΡ ΡΡΡΠΎΠΊ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
E_XCD=66 # ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³?
E_NOTROOT=67 # ΠΡΠΈΠ·Π½Π°ΠΊ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ root-ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° root."
exit $E_NOTROOT
fi
if [ -n "$1" ]
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
then
lines=$1
else
lines=$LINES # ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
fi
# Stephane Chazelas ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅,
#+ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ,
#+ ΠΏΡΠ°Π²Π΄Π° ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°.
#
# E_WRONGARGS=65 # ΠΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ
#
# case "$1" in
# "" ) lines=50;;
# *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
# * ) lines=$1;;
# esac
#