ОсСм ΠΌΠ°Π»ΠΊΠΎ извСстни ΠΎΠΏΡ†ΠΈΠΈ Π½Π° Bash

Някои ΠΎΠΏΡ†ΠΈΠΈ Π½Π° Bash са Π΄ΠΎΠ±Ρ€Π΅ извСстни ΠΈ чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ. НапримСр, ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° скрипта ΠΏΠΈΡˆΠ°Ρ‚

set -o xtrace

Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ,

set -o errexit

Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΏΡ€ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ

set -o errunset

Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅, Π°ΠΊΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π°.

Но ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ†ΠΈΠΈ. Понякога Ρ‚Π΅ сС описват Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Ρ‰ΠΎ Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π°Ρ‚Π°, Π·Π°Ρ‚ΠΎΠ²Π° Ρ‚ΡƒΠΊ ΡΡŠΠ±Ρ€Π°Ρ… някои ΠΎΡ‚ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ‚Π΅, с обяснСния.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π½Π° Mac ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎ-стара вСрсия Π½Π° bash (3.x вмСсто 4.x), ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅ всички Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ†ΠΈΠΈ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ. Π’ Ρ‚Π°ΠΊΡŠΠ² случай Π²ΠΈΠΆΡ‚Π΅ Ρ‚ΡƒΠΊ. ΠΈΠ»ΠΈ Ρ‚ΡƒΠΊ..

set ΠΈΠ»ΠΈ shopt?

Има Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° bash: ΠΎΡ‚ скрипт ΠΈΠ»ΠΈ ΠΎΡ‚ командния Ρ€Π΅Π΄. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ set ΠΈ shopt. И Π΄Π²Π΅Ρ‚Π΅ промСнят ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° шСл-Π°, правят Π² ΠΌΠ½ΠΎΠ³ΠΎ случаи Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ (с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ) ΠΈ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Ρ…ΠΎΠ΄Π° си.ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ set сС наслСдяват ΠΈΠ»ΠΈ Π·Π°Π΅ΠΌΠ°Ρ‚ ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ шСл-ΠΎΠ²Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ shopt са създадСни Π² bash.

Ако искатС Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

$ set -o
$ shopt

Π—Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° опция Π² set сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΡŠΠ»Π³ΠΈΡΡ‚ ΠΈΠ»ΠΈ краткият синтаксис:

$ set -o errunset
$ set -e

Π•Ρ„Π΅ΠΊΡ‚ΡŠΡ‚ Π΅ ΡΡŠΡ‰ΠΈΡΡ‚.

Π—Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ опция, трябва Π΄Π° поставитС плюс вмСсто минус:

$ set +e

Π”ΡŠΠ»Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ… Π΄Π° запомня Ρ‚ΠΎΠ·ΠΈ синтаксис, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° (минус Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° опцията, Π° плюс я Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°).

Π’ shopt Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ (ΠΏΠΎ-Π»ΠΎΠ³ΠΈΡ‡Π½ΠΈ) Ρ„Π»Π°Π³ΠΎΠ²Π΅ -s (set) ΠΈ -u (unset):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Има няколко ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

1. cdspell

Π‘ Ρ‚Π°ΠΊΠ°Π²Π° настройка bash Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π° правописни Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Ρ‰Π΅ Π²ΠΈ прСмСства Π² ΠΏΠ°ΠΏΠΊΠ°, Ρ‡Π΅ΠΉΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π° стС написали с Π³Ρ€Π΅ΡˆΠΊΠ°.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Използвал съм Ρ‚Π°Π·ΠΈ опция ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ рядко (ΠΌΠΎΠΆΠ΅ Π±ΠΈ вСднъТ Π² Π³ΠΎΠ΄ΠΈΠ½Π°Ρ‚Π°) тя Π²Π·Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ странно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Но Π·Π° смСтка Π½Π° Ρ‚ΠΎΠ²Π°, Π² останалитС Π΄Π½ΠΈ cdspell спСстява Π²Ρ€Π΅ΠΌΠ΅, Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ всСки Π΄Π΅Π½.

2. autocd

Ако Π½Π΅ стС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° Ρ‚ΡŠΡ€ΠΏΠΈΡ‚Π΅ нССфСктивността Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ въвСТданС cd, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ опция Π·Π° прСмСстванС Π² ΠΏΠ°ΠΏΠΊΠ° X, Π°ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° X Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°.

$ shopt -s autocd
$ abcdefg
$ cd ..

