---
title: "Основные команды SSH"
description: "Основные команды SSH — База знаний Timeweb Cloud Основные команды SSH. Документация и инструкции по управлению IT-инфраструктурой. Timeweb Cloud — облачные решения для вашего бизнеса."
---

# Основные команды SSH

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

В данной статье рассматриваются основные команды, используемые при работе с файлами и директориями при подключении к серверу по SSH-протоколу.

Для подключения можно использовать терминал в вашей ОС, утилиту [PuTTY](https://timeweb.cloud/docs/general/putty) или же веб-консоль в панели управления. Подробнее см. в статье статье «[Подключение по SSH](https://timeweb.cloud/docs/unix-guides/ssh)».

> [!NOTE]
> Обратите внимание, что команды необходимо вводить в нижнем регистре. Например, `pwd` — корректное имя команды, `Pwd` — некорректное. 

## Навигация

Команды для перемещения по каталогам и просмотра их содержимого.

### Вывод текущей рабочей директории

Для вывода информации о текущей рабочей директории используется команда `pwd`.

#### Пример использования

```shell
pwd
```

Вывод:

```shell
/root
```

### Вывод содержимого директории

Чтобы посмотреть содержимое директории, воспользуйтесь командой `ls`.

Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий):

```shell
ls .
```

Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий):

```shell
ls -1
```

Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки):

```shell
ls -la
```

Вывод содержимого конкретной директории:

```shell
ls имя_директории
```

#### Пример использования

Выведем содержимое текущей директории:

```shell
ls -la
```

Вывод:

```shell
total 16
drwx------  4 username customers 4096 Mar 10 12:56 .
drwx------ 14 username customers 4096 Mar 10 12:55 ..
-rw-------  1 username customers    0 Mar 10 12:56 .htaccess
drwx------  2 username customers 4096 Mar 10 12:55 test
drwx------  2 username customers 4096 Mar 10 12:55 test1
-rw-------  1 username customers    0 Mar 10 12:55 test.txt
```

Здесь `.` — текущий каталог, а `..` — родительский каталог.

### Перемещение между директориями

Команда `cd` позволяет выполнить переход в другую директорию.

#### Основные способы применения

Перейти в директорию, которая находится в текущей директории:

```shell
cd dirname
```

Перейти в родительский каталог (на уровень выше):

```shell
cd ..
```

Перейти в домашний каталог:

```shell
cd
```

Либо:

```shell
cd ~
```

Перейти в домашний каталог по абсолютному пути (начиная с корня):

```shell
cd /home/u/username
```

Перейти в предыдущий каталог:

```shell
cd -
```

#### Примеры

Переходим в каталог `media`:

```shell
cd /home/u/username/public_html/media
```

Вы увидите, что текущая директория, которая отображается после двоеточия и до символа `$`, изменится:

```shell
username@server:~/public_html/media$
```

Перейдем в каталог cms:

```shell
cd cms
```

Текущая директория снова изменится:

```shell
username@server:~/public_html/media/cms$
```

Перейдем в домашний каталог:

```shell
cd
```

Мы увидим:

```shell
username@server:~$
```

Вернемся в предыдущий каталог:

```shell
cd -
```

Перейдем на уровень выше:

```shell
cd ..
```

## Действия с файлами и каталогами

Создание, удаление, изменений файлов и директорий.

### Создание директорий

Команда для создания директорий — `mkdir`.

Создать директорию:

```shell
mkdir имя_директории
```

Создать сразу несколько директорий:

```shell
mkdir имя_директории1 имя_директории2
```

Создать дерево директорий:

```shell
mkdir -p /имя_директории1/имя_директории2
```

#### Пример использования

```shell
ls -l
```

```shell
total 0
```

Создадим директорию:

```shell
mkdir dir1
```

Выводим листинг:

```shell
ls -l
```

```shell
total 4
drwx------ 2 username customers 4096 Mar 10 13:16 dir1
```

### Создание файлов

Для создания файлов можно использовать различные команды, например:

Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется):

```shell
touch test.txt
```

Создать новый файл при его отсутствии (если файл существует, то команда удаляет его содержимое):

```shell
> test.txt
```

Создать новый файл при его отсутствии и записать в него строку «test» (если файл существует, то команда заменяет его содержимое на строку «test»):

```shell
echo "test" > test.txt
```

Вы можете выбрать удобный для вас способ или использовать любой другой.

Также можно создать файл с помощью текстового редактора. На наших серверах доступен `nano`:

```shell
nano имя_файла
```

При этом файл сразу будет открыт для редактирования.

Чтобы сохранить изменения и закрыть файл, в nano можно воспользоваться сочетанием клавиш Crtl X → Y → Enter.

### Копирование файлов и каталогов

Копирование каталогов и файлов осуществляется с помощью команды `cp`.

#### Основные способы применения

