ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Shebangs: ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Bash ΠΈ Python ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² Linux ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅
ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°Π»ΠΈ shell ΠΈΠ»ΠΈ Python ΡΠΊΡΠΈΠΏΡ Π½Π° Linux ΠΈ Π·Π°Π΄Π°Π²Π°Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β ΠΎΡΠ²Π΅Ρ ΠΊΡΠΎΠ΅ΡΡΡ Π² ΠΊΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ, Π½ΠΎ ΠΌΠΎΡΠ½ΠΎΠΉ Π΄Π²ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² Π½Π°ΡΠ°Π»Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°: shebang (#!).
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΡΡΠ΅Π΄Π΅ VPS Hosting, ΠΈΠ»ΠΈ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ shebangs, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ Linux, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ: ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ shebangs, ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Bash ΠΈ Python ΡΠΊΡΠΈΠΏΡΠ°Ρ , ΠΈ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡ Π»ΡΠ±ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΎΡ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Shebang (#!)?
A shebang (ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ *sha-bang*, *hashbang* ΠΈΠ»ΠΈ *pound-bang*) β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΠ°Ρ Π² ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ½Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΄ΡΡ Linux, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ:
#!/path/to/interpreterΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π±Π°ΠΉΡΠ° ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ ΠΎΠ½Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡ #!, ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ» ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π² ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠ΅Π· shebang ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΎΡΠΊΠ°Π·Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Shebang
| Π’ΠΈΠΏ ΡΠΊΡΠΈΠΏΡΠ° | Π‘ΡΡΠΎΠΊΠ° Shebang |
|---|---|
| Bash | #!/bin/bash |
| POSIX Shell | #!/bin/sh |
| Python 3 | #!/usr/bin/env python3 |
| Python 2 (legacy) | #!/usr/bin/env python2 |
| Perl | #!/usr/bin/perl |
| Ruby | #!/usr/bin/env ruby |
| Node.js | #!/usr/bin/env node |
ΠΠΎΡΠ΅ΠΌΡ /usr/bin/env Π²Π°ΠΆΠ΅Π½
ΠΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΠ΅ ΡΠ΅Π±Π°Π½Π³ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΡΠΈΠ»ΡΡ :
#!/bin/python3Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ:
#!/usr/bin/env python3ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»Π΅Π½. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ:
- ΠΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΡ: Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
python3ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ Linux, macOS ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ BSD./usr/bin/envΠΈΡΠ΅Ρ Π²$PATHΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. - ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ Python (
venv),/usr/bin/env python3Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Python Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ. - ΠΡΠ΄ΡΡΠ°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ: ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½, ΡΠΊΡΠΈΠΏΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅
env, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΏΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, #!/bin/bash), β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π³Π΄Π΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ $PATH ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΈΡΠΊΠΎΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Shebang Π² Bash ΡΠΊΡΠΈΠΏΡΠ°Ρ : ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Bash ΡΠΊΡΠΈΠΏΡΠ° Ρ Π½ΡΠ»Ρ.
Π¨Π°Π³ 1: ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
ΠΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· SSH ΠΊ Π²Π°ΡΠ΅ΠΌΡ Linux ΡΠ΅ΡΠ²Π΅ΡΡ.
Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Bash ΡΠΊΡΠΈΠΏΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ nano, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»:
nano myscript.shΠ¨Π°Π³ 3: ΠΠΎΠ±Π°Π²ΡΡΠ΅ Shebang ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΊΡΠΈΠΏΡΠ°
Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡΠΎΠΊΡ shebang, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°:
#!/bin/bash
# A simple greeting script
echo "Hello, World!"
echo "Current date and time: $(date)"
echo "Running as user: $(whoami)"Π¨Π°Π³ 4: Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π²ΡΠΉΠ΄ΠΈΡΠ΅
Π nano Π½Π°ΠΆΠΌΠΈΡΠ΅ CTRL + X, Π·Π°ΡΠ΅ΠΌ Y, Π·Π°ΡΠ΅ΠΌ Enter ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈ Π·Π°ΠΊΡΡΡΡ ΡΠ°ΠΉΠ».
Π¨Π°Π³ 5: Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ chmod:
chmod +x myscript.shΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
ls -l myscript.shΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ²ΠΎΠ΄, ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π°:
-rwxr-xr-x 1 user user 112 Jun 10 14:32 myscript.shΠ¨Π°Π³ 6: ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°:
./myscript.shΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²ΡΠ²ΠΎΠ΄:
Hello, World!
Current date and time: Tue Jun 10 14:32:01 UTC 2025
Running as user: youruser> ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ΅ΡΠΈΠΊΡ ./ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΈΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² $PATH, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Shebangs Π² Python ΡΠΊΡΠΈΠΏΡΠ°Ρ : ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ
Python ΡΠΊΡΠΈΠΏΡΡ ΡΠ»Π΅Π΄ΡΡΡ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ, Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ shebang.
Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Python ΡΠΊΡΠΈΠΏΡΠ°
nano myscript.pyΠ¨Π°Π³ 2: ΠΠΎΠ±Π°Π²ΡΡΠ΅ Shebang ΠΈ ΠΊΠΎΠ΄ Python
#!/usr/bin/env python3
# A simple Python script demonstrating shebang usage
import sys
import platform
print("Hello from Python!")
print(f"Python version: {sys.version}")
print(f"Platform: {platform.system()} {platform.release()}")Π¨Π°Π³ 3: Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅, Π²ΡΠΉΠ΄ΠΈΡΠ΅ ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ
# Save and exit nano with CTRL+X, Y, Enter
chmod +x myscript.pyΠ¨Π°Π³ 4: ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ
./myscript.pyΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Hello from Python!
Python version: 3.11.2 (main, Mar 13 2023, 12:18:29)
Platform: Linux 5.15.0-76-genericΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ python3 β shebang Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ±ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ shebang Π² ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΈΡΡΠΈΠ½Π½ΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ.
Bash: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
#!/bin/bash
# Automated backup script for web files
BACKUP_DIR="/var/backups/webfiles"
SOURCE_DIR="/var/www/html"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
echo "Backup completed: $BACKUP_FILE"Python: Π‘ΠΊΡΠΈΠΏΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π΄ΠΎΡΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ
#!/usr/bin/env python3
import shutil
import psutil
def check_disk_usage(path="/"):
total, used, free = shutil.disk_usage(path)
percent_used = (used / total) * 100
print(f"Disk Usage ({path}): {percent_used:.1f}% used")
if percent_used > 85:
print("WARNING: Disk usage is critically high!")
def check_memory():
mem = psutil.virtual_memory()
print(f"Memory Usage: {mem.percent}% used")
check_disk_usage()
check_memory()ΠΡΠΈ ΡΠΈΠΏΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π±Π΅ΡΡΠ΅Π½Π½Ρ ΠΏΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ Shared Web Hosting ΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° Dedicated Servers.
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Shebang: ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ Ρ shebang, ΡΠ΄ΡΠΎ Linux Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π§ΠΈΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
#!. - ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (ΠΈ Π»ΡΠ±ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ) ΠΈΠ· ΡΡΡΠΎΠΊΠΈ shebang.
- ΠΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠ°ΠΉΠ» ΡΠΊΡΠΈΠΏΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ./myscript.py Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ:
/usr/bin/env python3 ./myscript.pyΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ shebang Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ β Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ shebang.
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π΅Π· Shebang?
ΠΡΠ»ΠΈ shebang ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ:
- ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ
./script.py, ΡΠ΅ΠΊΡΡΠ°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Bash) ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ Π΄Π»Ρ ΠΊΠΎΠ΄Π° Python. - ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ
python3 script.py, shebang Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β Python ΡΠΊΠ°Π·Π°Π½ ΡΠ²Π½ΠΎ. - ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ
bash script.sh, shebang ΡΠ½ΠΎΠ²Π° ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.
Shebang ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΡΡΠΌΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ° (Ρ. Π΅. ΠΊΠ°ΠΊ ./script).
ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Shebang
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ»Π°Π³ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΎΠΊΡ shebang:
#!/bin/bash -eΠ€Π»Π°Π³ -e Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Bash Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠΉΡΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ β ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ production-ΡΠΊΡΠΈΠΏΡΠΎΠ².
#!/usr/bin/env python3 -uΠ€Π»Π°Π³ -u ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² Python, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
> ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π² ΡΡΡΠΎΠΊΠ΅ shebang. ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π»ΡΡΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, set -euo pipefail Π² Bash).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ env Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ
#!/usr/bin/env python3.11ΠΡΠΎ Π½Π°ΡΠ΅Π»Π΅Π½ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Python, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ , Π³Π΄Π΅ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ.
ΠΠΎΠ»ΠΈΠ³Π»ΠΎΡΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΈΡΡΡ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . Shebang ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ. Π₯ΠΎΡΡ ΡΡΠΎ Π½ΠΈΡΠ΅Π²Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΎΠ½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ shebang.
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊ Shebang
Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠΌ Π»ΡΡΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²Π°ΡΠΈ ΡΠΊΡΠΈΠΏΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌΠΈ, ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ .
1. ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ
Π‘ΠΎΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ shebang Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ:
#!/bin/bash # For Bash-specific syntax
#!/bin/sh # For POSIX-compliant shell scripts (more portable)
#!/usr/bin/env python3 # For Python 3 scriptsΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅, ΡΡΠΎ /bin/sh ΠΈ /bin/bash Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ β ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ. Bash ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΌΠ°ΡΡΠΈΠ²Ρ, [[ ]], ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²), ΠΊΠΎΡΠΎΡΡΠ΅ POSIX sh Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ.
2. ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ /usr/bin/env Π΄Π»Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ env Π΄Π΅Π»Π°Π΅Ρ ΡΠΊΡΠΈΠΏΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
Python. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡΡ.
3. ΠΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
Π‘ΠΊΡΠΈΠΏΡΡ Π±Π΅Π· ΠΏΡΠ°Π² Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ βPermission deniedβ:
chmod +x script.sh
chmod +x script.pyΠΠ»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅:
chmod 755 script.sh4. ΠΡΠ³Π°Π½ΠΈΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ~/scripts ΠΈΠ»ΠΈ ~/bin Π΄Π»Ρ Π»ΠΈΡΠ½ΡΡ
ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Ρ Π² Π²Π°Ρ $PATH:
mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π»ΡΠ±ΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠΊΡΠΈΠΏΡ, ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΠΉ Π² ~/bin, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΡΠΊΡΠ΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ.
5. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π²Π°ΡΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠΈΠΌΠΈ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π»ΡΠ±ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
#!/bin/bash
# Script: backup_web.sh
# Purpose: Creates timestamped backups of web root
# Usage: ./backup_web.sh
# Dependencies: tar, gzip
# Author: Your Name
# Last Modified: 2025-06-106. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ set ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ
Bash ΡΠΊΡΠΈΠΏΡΠΎΠ²
ΠΠ»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ Bash ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΈ ΠΎΠΏΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ shebang:
#!/bin/bash
set -euo pipefail-e: ΠΡΡ ΠΎΠ΄ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅-u: Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ-o pipefail: ΠΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ
7. ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π² production
ΠΡΠ΅Π³Π΄Π° ΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ staging ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΈΡ Π½Π° production ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ»Π°Π½ VPS Hosting ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅, ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ production.
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Shebang
"Permission Denied" Error
bash: ./myscript.sh: Permission deniedΠ Π΅ΡΠ΅Π½ΠΈΠ΅: Π‘ΠΊΡΠΈΠΏΡΡ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ ΠΏΡΠ°Π² Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ chmod +x myscript.sh.
"No Such File or Directory" Error
bash: ./myscript.py: /usr/bin/env: bad interpreter: No such file or directoryΠ Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² shebang, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΡΠΈ. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ which python3 ΠΈΠ»ΠΈ which bash.
Π‘ΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ
Π‘ΠΈΠΌΠΏΡΠΎΠΌ: ΠΡΠΈΠ±ΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Python ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ°ΠΉΠ»Π° .sh ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° shebang Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΠΎΠΊΠ΅ 1 Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ.
ΠΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊ Windows (rn)
ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² Windows ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΠΈΡ Π² Linux, ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊ Π² ΡΡΠΈΠ»Π΅ Windows ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡΡ shebang:
/bin/bash^M: bad interpreterΠ Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dos2unix:
dos2unix myscript.shShebang Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²
ΠΠ»Ρ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ Ρ ΠΎΡΡΠΈΠ½Π³Π° Π½Π° Π±Π°Π·Π΅ Linux, Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ. Shebangs β ΡΡΠΎ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ β ΠΎΡ ΠΏΡΠΎΡΡΡΡ cron-Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π³Π΄Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ (Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ shebangs) Π΄Π°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌΡΡ ΡΠ°Π·Π½ΠΈΡΡ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² β ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³
certbotΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Π²ΡΡΡΠ½ΡΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. - Π ΠΎΡΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠ³ΠΎΠ² β Bash-ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡ ΠΈΠ²ΠΈΡΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΡΠ°ΡΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
- Π Π΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ β Python-ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ MySQL/PostgreSQL, Π²ΡΠ³ΡΡΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π·Π΄ΠΎΡΠΎΠ²ΡΡ β Π‘ΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ°, ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΡΠ°ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΎΡΠΏΡΠ°Π²Π»ΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ β Π‘ΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΠ· Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ»Ρ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΡΡΠΏΠ½ΠΎΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ GPU-Ρ ΠΎΡΡΠΈΠ½Π³ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ Python.
ΠΡΠ°ΡΠΊΠ°Ρ ΡΠΏΡΠ°Π²ΠΊΠ°: Π¨ΠΏΠ°ΡΠ³Π°Π»ΠΊΠ° ΠΏΠΎ Shebang
# Bash (most common for shell scripts)
#!/bin/bash
# POSIX sh (maximum portability)
#!/bin/sh
# Bash with strict error handling (recommended for production)
#!/bin/bash
set -euo pipefail
# Python 3 (portable, uses PATH)
#!/usr/bin/env python3
# Python 3 with unbuffered output
#!/usr/bin/env python3 -u
# Perl
#!/usr/bin/perl
# Ruby
#!/usr/bin/env ruby
# Node.js
#!/usr/bin/env nodeΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Shebang β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅Ρ
ΠΎΠ±ΠΌΠ°Π½ΡΠΈΠ²ΠΎ ΠΏΡΠΎΡΡΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅ΠΆΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Linux. ΠΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° β #! β ΠΈ ΠΏΡΡΡ β ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ²Π»Π°Π΄Π΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ shebang Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ Bash ΠΈ Python, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ:
- ΠΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅, Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ
- Π‘ΠΎΡΡΡΠ΄Π½ΠΈΡΠ°ΡΡ Π½Π°Π΄ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π±Π΅Π· Π΄ΠΎΠ³Π°Π΄ΠΎΠΊ
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠΌ Π½Π° Shared Web Hosting ΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Dedicated Servers, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ Π½Π°Π²ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΡ ΠΊΠ°ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Linux.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΌΠ°Π»ΠΎΠ³ΠΎ β Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ Π²ΡΡΡΠ½ΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ shebang, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ. ΠΠΎΡ ΡΠ°ΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
Π½Π° Π²ΡΠ΅Ρ
Ρ
ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³Π°Ρ