# Какие команды Linux Shell вам известны?

## 🔥 Linux Shell Must Know

### 📂 Работа с файлами и папками

```bash
pwd                  # показать текущую директорию
ls -la               # список файлов с правами и скрытыми файлами
cd <путь>            # перейти в директорию
mkdir test           # создать папку
rm -rf test          # удалить папку/файл (осторожно!)
cp file1.txt file2.txt  # копировать файл
mv file.txt new.txt     # переместить/переименовать
```

***

### 📖 Просмотр содержимого файлов

```bash
cat file.txt         # вывести файл целиком
less file.txt        # постраничный просмотр
head -n 10 file.txt  # первые 10 строк
tail -n 20 file.txt  # последние 20 строк
tail -f log.txt      # следить за логом в реальном времени
```

***

### 🔍 Поиск

```bash
find . -name "*.py"      # найти все .py файлы в текущей папке
grep "ERROR" log.txt     # найти строки с ERROR
grep -r "TODO" src/      # искать рекурсивно в папке
```

***

### ⚙️ Система и процессы

```bash
ps aux              # список процессов
top                 # мониторинг процессов
kill -9 <pid>       # убить процесс
df -h               # диски и свободное место
du -sh *            # размер файлов/папок в текущей директории
free -h             # использование памяти
uname -a            # информация о системе
uptime              # аптайм сервера
```

***

### 🌐 Сеть

```bash
ping google.com     # проверить доступность
curl http://site.com  # GET-запрос
wget http://site.com/file.zip  # скачать файл
ip a                # сетевые интерфейсы
ss -tulnp           # занятые порты
```

***

### 👤 Пользователи и права

```bash
whoami              # текущий пользователь
chmod 755 file.sh   # изменить права доступа
chown user:group file.txt  # изменить владельца
sudo command        # выполнить команду от root
```

***

### 📦 Пакеты

```bash
apt update && apt install <пакет>   # Debian/Ubuntu
yum install <пакет>                 # CentOS
```

***

👉 Эти 20 команд закрывают **90% задач**, которые обычно нужны тестировщику/разработчику:

* посмотреть/искать логи
* управлять файлами
* проверить сеть
* убить зависший процесс
* обновить/поставить пакеты

***

### **1️⃣ Найти лог-файл**

Если ты не знаешь точное имя файла:

```bash
# Найти все файлы с расширением .log в текущей папке и поддиректориях
find . -name "*.log"

# Или искать по части имени
find /var/log -type f -name "*error*.log"
```

* `.` — текущая директория
* `/var/log` — системная папка с логами
* `-type f` — искать только файлы

***

### **2️⃣ Найти строку с ошибкой внутри файла**

Используем `grep`:

```bash
# Искать слово "ERROR" в файле
grep "ERROR" app.log

# Игнорировать регистр (error, Error, ERROR)
grep -i "error" app.log

# Показать номер строки
grep -n "error" app.log

# Показать контекст: 3 строки до и после
grep -C 3 "error" app.log
```

***

### **3️⃣ Искать во всех логах сразу**

```bash
# Рекурсивно искать во всех .log файлах
grep -r "error" /var/log

# С указанием имени файла в выводе
grep -rn "error" /var/log
```

* `-r` — рекурсивно
* `-n` — номер строки
* `-i` — игнорировать регистр
* `-C N` — N строк контекста до и после

***

### **4️⃣ Следить за логом в реальном времени**

```bash
tail -f /var/log/app.log | grep --line-buffered "ERROR"
```

* `tail -f` — смотреть новые строки в лог-файле
* `grep --line-buffered` — фильтрует их на лету


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/teoriya-avtomatizirovannogo-testirovaniya/obshie-voprosy/kakie-komandy-linux-shell-vam-izvestny.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
