en
Feedback
BashMaster

BashMaster

Open in Telegram

Π£Π΄ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², дСвопсов ΠΈ сисадминов. Π Π΅ΠΊΠ»Π°ΠΌΠ°: @Kone4noVasya Канал Π½Π° Π±ΠΈΡ€ΠΆΠ΅: https://telega.in/c/bash_help

Show more
8 880
Subscribers
+224 hours
-117 days
+730 days
Posts Archive
2 ΠΊΠ°Π½Π°Π»Π° для изучСния IT-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² области Администрирования ΠΈ Π˜Π‘: πŸ’» @admguides β€” авторскиС Π³Π°ΠΉΠ΄Ρ‹ ΠΏΠΎ настройкС сСрвСров ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ОБ Windows/Linux. πŸ“– @admbooks β€” элСктронныС ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ тСхнологиям ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности.

Как вывСсти список Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ls Π² Bash Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² скриптах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡
Как вывСсти список Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ls Π² Bash Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² скриптах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°ΠΏΠΎΠΊ Π±Π΅Π· Ρ„Π°ΠΉΠ»ΠΎΠ². Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. 1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ls ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΏΠ°ΠΏΠΊΠΈ ΠΊΡ€ΠΎΠΌΠ΅ скрытых */ - это шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт всСм ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (* Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всСм Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ; / ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ). Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти список всСх ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² /home/mial/bin/aur, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:
ls -d /home/mial/bin/aur/*/

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅:
ls -d */

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ Π² столбик:
ls -1 -d */

2. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ls ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΏΠ°ΠΏΠΊΠΈ вмСстС со скрытыми ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ */ Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ скрытыС ΠΏΠ°ΠΏΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΈΡ…, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΡ… явно:
ls -d .*/ */