Скопировать файл `test.txt` в файл `test1.txt` (файл `test.txt` должен присутствовать в текущей директории):

```shell
cp test.txt test1.txt
```

Скопировать директорию `dir1` в директорию `dir2`, включая всё содержимое (ключ -r означает рекурсивное копирование, директория `dir1` должна присутствовать в текущей директории):

```shell
cp -r dir1 dir2
```

### Перемещение и переименование файлов

Перемещение и переименование файлов выполняется при помощи команды `mv`.

#### Основные способы применения

Переименовать файл `test.txt` в `test2.txt` (файл `test.txt` должен присутствовать в текущей директории):

```shell
mv test.txt test2.txt
```

Переместить файл `test2.txt` в директорию `dir` (файл и директория должны присутствовать в текущей директории):

```shell
mv test2.txt dir
```

#### Примеры использования

```shell
ls -l
```

```shell
total 4
drwx------ 2 username customers 4096 Mar 10 13:37 dir
-rw------- 1 username customers    0 Mar 10 13:37 test.txt
```

Переименуем файл:

```shell
mv test.txt test2.txt
```

Выведем листинг:

```shell
ls -l
```

```shell
total 4
drwx------ 2 username customers 4096 Mar 10 13:37 dir
-rw------- 1 username customers    0 Mar 10 13:37 test2.txt
```

Переместим файл в директорию:

```shell
mv test2.txt dir
```

Просмотрим ее содержимое:

```shell
ls dir
```

```shell
test2.txt
```

### Удаление файлов и каталогов

Для удаления объектов используйте команду `rm`.

#### Основные способы применения

Удалить файл `test.txt` в текущем каталоге:

```shell
rm test.txt
```

Удалить все файлы в определенной директории:

```shell
rm /путь/к/файлам/*
```

Удалить все файлы с расширением `.txt` в определенной директории:

```shell
rm /путь/к/файлам/*.txt
```

Удалить директорию и все ее содержимое:

```shell
rm -r имя_директории
```

Для того, чтобы при удалении каждого файла запрашивалось подтверждение, можно использовать ключ `-i`:

```shell
rm -i /путь/к/файлам/*.txt
```

Если же файлов много и вы точно уверены в необходимости их удаления, можно использовать противоположную опцию `-f`, тогда удаление будет выполнено без подтверждения:

```shell
rm -f /путь/к/файлам/*.txt
```

### Создание ссылок

Ссылки при работе по SSH-протоколу создаются командой `ln`.

#### Основные способы применения

Создать жесткую ссылку:

```shell
ln file1 file2
```

Создать символьную ссылку:

```docker
ln -s file1 file2
```

#### Примеры использования

```shell
ls -l
```

```shell
total 0
-rw------- 1 username customers 0 Mar 10 14:08 test.txt
```

Создадим символьную ссылку:

```shell
ln -s test.txt link
```

Выведем листинг:

```shell
ls -l
```

```shell
total 0
lrwxrwxrwx 1 username customers 8 Mar 10 14:08 link -> test.txt
-rw------- 1 username customers 0 Mar 10 14:08 test.txt
```

### Изменение прав доступа к файлам и директориям

Команда `chmod` позволяет настроить права доступа к файлам и директориям.

#### Основные способы применения

Изменение прав на `xxxx` для файла `file` (`file` должен существовать в текущей директории):

```shell
chmod xxxx file
```

Изменение прав на `xxxx` для директории `dir` (`dir` должна существовать в текущей директории):

```shell
chmod xxxx dir
```

#### Примеры использования

```shell
ls -l
```

```shell
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir
-rw------- 1 username customers    0 Mar 10 14:39 test.txt
```

Изменим права на файл:

```shell
chmod 0644 test.txt
```

Проверим:

```shell
ls -l
```

```shell
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir
-rw-r--r-- 1 username customers    0 Mar 10 14:39 test.txt
```

Изменим права на директорию:

```shell
chmod 0755 dir/
```

Проверим:

```shell
ls -l
```

```shell
total 4
drwxr-xr-x 2 username customers 4096 Mar 10 14:39 dir
-rw-r--r-- 1 username customers    0 Mar 10 14:39 test.txt
```

## Работа с содержимым файлов

Основные команды для управления содержимым файлов.

### Конкатенация содержимого файлов

Команда `cat` позволяет выполнить конкатенацию (объединение) содержимого файлов и печать его в стандартный поток вывода. Данная команда зачастую используется просто для просмотра содержимого файла.

#### Примеры использования

```shell
cat test.txt
```

Вывод:

```shell
1
2
3
4
5
```

### Просмотр частей файла

С помощью команд `head` и `tail` можно вывести определенное количество строк от начала или конца файла соответственно.

#### Примеры использования

Вывести две строки с начала:

```shell
head -2 test.txt
```

