Bash (Bourne Again SHell) — це оболонка командного рядка + мова сценаріїв, яка використовується для:
- виконання команд
- автоматизації задач
- написання скриптів
Bash — це повноцінна мова програмування, але з важливим уточненням — це скриптова мова для автоматизації в Unix/Linux-середовищі, а не універсальна мова на рівні Java чи Python.
Bash має всі базові можливості програмування:
- змінні
- умовні конструкції (if, case)
- цикли (for, while)
- функції
- обробку вводу/виводу
- роботу з файлами
- обробку помилок
Основні команди
pwd # показати поточну директорію
ls # список файлів
ls -la # детальний список (з прихованими)
cd /path # перейти в директорію
cd .. # на рівень вище
clear # очистити термінал
Робота з файлами та папками
touch file.txt # створити файл
mkdir dir # створити папку
mkdir -p a/b/c # створити вкладені папки
rm file.txt # видалити файл
rm -r dir # видалити папку
cp file.txt copy.txt # копіювати файл
cp -r dir1 dir2 # копіювати папку
mv file.txt new.txt # перейменувати / перемістити
Перегляд вмісту файлів
cat file.txt # показати весь файл
less file.txt # перегляд з прокруткою
head file.txt # перші 10 рядків
tail file.txt # останні 10 рядків
tail -f log.txt # слідкувати за логом
Пошук
find . -name "*.txt" # знайти файли
grep "text" file.txt # пошук у файлі
grep -r "text" . # пошук рекурсивно
which python # шлях до програми
Права доступу
chmod +x script.sh # зробити файл виконуваним
chmod 755 file # встановити права
chown user:file file # змінити власника
Робота з процесами
ps aux # список процесів
top # моніторинг процесів
htop # покращений моніторинг
kill 1234 # завершити процес
kill -9 1234 # примусово завершити
Архівування
tar -czf archive.tar.gz dir # створити архів
tar -xzf archive.tar.gz # розпакувати
zip archive.zip file.txt # zip
unzip archive.zip # unzip
Мережа
ping google.com # перевірка зв’язку
curl http://example.com # HTTP-запит
wget http://example.com # завантажити файл
ssh user@host # підключення по SSH
scp file user@host:/path # копіювання по SSH
Змінні
NAME="John"
echo $NAME
PATH_TO_FILE="/home/user/file.txt"
echo $PATH_TO_FILE
Умови
if [ -f "file.txt" ]; then
echo "Файл існує"
else
echo "Файл не знайдено"
fi
Цикли
for file in *.txt; do
echo $file
done
i=1
while [ $i -le 5 ]; do
echo $i
i=$((i+1))
done
Функції
hello() {
echo "Привіт $1"
}
hello "Світ"
Ввід / Вивід
echo "Hello" # вивід
read name # ввід
echo "Привіт $name"
command > file.txt # запис у файл
command >> file.txt # додати в файл
command 2> error.log # помилки
command &> all.log # все в файл
Pipe (конвеєри)
cat file.txt | grep "error"
ps aux | grep java
ls -la | sort
Виконання скриптів
chmod +x script.sh
./script.sh
bash script.sh
Shebang
#!/bin/bash
echo "Hello world"
Коментарі
Дописати коментар