3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ls ΠΈ cut Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это Π² Π²ΠΈΠ΄Π΅ столбика:
ls -d */ | cut -f1 -d'/'

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вмСстС со скрытыми ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ:
ls -d .*/ */ | cut -f1 -d'/'

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ /home/mial/bin/aur:
ls -d /home/mial/bin/aur/*/ | cut -f1 -d'/'

4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ls ΠΈ grep Π’ этом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ примСняСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π²Ρ‹Π²ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep. Π­Ρ‚ΠΎΡ‚ способ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ списка:
ls -l | grep "^d"

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вмСстС со скрытыми ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ:
ls -al | grep "^d"

Для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΡ‘Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с дирСкториями, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² названиях):
ls -l | grep "^d" | cut -f 10 -d ' '

πŸ”¨ bash_help

Bash скрипт для сканирования Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ² Наш скрипт Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° – IP-адрСс для сканирования ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
Bash скрипт для сканирования Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ² Наш скрипт Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° – IP-адрСс для сканирования ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠΎΡ€Ρ‚ΠΎΠ² для сканирования.
#!/bin/bash

ip=$1
startport=$2
endport=$3

function portscan {
    for ((counter=$startport; counter<=$endport; counter++))
    do
        (echo > /dev/tcp/$ip/$counter) > /dev/null 2>&1 && echo "$counter open"
    done
}

portscan

Для использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с IP-адрСсом ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠ² для сканирования. - Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ скрипт Π² Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ portscan.sh - Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ скрипт исполняСмым: chmod +x portscan.sh - ЗапуститС скрипт с IP-адрСсом ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠ²: ./portscan.sh 192.168.1.1 20 80 - Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ сканированиС ΠΏΠΎΡ€Ρ‚ΠΎΠ² с 20 ΠΏΠΎ 80 Π½Π° IP-адрСсС 192.168.1.1. πŸ”¨ bash_help

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ OSINT. 2 ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… рСсурса Π² TG: πŸ“š @it_secur β€” РСдкая Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° для спСциалистов Π² области ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности любого уровня ΠΈ направлСния. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅, Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅. πŸ‘¨πŸ»β€πŸ’» @infosecurity β€” Π‘Π°ΠΌΡ‹ΠΉ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ рСсурс Π² Telegram, посвящСнный этичному Ρ…Π°ΠΊΠΈΠ½Π³Ρƒ, OSINT ΠΈ CΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ.

Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Bash скриптам Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΈ: 1 β€” ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠœΠΈΡ€ 2 β€” ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ 3 β€” Команда read ΠΈ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ 4 β€” Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if 5 β€” Ус
Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Bash скриптам Π’ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΈ: 1 β€” ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠœΠΈΡ€ 2 β€” ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ 3 β€” Команда read ΠΈ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ 4 β€” Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if 5 β€” Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case 6 β€” Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ условия 7 β€” ΠœΠ°ΡΡΠΈΠ²Ρ‹ 8 β€” Π¦ΠΈΠΊΠ»Ρ‹ 9 β€” Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ 10 β€” РСкурсия 11 β€” ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° πŸ“Ή ΠŸΠ»Π΅ΠΉΠ»ΠΈΡΡ‚ Π½Π° YouTube πŸ”¨ bash_help

Π₯ΠΎΡ‡Π΅ΡˆΡŒ Π±Ρ‹Ρ‚ΡŒ Π½Π° шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ кибСрпрСступников? ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ Hack Proof ΠΈ ΡƒΠ·Π½Π°Π²Π°ΠΉ ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… кСйсах Π² сфСрС Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈ
Π₯ΠΎΡ‡Π΅ΡˆΡŒ Π±Ρ‹Ρ‚ΡŒ Π½Π° шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ кибСрпрСступников? ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ Hack Proof ΠΈ ΡƒΠ·Π½Π°Π²Π°ΠΉ ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… кСйсах Π² сфСрС Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности. ΠœΡ‹ погруТаСмся Π² ΠΌΠΈΡ€ OSINT, ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ ΠΈ ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌ инструмСнты с github, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ‚Π΅Π±Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΡΡ‚ΡŒ Π² сСти!

Как Π² Bash Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ «НаТмитС Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ для продолТСния» Иногда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π² скриптС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌ
Как Π² Bash Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ «НаТмитС Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ для продолТСния» Иногда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π² скриптС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄Π΅Π» Π΅Ρ‘ (ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Ρ‘ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ). Π’ Bash это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ read. Π­Ρ‚Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ строку ΠΈΠ· стандартного Π²Π²ΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования: read -p "НаТмитС ENTER для продолТСния" Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒΡΡ Π΄Π°Π»Π΅Π΅ (Π° скрипт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΡ‘Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ ENTER. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для продолТСния ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ: read -n 1 -s -r -p "НаТмитС Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ для продолТСния" Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΉ: -n опрСдСляСт количСство символов, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ остановлСно Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ останавливаСтся ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ раздСлитСля строк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ENTER). Π’ нашСм случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° read пСрСстаёт ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа -s скрываСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ -r ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ строка Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ «сырая» (Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° экранирования ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ слэшами). Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшам Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы -p ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, содСрТит сообщСниС, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. πŸ”¨ bash_help

Π£ Skillfactory бСсплатный курс с ΠΏΡ€ΠΎΡ„ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π² IT. Π—Π°Π±Π΅Π³Π°ΠΉΡ‚Π΅: free.skillfactory.ru/itrentgen Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО "Π‘ΠšΠ˜Π›Π€Π­ΠšΠ’ΠžΠ Π˜".
Π£ Skillfactory бСсплатный курс с ΠΏΡ€ΠΎΡ„ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π² IT.  Π—Π°Π±Π΅Π³Π°ΠΉΡ‚Π΅: free.skillfactory.ru/itrentgen Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО "Π‘ΠšΠ˜Π›Π€Π­ΠšΠ’ΠžΠ Π˜". ИНН 9702009530. erid: 2RanynDRnaL

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр (строчныС
Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр (строчныС Π±ΡƒΠΊΠ²Ρ‹). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π² малСнькиС Π±ΡƒΠΊΠ²Ρ‹ нСзависимо ΠΎΡ‚ Π΅Ρ‘ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ рСгистра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
a="Hi all"
echo "${a,,}"
hi all

Начиная с Bash 5.1 имССтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ прСобразования L, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр:
${var@L}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
v="heLLo"
echo "${v@L}"
hello

πŸ”¨ bash_help

Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash Π² Linux ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash сохраняСт Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ„Π°ΠΉΠ» истории. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅
Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash Π² Linux ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash сохраняСт Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ„Π°ΠΉΠ» истории. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ список ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅. Команда history ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ bash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² истории отобраТаСтся Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список ΠΈΠ· 500 послСдних ΠΊΠΎΠΌΠ°Π½Π΄, начиная с самых Ρ€Π°Π½Π½ΠΈΡ… ΠΈ заканчивая самыми послСдними. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ HISTSIZE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС числа ΠΊΠΎΠΌΠ°Π½Π΄ для сохранСния Π² спискС истории. Как ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ? НуТно просто ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ history: history history | less history | more history | grep 'find' Как ΡƒΠ·Π½Π°Ρ‚ΡŒ количСство сохранСнных Π² истории ΠΊΠΎΠΌΠ°Π½Π΄? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ echo ΠΈΠ»ΠΈ printf : echo "$HISTSIZE" ΠΈΠ»ΠΈ printf "%d\n" $HISTSIZE Π“Π΄Π΅ хранится история bash ΠΊΠΎΠΌΠ°Π½Π΄? Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ история ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ HISTFILE. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Π°ΠΉΠ» ~/.bash_history. Для просмотра Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… настроСк ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: echo "$HISTFILE" ΠΈΠ»ΠΈ printf "%s\n" "$HISTFILE" Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ BASH Π½Π° Linux ΠΈΠ»ΠΈ Unix? ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ HISTFILE ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Π½Π°Π±Ρ€Π°Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сброса:
unset HISTFILE

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ строку Π² ΠΊΠΎΠ½Π΅Ρ† Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° /etc/profile.d/disable.history.sh ΠΈΠ»ΠΈ ~/.bash_profile: echo 'unset HISTFILE' >> /etc/profile.d/disable.history.sh ΠΈΠ»ΠΈ
echo 'unset HISTFILE' >> ~/.bash_profile

Как навсСгда ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ bash с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ set? Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +o history встроСнной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ set:
set +o history

Аналогично Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ set +o history Π² ΠΊΠΎΠ½Π΅Ρ† Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° /etc/profile.d/disable.history.sh ΠΈΠ»ΠΈ ~/.bash_profile. Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ bash? Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ сСансС:
history -c

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 42 ΠΈΠ· истории Π² Linux / Unix: history -d 42 πŸ”¨ bash_help

ΠŸΠ°Ρ€Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ увлСкаСтся ΠΊΠΈΠ±Π΅Ρ€Π±Π΅Π·ΠΎΠΌ: πŸ§‘β€πŸ’» Π­Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π₯Π°ΠΊΠ΅Ρ€ - Авторский ΠΊΠ°Π½Π°Π» c инструкциями ΠΏΠΎ пСнтСсту, Π΄
ΠŸΠ°Ρ€Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ увлСкаСтся ΠΊΠΈΠ±Π΅Ρ€Π±Π΅Π·ΠΎΠΌ: πŸ§‘β€πŸ’» Π­Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π₯Π°ΠΊΠ΅Ρ€ - Авторский ΠΊΠ°Π½Π°Π» c инструкциями ΠΏΠΎ пСнтСсту, Π΄Π΅Π°Π½ΠΎΠ½Ρƒ, БИ, Π·Π°Ρ‰ΠΈΡ‚Π΅ устройств ΠΈ бСсплатными курсами ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности. 🏳️ Mr. Robot - Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ кСйсы, OSINT, ΠΎΠ±Π·ΠΎΡ€Ρ‹ инструмСнтов с github, Π³Π°ΠΉΠ΄Ρ‹ ΠΏΠΎ анонимности.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Ρƒ нас хранятся сотни Ρ‚ΠΎΠ½Π½ всСвозмоТных снимков Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹
Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Ρƒ нас хранятся сотни Ρ‚ΠΎΠ½Π½ всСвозмоТных снимков Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… мСстах, Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… носитСлях. Π“Π΄Π΅-Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ ΠΏΠΎ Π³ΠΎΠ΄Π°ΠΌ ΠΈ мСсяцам, Π° Π³Π΄Π΅-Ρ‚ΠΎ просто β€œΡΠ²Π°Π»Π΅Π½Ρ‹β€ Π² ΠΊΡƒΡ‡Ρƒ ΠΈ оставлСны Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½. ΠœΡ‹ запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅ΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ, ΠΈ ΠΈΠ΄Π΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ своими Π΄Π΅Π»Π°ΠΌΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ сканируСт всС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠ°ΠΊΠΈΠ΅ встрСтит Π½Π° своСм ΠΏΡƒΡ‚ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅, Π² поисках Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„ΠΎΡ‚ΠΎΠ°Π»ΡŒΠ±ΠΎΠΌ с отсортированными снимками ΠΏΠΎ Π³ΠΎΠ΄Π°ΠΌ ΠΈ мСсяцам Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π³ΠΎΠ΄Ρƒ, Ρ‚.Π΅. Π² Π²ΠΈΠ΄Π΅: Π³ΠΎΠ΄ / мСсяц / снимки. Π”Π° Π΅Ρ‰Π΅ ΠΈ Π±Π΅Π· Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ. А сами снимки Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ· нСпонятных Ρ‚ΠΈΠΏΠ° IMG_654372984.jpg ΠΈΠ»ΠΈ AB54645456.jpg Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ понятныС ΠΈΠΌΠ΅Π½Π° Π²ΠΈΠ΄Π° YYYYMMDD_hhmmss.jpg. ΠŸΡ€ΠΈ этом Π½Π΅ пострадаСт Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. 🌐 Бсылка Π½Π° скрипт πŸ”¨ bash_help

Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ bash-script-Ρ‹ ΠΏΠΎ шагам Π’ΠΎΠ»ΡˆΠ΅Π±Π½Π°Ρ строчка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ послС #!/bin/bash, Ρ‡Ρ‚ΠΎΠ± скрипт ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Π»
Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ bash-script-Ρ‹ ΠΏΠΎ шагам Π’ΠΎΠ»ΡˆΠ΅Π±Π½Π°Ρ строчка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ послС #!/bin/bash, Ρ‡Ρ‚ΠΎΠ± скрипт ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ шагам #!/bin/bash trap 'echo "# $BASH_COMMAND";read' DEBUG echo line1 echo line2 echo line3 ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ЗапускаСм скрипт, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выводится Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ наТатия клавиши <ENTER>. Если ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Ctrl+C ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π˜Π½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ - ΠΊΠΎΠΌΠ°Π½Π΄Π° trap, которая ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сигналы ΠΈ Π² нашСм случаС ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сигнал DEBUG, посылаСмый ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ - ΠΊΠΎΠΌΠ°Π½Π΄Π° read, которая ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄Π° Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈΠ±ΠΎ ENTER Π»ΠΈΠ±ΠΎ Ctrl+C - пСрСмСнная окруТСния $BASH_COMMAND, валидная Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ trap. πŸ”¨ bash_help

Как ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Bash-скриптов Bash-скрипты β€” эффСктивноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π½ΠΎ Π½Π΅ всСгда са
Как ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Bash-скриптов Bash-скрипты β€” эффСктивноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π½ΠΎ Π½Π΅ всСгда самоС простоС. ΠžΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Π΅ сцСнарии Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ слоТны для чтСния. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ sed ΠΈ awk ΠΈ Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… ошибок Π² написании скриптов. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ возмоТности ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash. Но с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ sed ΠΈ awk ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сами скрипты. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ слуТат Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСссов. Sed β€” ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Π·Π°ΠΌΠ΅Π½Π°, вставка тСкста. Awk β€” язык программирования, синтаксис ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ языки C ΠΈ Perl. Π₯отя awk Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ «построчному» ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСвосходит sed ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям. ΠŸΡ€ΠΈ написании bash-скриптов инструмСнт ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со структурированными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ awk воспринимаСт поля (ΠΎΠ±Π»Π°ΡΡ‚ΡŒ тСкста, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ табуляциСй), ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, арифмСтичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Ρ€. 🌐 Бсылка Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ πŸ”¨ bash_help

Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ курсы для сисадминов? Tutortop β€” ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ маркСтплСйс β„–1, Π³Π΄Π΅ прСдставлСно ΡΠ²Ρ‹ΡˆΠ΅ 5000 курсов ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅
Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ курсы для сисадминов? Tutortop β€” ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ маркСтплСйс β„–1, Π³Π΄Π΅ прСдставлСно ΡΠ²Ρ‹ΡˆΠ΅ 5000 курсов ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 300 школ ΠΈ всС ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ, Ρ†Π΅Π½Π΅ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Π°ΠΌ, Π° Π΅Ρ‰Π΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ дСшСвлС, Ρ‡Π΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ πŸ”₯ РСбята ΠΈΠ· tutortop собрали для вас ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… курсов ΠΏΠΎ систСмному Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎ мнСнию ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ: β€” БистСмный администратор Π½Π° Linux с ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π˜Π‘ ΠΎΡ‚ АкадСмии АйВи. Π Π΅ΠΉΡ‚ΠΈΠ½Π³ 4.7 ΠΈΠ· 5. β€” БпСциалист DevSecOps ΠΎΡ‚ АкадСмия АйВи. Π Π΅ΠΉΡ‚ΠΈΠ½Π³ 4.7 ΠΈΠ· 5. β€” SQL с нуля для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Eduson. Π Π΅ΠΉΡ‚ΠΈΠ½Π³ 4.8 ΠΈΠ· 5. Π‘ΠΊΠΈΠ΄ΠΊΠ° 5% ΠΏΠΎ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Ρƒ TUTORTOP Π΄ΠΎ 01.08 β€” ΠšΡƒΡ€Ρ Β«Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ сопровоТдСниСм ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠ΅ΠΉ трудоустройства» ΠΎΡ‚ SkyPro. Π Π΅ΠΉΡ‚ΠΈΠ½Π³ 4.9 ΠΈΠ· 5. Π‘ΠΊΠΈΠ΄ΠΊΠ° 15% ΠΏΠΎ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Ρƒ TUTORTOP Π΄ΠΎ 01.08 βš‘οΈΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π΄ΠΎ 10 000 β‚½ Π½Π° всС эти ΠΈ дСсятки Π΄Ρ€ΡƒΠ³ΠΈΡ… курсов ΠΏΠΎ IT Π½Π° маркСтплСйсС tutortop!

БовсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎ пСрСнаправлСния &lt;, &lt;&lt; ΠΈ &lt;&lt;&lt; ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ "&lt;" ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ·
БовсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎ пСрСнаправлСния <, << ΠΈ <<< ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ "<" ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. Π”Π°Π²Π½ΠΎ извСстноС ΠΈ Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Ρ‘Ρ€Ρ‚ΠΎΠ΅ мозолями суровых Π°Π΄ΠΌΠΈΠ½ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сразу ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π²ΡƒΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΠΆΠ΅. <<, Ρ‚Π°ΠΊ называСмая конструкция here document. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ многострочный тСкст прямо Π² скриптС ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, словно ΠΈΠ· внСшнСго ΠΏΠΎΡ‚ΠΎΠΊΠ°. $ cat <<EOF \ hello, \ World \ EOF hello, World Cat Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. ΠœΡ‹ пСрСнаправляСм Π΅ΠΌΡƒ Π² STDIN Ρ„Π°ΠΉΠ» β€” конструкция here document Π³Π΅Π½Π΅Ρ€ΠΈΡ‚ Π΅Π³ΠΎ прямо Π½Π° мСстС, поэтому Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ внСшнюю ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΈ ΡΠΊΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Но ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ <<<. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, <<< Π»ΡƒΡ‡ΡˆΠ΅ читаСтся, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· <<< Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ многострочныС Π΄Π°Π½Π½Ρ‹Π΅. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:
#!/bin/bash
. load_credentials

sqlplus -s $connstring << EOF
set line 1000
select name, lastlogin from users;
exit;
EOF

#!/bin/bash
. load_credentials

SLQ_REQUEST="
set line 1000
select name, lastlogin from users;
exit;"

sqlplus -s ${connstring} <<<"${SQL_REQUEST}"

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ выглядит ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для нас мСстС, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² <<<. А ΠΏΡ€ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌ запросС всС выглядит Π²ΠΎΠΎΠ±Ρ‰Π΅ прСкрасно: #!/bin/bash . load_credentials sqlplus -s ${connstring} <<<"select name, lastlogin from users;exit;" Если ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скриптами побольшС, ΠΈ запросами ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Π΅Π΅, Ρ‚ΠΎ использованиС <<< с ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΈΠΌ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (Π° сами ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅, Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΈ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΎΠΌ коммСнтариями мСстС), Ρ‚ΠΎ ΠΊΠΎΠ΄ получаСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Π΅Π΅. πŸ”¨ bash_help

МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ hardlink Π½Π° ΠΏΠ°ΠΏΠΊΡƒ? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ! Но Π½Π΅ всСм. POSIX Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ…Π°Ρ€Π΄Π»ΠΈΠ½ΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΡ‹ ΠΈΡ…
МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ hardlink Π½Π° ΠΏΠ°ΠΏΠΊΡƒ? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ! Но Π½Π΅ всСм. POSIX Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ…Π°Ρ€Π΄Π»ΠΈΠ½ΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΡ‹ ΠΈΡ… всС врСмя Π²ΠΈΠ΄ΠΈΠΌ! ΠŸΡ€ΠΈΠΌΠ΅Ρ€: # создаСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ test $ mkdir test # Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ количСствС ссылок ΠΈ Π½ΠΎΠΌΠ΅Ρ€ iNode для test $ stat -c "LinkCount:%h iNode:%i" test LinkCount:2 iNode:522366 Как? Волько создали ΠΈ ΡƒΠΆΠ΅ Π΄Π²Π° Π»ΠΈΠ½ΠΊΠ°? # Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ test $ cd test # Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ статистику для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ "." $ stat -c "LinkCount:%h iNode:%i" . LinkCount:2 iNode:522366 Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½ΠΎΠΌΠ΅Ρ€ iNode. Π’ΠΎ Π΅ΡΡ‚ΡŒ test ΠΈ "." Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ β€” это Ρ‚Π° ΠΆΠ΅ самая дирСктория. И "." это Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ алиас баша, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π­Ρ‚ΠΎ просто ТСсткая ссылка Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚: # создаСм ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ test2 Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСго test $ mkdir test2 # Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ test2 $ cd test2 # смотрим статистику ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ".." $ stat -c "LinkCount:%h iNode:%i" .. LinkCount:3 iNode:522366 ".." ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ iNode 522366, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ test. И счСтчик ссылок увСличился.

Π’ Telegram Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π» основатСля IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Тизнь Π°ΠΉΡ‚ΠΈΡˆΠΊΠΈ. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°
Π’ Telegram Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π» основатСля IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Тизнь Π°ΠΉΡ‚ΠΈΡˆΠΊΠΈ. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π» CEO, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ инсайды.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ для запуска ΠΈ остановки Ρ‚ΠΎΡ€Ρ€Π΅Π½Ρ‚-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²ΠΎ врСмя простоя ΠΌΠ°ΡˆΠΈΠ½Ρ‹ #!/bin/bash IDLE=600000 STOPCMD="transmission-remote -
Π‘ΠΊΡ€ΠΈΠΏΡ‚ для запуска ΠΈ остановки Ρ‚ΠΎΡ€Ρ€Π΅Π½Ρ‚-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²ΠΎ врСмя простоя ΠΌΠ°ΡˆΠΈΠ½Ρ‹
#!/bin/bash

IDLE=600000
STOPCMD="transmission-remote -S"
STARTCMD="transmission-remote -s"

STOPPED="yes"
while true; do
    if [ `xprintidle` -gt $IDLE ]; then
        if [ $STOPPED = "yes" ]; then
            $STARTCMD
            STOPPED="no"
        fi
    else
        if [ $STOPPED = "no" ]; then
            $STOPCMD
            STOPPED="yes"
        fi
    fi
    sleep 60
done

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² бСсконСчный Ρ†ΠΈΠΊΠ», ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ провСряя, сколько миллисСкунд ΠΏΡ€ΠΎΡˆΠ»ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΡŽΠ·Π΅Ρ€ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Π΅Π»Π°Π» (для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° xprintidle). Если ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΠΆΠ΅ 600 000 мс (Π΄Π΅ΡΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚), скрипт выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ STARTCMD. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ STOPCMD, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎ Π½Π΅Π΅ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° STARTCMD. Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ: Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ дСлаСшь Π·Π° ΠΊΠΎΠΌΠΏΠΎΠΌ Π΄Π΅ΡΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚ β€” запускаСтся STARTCMD, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠΎΠΌΠ°Π½Π΄Π° запуска всСх Π·Π°ΠΊΠ°Ρ‡Π΅ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Transmission, Ссли Π½Π΅Ρ‚ β€” приостановка всСх Π·Π°ΠΊΠ°Ρ‡Π΅ΠΊ. НС любишь Transmission? НСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Deluge: STOPCMD="deluge-console pause \*" STARTCMD="deluge-console resume \*"

Какой простой способ ΠΎΡ‚Ρ€Π΅Π·Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρƒ Ρ„Π°ΠΉΠ»Π°? Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΈ популярный способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ basename, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚
Какой простой способ ΠΎΡ‚Ρ€Π΅Π·Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρƒ Ρ„Π°ΠΉΠ»Π°? Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΈ популярный способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ basename, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ вСсь ΠΏΡƒΡ‚ΡŒ слСва, Π° Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π΅ΠΆΠ΅Ρ‚ справа ΠΈ суффикс. НапримСр пишСм file.txt ΠΈ суффикс .txt $ basename file.txt .txt file Но ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс для Ρ‚Π°ΠΊΠΎΠ³ΠΎ простого дСйствия, ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ прСобразованиями Π² bash (bash variable expansions):
$ filename=file.txt; echo ${filename%.*}
file

Или Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΎΡ‚Ρ€Π΅Π·Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅: filename=file.txt; echo ${filename##*.} txt Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? % β€” ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ всС символы с ΠΊΠΎΠ½Ρ†Π° Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ подходящСго ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° (поиск ΠΈΠ΄Π΅Ρ‚ справа Π½Π°Π»Π΅Π²ΠΎ) %% β€” ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ всС символы с ΠΊΠΎΠ½Ρ†Π° Π΄ΠΎ послСднСго подходящСго ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° (справа Π½Π°Π»Π΅Π²ΠΎ) # β€” ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ с Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ подходящСго ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° (поиск ΠΈΠ΄Π΅Ρ‚ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ) ## β€” ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ с Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ послСднСго подходящСго ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° (слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ) Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, "${filename%.*}" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ β€” начиная справа Π½Π°Π»Π΅Π²ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ всС символы (*) ΠΈ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΡ‚Ρ€Π΅Π·Π°Π΅ΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅. Если Π±Ρ‹ ΠΌΡ‹ использовали "${filename%%.*)", Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π°Ρ…, Π³Π΄Π΅ Ρ‚ΠΎΡ‡ΠΊΠ° встрСчаСтся большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, Ρƒ нас Π±Ρ‹ ΠΎΠ½ΠΎ дошло Π΄ΠΎ послСднСй Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΎΡ‚Ρ€Π΅Π·Π°Π² лишнСС. $ filename="file.hello.txt"; echo "${filename%%.*}" file