Π’ комбинация с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ допълванС Ρ‚ΠΎΠ²Π° позволява Π±ΡŠΡ€Π·ΠΎ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΏΠΊΠΈΡ‚Π΅:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ Π½Π°Π·ΠΎΠ²Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° rm -rf * (Π΄Π°, ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Ρ‚ΠΎΠ²Π° Π΅ възмоТно).

3. direxpand

Π’ΠΎΠ²Π° Π΅ страхотна опция, която Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° срСдата с натисканС Π½Π° Tab:

$ shopt -s direxpand
$ .\/ [TAB]     # замСня сС на...
$ \/full\/path\/to\/current_working_folder
$ ~\/ [TAB]     # замСня сС на...
$ \/full\/path\/to\/home\/folder
$ $HOME\/ [TAB] #  замСня сС на...
$ \/full\/path\/to\/home\/folder

Чисто ΠΈΠ·Ρ…ΠΎΠ΄

4. checkjobs

Π’Π°Π·ΠΈ опция спира ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΎΡ‚ сСсията, Π°ΠΊΠΎ Π² задния Ρ„ΠΎΠ½ всС ΠΎΡ‰Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ задания.

ВмСсто ΠΈΠ·Ρ…ΠΎΠ΄, сС ΠΈΠ·Π²Π΅ΠΆΠ΄Π° списък с Π½Π΅Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Ако всС ΠΏΠ°ΠΊ искатС Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅Ρ‚Π΅, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= ID Π½Π° процСса Π·Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π°
$ sleep 999 &\n$ exit
Има Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ…ΠΎΠ΄.
[1]+  Π Π°Π±ΠΎΡ‚ΠΈ                 sleep 999 &\n$ echo $$
68125             # <= ID Π½Π° процСса Π·Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° остава ΡΡŠΡ‰ΠΎΡ‚ΠΎ
$ exit
Има Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ…ΠΎΠ΄.
[1]+  Π Π°Π±ΠΎΡ‚ΠΈ                 sleep 999 &\n$ exit
$ echo $$
$ 59316           # <= Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ ID Π½Π° процСса сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ

Π‘ΡƒΠΏΠ΅Ρ€ способности ΠΏΠΎ подмяна

5. globstar

Π’Π°Π·ΠΈ опция Π²ΠΈ Π΄Π°Π²Π° супСр способности ΠΏΠΎ подмяна! Ако Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅:

$ shopt -s globstar
$ ls **

Ρ‚ΠΎΠ³Π°Π²Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ рСкурсивно всички Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Π’ комбинация с direxpand ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚Π΅ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-ниско Π² йСрархията:

$ shopt -s direxpand
$ ls **[TAB][TAB]
ПоказванС Π½Π° всички 2033 Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ? (y ΠΈΠ»ΠΈ n) 

6. extglob

Π’Π°Π·ΠΈ опция Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-чСсто сС асоциират с рСгулярни ΠΈΠ·Ρ€Π°Π·ΠΈ. Понякога Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Π’ΡƒΠΊ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ сС поставят Π² ΠΊΡ€ΡŠΠ³Π»ΠΈ скоби ΠΈ сС раздСлят с Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½Π° Ρ‡Π΅Ρ€Ρ‚Π°. Π•Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ:

? = соотвСтствуСт Π½ΡƒΠ»ΡŽ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… шаблонов
! = ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π½Π΅ соотвСтствуСт Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ шаблонам
* = ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
+ = ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
@ = Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅

Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ

7. histverify

Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΌΠ°Π»ΠΊΠΎ стряскащо Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π±ΡŠΡ€Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ‚ историята Ρ‡Ρ€Π΅Π· ΡΡŠΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡ. !! ΠΈ !$.

ΠžΠΏΡ†ΠΈΡ histverify позволява ΠΏΡŠΡ€Π²ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Bash ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, ΠΏΡ€Π΅Π΄ΠΈ наистина Π΄Π° стартира:

$ shopt -s histverify
$ echo !$          # <= Π‘ натисканС Π½Π° Enter ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π½Π΅ сС стартира
$ echo histverify  # <= ΠŸΡŠΡ€Π²ΠΎ сС дСмонстрира Π½Π° Π΅ΠΊΡ€Π°Π½Π°,
histverify         # <= Π° послС сС стартира 

8. Noclobber

ΠžΡ‚Π½ΠΎΠ²ΠΎ, Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ прСзаписванС Π½Π° Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° прСнасочванС (>). Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС катастрофално, Π°ΠΊΠΎ няматС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅.

ΠžΠΏΡ†ΠΈΡ set -C забранява Ρ‚Π°ΠΊΠΎΠ²Π° прСзаписванС. ΠŸΡ€ΠΈ нСобходимост ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Ρ„Π°ΠΉΠ»
$ echo something >| afile
$

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster