22
ΠΡΠ»ΠΈ $parameter "ΠΏΡΡΡΠΎΠΉ",Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ , ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° 127 ("command not found").
23
ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ (shell), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ while, case ΠΈ Ρ.ΠΏ. -- ΡΠ²Π»ΡΡΡΡΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
24
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» -- ΠΊΠΎΠΌΠ°Π½Π΄Π° time, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Bash Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ.
25
ΠΠΏΡΠΈΡ -- ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½, Π»ΠΈΠ±ΠΎ Π²ΡΠΊΠ»ΡΡΠ΅Π½. ΠΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΉ (ΠΊΠ»ΡΡΠ΅ΠΉ), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅..
26
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/share/doc/bash-?.??/functions.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΊΠ»ΡΡ -f ΠΊΠΎΠΌΠ°Π½Π΄Ρ enable ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
27
Π’ΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ typeset -fu.
28
Π‘ΠΊΡΡΡΡΠΌΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΎΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ~/.Xdefaults. Π’Π°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ls, ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ rm -rf *. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΊΡΡΡΡΠΌΠΈ Π΄Π΅Π»Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
29
ΠΡΠΎ Π²Π΅ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ GNU-Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ tr, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ UNIX-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
30
ΠΠΎΠΌΠ°Π½Π΄Π° tar czvf archive_name.tar.gz * Π²ΠΊΠ»ΡΡΠΈΡ Π² Π°ΡΡ ΠΈΠ² Π²ΡΠ΅ ΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ (ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΎΡΠΊΠΈ) ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΡΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ "ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ" GNU-Π²Π΅ΡΡΠΈΠΈ tar.
31
ΠΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Ρ "ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ", ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ pgp.
32
ΠΠ΅ΠΌΠΎΠ½ -- ΡΡΠΎ Π½Π΅ΠΊΠΈΠΉ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΈΠΉ. ΠΠ΅ΠΌΠΎΠ½Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° Π·Π°Π΄Π°Ρ Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
Π‘Π»ΠΎΠ²ΠΎ "Π΄Π΅ΠΌΠΎΠ½" ("daemon"), Π² Π³ΡΠ΅ΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΈΡΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠ»ΠΎΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ·ΡΠ°ΠΊΠΎΠ², Π΄ΡΡ ΠΎΠ², ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΌΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ, ΡΠ²Π΅ΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ. Π ΠΌΠΈΡΠ΅ UNIX -- ΠΏΠΎΠ΄ ΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π΅ΠΌΠΎΠ½ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ "ΡΠΈΡ ΠΎ" ΠΈ "Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ" Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
33
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ -- ΡΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ· Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Debian Linux.
34
ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠ΅ΡΠ°ΡΠΈ -- ΡΡΠΎ Π³ΡΡΠΏΠΏΠ° Π·Π°Π΄Π°Π½ΠΈΠΉ "ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°" Π½Π° ΠΏΡΠΈΠ½ΡΠ΅Ρ.
35
ΠΡΠ° ΡΠ΅ΠΌΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½Π° Π² ΡΡΠ°ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π» Andy Vaught, Introduction to Named Pipes, Π² ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 1997 Π΄Π»Ρ Linux Journal.
36
EBCDIC (ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ "ebb-sid-ic") -- ΡΡΠΎ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° ΠΎΡ Extended Binary Coded Decimal Interchange Code (Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΠ²ΠΎΠΈΡΠ½ΠΎ-ΠΠ΅ΡΡΡΠΈΡΠ½ΡΠΉ ΠΠΎΠ΄ ΠΠ±ΠΌΠ΅Π½Π° ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ). ΠΡΠΎ ΡΠΎΡΠΌΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΡ IBM, Π½Π΅ Π½Π°ΡΠ΅Π΄ΡΠΈΠΉ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ conv=ebcdic -- ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ dd Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ, Π½ΠΎ ΡΠ»Π°Π±ΠΎΠ³ΠΎ, ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
cat $file | dd conv=swab,ebcdic > $file_encrypted
# ΠΠ°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ "Π°Π±ΡΠ°ΠΊΠ°Π΄Π°Π±ΡΠ°".
# ΠΎΠΏΡΠΈΡ swab Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π΅ΡΠ°Π·Π±Π΅ΡΠΈΡ ΠΈ.
cat $file_encrypted | dd conv=swab,ascii > $file_plaintext
# ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
37
ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ -- ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
38
ΠΠΎΠΌΠ°Π½Π΄Π° userdel Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, Π΅ΡΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
39
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ², Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΠ»Π΅ΠΊΡΠ° Π£ΠΈΠ·Π΅ΡΠ° (Alex Wither): Creating CDs, Π² ΠΎΠΊΡΡΠ±ΡΡΡΠΊΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΠΆΡΡΠ½Π°Π»Π° Linux Journal Π·Π° 1999 Π³ΠΎΠ΄.
40
Π£ΡΠΈΠ»ΠΈΡΠ° mke2fs, Ρ ΠΊΠ»ΡΡΠΎΠΌ -c, ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ².
41
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ , Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ Linux-ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΏΠΎΠΏΡΠΎΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ tar.
42
NAND -- Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ "Π-ΠΠ". Π ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΠΎΠ½Π° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅.
43
ΠΠ°ΠΌΠ΅ΡΠ°ΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ (Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ) ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
44
Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π° -- ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΠΉΠ».
45
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 5 ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΠ³Π΄Π° Bash ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exec, ΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ 5 ΠΊΠ°ΠΊ "ΠΎΡΠΊΡΡΡΡΠΉ" (ΡΠΌ. Π°ΡΡ ΠΈΠ² ΠΏΠΎΡΡΡ Π§Π΅ΡΠ° Π Π°ΠΌΠ΅Ρ (Chet Ramey), SUBJECT: RE: File descriptor 5 is held open) ΠΠΎΡΡΠΎΠΌΡ, Π»ΡΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ.
46
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΡΡΠΎΠΊΡ, Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
47
[47]ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ sed, awk ΠΈ grep ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π ΡΠ΅Ρ ΠΆΠ΅ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π·Π±ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°, ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ» "ΡΠΎΡΠΊΠ°" Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ.
#!/bin/bash
sed -e 'N;s/.*/[&]/' << EOF # ΠΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
line1
line2
EOF
# OUTPUT:
# [line1
# line2]
echo
awk '{ $0=$1 "\n" $2; if (/line.1/) {print}}' << EOF
line 1
line 2
EOF
# OUTPUT:
# line
# 1
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
exit 0
48
ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΠΊΠΈΡ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ²Π½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅.
~/[.]bashrc # ΠΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ~/.bashrc
~/?bashrc # Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
# ΠΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ².
~/.[b]ashrc # ΠΠΌΡ ~./bashrc Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ
~/.ba?hrc # ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ.
~/.bashr* # ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ.
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠ»ΡΡΠ° "dotglob" ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
49
ΠΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ, ΡΡΠΎ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ (Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»), ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ Π½Π΅ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
50
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 34-2) ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½Π΅ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
#!/bin/bash
ITERATIONS=3 # ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
icount=1
my_read () {
# ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ my_read varname,
# Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ,
# Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΈΡ Π²Π²Π΅ΡΡΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
local local_var
echo -n "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ "
eval 'echo -n "[$'$1'] "' # ΠΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
read local_var
[ -n "$local_var" ] && eval $1=\$local_var
# ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ "And-list": Π΅ΡΠ»ΠΈ "local_var" Π½Π΅ ΠΏΡΡΡΠ°, ΡΠΎ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² "$1".
}
echo
while [ "$icount" -le "$ITERATIONS" ]
do
my_read var
echo "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ #$icount = $var"
let "icount += 1"
echo
done
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Stephane Chazelas Π·Π° ΡΡΠΎΡ ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
exit 0
51
ΠΠΎΠΌΠ°Π½Π΄Π° return -- ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Bash.
52
Herbert Mayer ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ, ΠΊΠ°ΠΊ "...ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°..." Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ.
53
Π‘Π»ΠΈΡΠΊΠΎΠΌ Π³Π»ΡΠ±ΠΎΠΊΠ°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΡΠ°Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ.
#!/bin/bash
recursive_function ()
{
(( $1 < $2 )) && recursive_function $(( $1 + 1 )) $2;
# Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ 1-ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ,
#+ ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ, ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠΈΡ, Π²ΡΠΎΡΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
}
recursive_function 1 50000 # ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΡΠΈΠΈ = 50,000!
# Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ -- Segmentation fault.
# Π Π΅ΠΊΡΡΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ "ΠΎΠ±ΡΡΡΠΈΡΡ" Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° C,
#+ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠ°.
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
exit 0 # ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π½Π΅ Π·Π΄Π΅ΡΡ, Π° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Segmentation fault.
54
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΠΌΠΎΠ³ΡΡ "ΡΠ°ΡΠΊΡΡΡΠΈΠ²Π°ΡΡ" ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
55
ΠΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°ΠΌ, ΠΊΠ°ΠΊ csh, tcsh ΠΈ Π΄ΡΡΠ³ΠΈΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΠΎΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Bourne shell (sh).