```shell

2
```

Вывести последнюю строку с конца:

```shell
tail -1 test.txt
```

```shell
5
```

### Поиск по содержимому файла

`grep` — это популярная команда, позволяющая найти содержимое файлов.

Например, у нас есть файл `test1.txt`. Просмотрим его содержимое:

```shell
cat test1.txt
```

```
1 first string
2 second string
3 another example of a string
4 something in here
5 andalsohere
```

#### Примеры использования

Ищем вхождения `string`:

```shell
grep 'string' test1.txt
```

```shell
1 first string
2 second string
3 another example of a string
```

Ищем вхождения `th`:

```shell
grep 'th' test1.txt
```

```shell
3 another example of a string
4 something in here
```

Ищем вхождения `here`:

```shell
grep 'here' test1.txt
```

```shell
4 something in here
5 andalsohere
```

Команда `grep` имеет огромное количество способов применения. За дополнительной информацией вы можете обратиться [к официальной документации](https://www.gnu.org/software/grep/manual/grep.html), либо к свободным источникам в интернете.

## Поиск файлов

Используйте команду `find`, чтобы найти нужный файл.

#### Основные способы применения

Поиск файлов и каталогов с именем `test` в текущей директории:

```shell
find ./ -name 'test'
```

Поиск в текущей директории файлов и каталогов, имена которых начинаются на `test` и далее содержат любое количество любых символов:

```shell
find ./ -name 'test*'
```

Поиск в домашней директории файлов и каталогов, имена которых начинаются на `test` и далее содержат любое количество любых символов:

```shell
find ~/ -name 'test*'
```

Поиск файлов с расширением `.php` в домашней директории:

```shell
find ~/ -name '*.php'
```

## Архивы

Создать архив директории:

```shell
tar -cf имя_архива.tar имя_директории
```

#### Примеры использования

Заархивируем директорию `/home/user/директория_сайта/public_html/media/`. Для этого сначала перейдем в каталог, в котором находится директория `media`:

```shell
cd /home/u/user/имя_сайта/public_html/
```

Выполним команду архивации и укажем удобное имя архива:

```shell
tar -cf имя_архива.tar media
```

Распакуем архив `.tar` в текущую директорию:

```shell
tar -xvf архив.tar
```

Распаковать архив `.rar` в текущую директорию:

```shell
unrar x архив.rar
```

Распаковать архив `.zip` в текущую директорию:

```shell
unzip архив.zip
```

## Базы данных

Создание дампа базы данных:

```shell
mysqldump -u'пользователь_бд' база_данных -p'пароль_базы_данных' > имя_дампа.sql
```

Импорт данных из дампа в базу данных:

```shell
mysql -u'пользователь_бд' база_данных -p'пароль_базы_данных' < имя_дампа.sql
```

Проверка базы данных на наличие ошибок:

```shell
mysqlcheck -c -u'пользователь_бд' база_данных -p'пароль_базы_данных'
```

Восстановление базы данных при наличии ошибок:

```shell
mysqlcheck -r -u'пользователь_бд' база_данных -p'пароль_базы_данных'
```

Подключение к серверу баз данных:

```shell
mysql -u база_данных -p
```

Нажмите Enter, после чего введите пароль базы.

Получение информации о параметрах MySQL:

```sql
SHOW VARIABLES LIKE 'параметр';
SHOW SESSION VARIABLES LIKE 'параметр';
```

Например:

```shell
SHOW SESSION VARIABLES LIKE 'max_join_size';
```

## Завершение работы процессов

Для управления сервисами на современных Linux-серверах используется `systemctl`. Например, чтобы перезапустить веб-сервер Apache:

```shell
systemctl restart apache2
```

Также возможно жесткое завершение процесса с помощью `killall`. Однако использовать его стоит только в крайних случаях, когда сервис «завис» и не отвечает. Для обычного управления сервисами лучше всегда `systemctl restart` или `systemctl stop`/`start`.

Пример использования `killall`:

```shell
killall -9 apache2
```

## Дисковое пространство

Вывод информации о текущей дисковой квоте:

```shell
quota -s
```

Вывести размер файлов и директорий в текущем каталоге:

```shell
du -sch *
```

Анализ дискового пространства аккаунта (сканирует корневой каталог):

```shell
ncdu
```

Просканировать файлы конкретную директорию:

```shell
ncdu имя_директории
```

## Другие вспомогательные команды

Вывод истории команд:

```shell
history
```

Очистить экран (сочетание клавиш Ctrl-L):

```shell
clear
```

Закрыть подключение по SSH (сочетание клавиш Ctrl-D):

```shell
exit
```

### Сочетания клавиш

-   Ctrl-C — прервать выполнение текущей команды.
-   Ctrl-Shift-C — копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением).
-   Ctrl-Shift-V — вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши).
