В данной статье рассматриваются основные команды, используемые при работе с файлами и директориями при подключении к серверу по SSH-протоколу.
Для подключения необходимо использовать специальные программы, например, PuTTY, или веб-консоль в вашей панели управления. Подробнее см. в статье статье "Подключение по SSH".
Обратите внимание, что команды необходимо вводить в нижнем регистре. Например, pwd - корректное имя команды, Pwd - некорректное.
Навигация
Вывод текущей рабочей директории
Для вывода информации о текущей рабочей директории используется команда pwd.
Пример использования:
username@server:~$ pwd /home/u/username
Вывод содержимого директории
Чтобы посмотреть содержимое директории, воспользуйтесь командой ls.
Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий):
ls .
Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий):
ls -1
Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки):
ls -la
Вывод содержимого конкретной директории:
ls имя_директории
Пример использования:
username@server:~$ ls -la 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 позволяет выполнить переход в другую директорию.
Основные способы применения:
Перейти в директорию, которая находится в текущей директории:
cd dirname
Перейти в родительский каталог (на уровень выше):
cd ..
Перейти в домашний каталог:
cd # Либо: cd ~
Перейти в домашний каталог по абсолютному пути (начиная с корня):
cd /home/u/username
Перейти в предыдущий каталог:
cd -
Примеры использования:
# Текущая директория отображается после двоеточия и до символа "$". # Перейти в каталог media username@server:~$ cd /home/u/username/public_html/media # Перейти в каталог cms username@server:~/public_html/media$ cd cms # Перейти в домашний каталог username@server:~/public_html/media/cms$ cd # Перейти в предыдущий каталог username@server:~$ cd - /home/u/username/public_html/media/cms # Перейти на уровень выше username@server:~/public_html/media/cms$ cd .. username@server:~/public_html/media$
Действия с файлами и каталогами
Создание директорий
Команда для создания директорий - mkdir.
Создать директорию:
mkdir имя_директории
Создать сразу несколько директорий:
mkdir имя_директории1 имя_директории2
Создать дерево директорий:
mkdir -p /имя_директории1/имя_директории2
Пример использования:
username@server:~/test_home/test$ ls -l total 0 username@server:~/test_home/test$ mkdir dir1 username@server:~/test_home/test$ ls -l total 4 drwx------ 2 username customers 4096 Mar 10 13:16 dir1
Создание файлов
Для создания файлов можно использовать различные команды, например:
Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется):
touch test.txt
Создать новый файл при его отсутствии (если файл существует, то команда удаляет его содержимое):
> test.txt
Создать новый файл при его отсутствии и записать в него строку "test" (если файл существует, то команда заменяет его содержимое на строку "test"):
echo "test" > test.txt
Вы можете выбрать удобный для вас способ или использовать любой другой.
Также можно создать файл с помощью текстового редактора. На наших серверах доступен nano:
nano имя_файла
При этом файл сразу будет открыт для редактирования.
Чтобы сохранить изменения и закрыть файл, в nano можно воспользоваться сочетанием клавиш Crtl X → Y → Enter.
Копирование файлов и каталогов
Копирование каталогов и файлов осуществляется с помощью команды cp.
Основные способы применения:
Скопировать файл test.txt в файл test1.txt (файл test.txt должен присутствовать в текущей директории):
cp test.txt test1.txt
Скопировать директорию dir1 в директорию dir2, включая всё содержимое (ключ -r означает рекурсивное копирование, директория dir1 должна присутствовать в текущей директории):
cp -r dir1 dir2
Перемещение и переименование файлов
Перемещение и переименование файлов выполняется при помощи команды mv.
Основные способы применения:
Переименовать файл test.txt в test2.txt (файл test.txt должен присутствовать в текущей директории):
mv test.txt test2.txt
Переместить файл test2.txt в директорию dir (файл и директория должны присутствовать в текущей директории):
mv test2.txt dir
Примеры использования:
username@server:~/test_home$ ls -l total 4 drwx------ 2 username customers 4096 Mar 10 13:37 dir -rw------- 1 username customers 0 Mar 10 13:37 test.txt username@server:~/test_home$ mv test.txt test2.txt username@server:~/test_home$ ls -l total 4 drwx------ 2 username customers 4096 Mar 10 13:37 dir -rw------- 1 username customers 0 Mar 10 13:37 test2.txt username@server:~/test_home$ mv test2.txt dir username@server:~/test_home$ ls dir test2.txt
Удаление файлов и каталогов
Для удаления объектов используйте команду rm.
Основные способы применения:
Удалить файл test.txt в текущем каталоге:
rm test.txt
Удалить все файлы в определенной директории:
rm /путь/к/файлам/*
Удалить все файлы с расширением .txt в определенной директории:
rm /путь/к/файлам/*.txt
Удалить директорию и все ее содержимое:
rm -r имя_директории
Для того, чтобы при удалении каждого файла запрашивалось подтверждение, можно использовать ключ -i:
rm -i /путь/к/файлам/*.txt
Если же файлов много и вы точно уверены в необходимости их удаления, можно использовать противоположную опцию -f, тогда удаление будет выполнено без подтверждения:
rm -f /путь/к/файлам/*.txt
Создание ссылок
Ссылки при работе по SSH-протоколу создаются командой ln.
Основные способы применения:
Создать "жёсткую" ссылку:
ln file1 file2
Создать "символьную" ссылку:
ln -s file1 file2
Примеры использования:
username@server:~/test_home$ ls -l total 0 -rw------- 1 username customers 0 Mar 10 14:08 test.txt username@server:~/test_home$ ln -s test.txt link username@server:~/test_home$ ls -l 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 должен существовать в текущей директории):
chmod xxxx file
Изменение прав на xxxx для директории dir (dir должна существовать в текущей директории):
chmod xxxx dir
Примеры использования:
username@server:~/test_home$ ls -l total 4 drwx------ 2 username customers 4096 Mar 10 14:39 dir -rw------- 1 username customers 0 Mar 10 14:39 test.txt
username@server:~/test_home$ chmod 0644 test.txt username@server:~/test_home$ ls -l 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
username@server:~/test_home$ chmod 0777 dir/ username@server:~/test_home$ ls -l total 4 drwxrwxrwx 2 username customers 4096 Mar 10 14:39 dir -rw-r--r-- 1 username customers 0 Mar 10 14:39 test.txt
Работа с содержимым файлов
Конкатенация содержимого файлов
Команда cat позволяет выполнить конкатенацию (объединение) содержимого файлов и печать его в стандартный поток вывода. Данная команда зачастую используется просто для просмотра содержимого файла.
Примеры использования:
username@server:~/test_home$ cat test.txt 1 2 3 4 5 username@server:~/test_home$
Данную команду можно использовать в сочетании с командами head и tail для вывода определённого количества строк от начала или конца файла соответственно.
Примеры использования:
username@server:~/test_home$ cat test.txt | head -2 1 2 username@server:~/test_home$ cat test.txt | tail -1 5
Данные команды позволяют вывести 2 первых строки и 1 последнюю строку файла test.txt.
Поиск по содержимому файла
grep - это популярная команда, позволяющая найти содержимое файлов.
Например, у нас есть файл test1.txt, который имеет следующее содержимое:
username@server:~/test_home$ cat test1.txt 1 first string 2 second string 3 another example of a string 4 something in here 5 andalsohere
Примеры использования grep:
username@server:~/test_home$ grep 'string' test1.txt 1 first string 2 second string 3 another example of a string
username@server:~/test_home$ grep 'th' test1.txt 3 another example of a string 4 something in here
username@server:~/test_home$ grep 'here' test1.txt 4 something in here 5 andalsohere
Данная команда имеет огромное количество способов применения. За дополнительной информацией вы можете обратиться к официальной документации, либо к свободным источникам в интернете.
Поиск файлов
Используйте команду find, чтобы найти нужный файл.
Основные способы применения:
Поиск файлов и каталогов с именем "test" в текущей директории:
find ./ -name 'test'
Поиск в текущей директории файлов и каталогов, имена которых начинаются на "test" и далее содержат любое количество любых символов:
find ./ -name 'test*'
Поиск в домашней директории файлов и каталогов, имена которых начинаются на "test" и далее содержат любое количество любых символов:
find ~/ -name 'test*'
Поиск файлов с расширением ".php" в домашней директории:
find ~/ -name '*.php'
Пример использования:
username@server:~/test_home$ find ./ -name 'test*' ./test.txt
Архивы
Создать архив директории:
tar -cf имя_архива.tar имя_директории
Пример использования:
# Заархивировать директорию /home/u/user/директория_сайта/public_html/media/ # 1.Перейти в каталог, в котором находится директория media: username@server:~$ cd /home/u/user/имя_сайта/public_html/ # 2.Выполнить команду архивации, задав удобное имя архива: username@server:~/имя_сайта/public_html$ tar -cf имя_архива.tar media
Распаковать архив .tar в текущую директорию:
tar -xvf архив.tar
Процесс создания или распаковки тяжелых архивов может завершаться принудительно в связи с установленными ограничениями на использование процессами процессоров сервера.
В таких случаях для архивирования в .tar вы можете использовать следующую команду, которая позволит ограничить скорость архивации и снизить использование ресурсов процессора.
tar -cf - имя_директории| pv -L 2M > имя_архива.tar
Для удобства команда может быть расширена, чтобы отобразить в консоли счетчик времени, оставшегося до завершения процесса, и вывести уведомление (END) о его завершении (позволит проконтролировать, что процесс не прервался и был выполнен успешно).
tar -cf - имя_директории | pv -L 2M -cN tar -s $(du -sb имя_директории | grep -o '[0-9]*') > имя_архива.tar && echo "END"
Для распаковки большого архива .tar можно воспользоваться командой:
pv -L 2M имя_архива.tar | tar xfv - -C ./имя_директории_назначения
Аналогично для распаковки архивов .tar.gz:
pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения
Распаковка .tar.gz с уведомлением о завершении:
pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения && echo "END"
Распаковать архив .rar в текущую директорию:
unrar x архив.rar
Распаковать архив .zip в текущую директорию:
unzip архив.zip
Для распаковки тяжелых .zip-архивов:
pv -L 1M имя_архива.zip | unzip-stream имя_директории_назначения
Базы данных
Создание дампа базы данных:
mysqldump -u'база_данных' база_данных -p'пароль_базы_данных' > имя_дампа.sql
Импорт данных из дампа в базу данных:
mysql -u'база_данных' база_данных -p'пароль_базы_данных' < имя_дампа.sql
Проверка базы данных на наличие ошибок:
mysqlcheck -c -u'база_данных' база_данных -p'пароль_базы_данных'
Восстановление базы данных при наличии ошибок:
mysqlcheck -r -u'база_данных' база_данных -p'пароль_базы_данных'
Подробнее о восстановлении баз данных и решении возможных ошибок см. в статье Восстановление базы данных.
Подключение к серверу баз данных:
mysql -u имя_базы_данных -p
Нажмите Enter, после чего введите пароль базы.
Получение информации о параметрах MySQL:
SHOW VARIABLES LIKE 'параметр'; SHOW SESSION VARIABLES LIKE 'параметр'; # Например: SHOW SESSION VARIABLES LIKE 'max_join_size';
Завершение работы процессов
Завершить текущие процессы можно командой killall. Например, для завершения процессов веб-сервера Apache:
killall -9 apache2
Обратите внимание! После выполнения данной команды для перезапуска обработчиков Apache необходимо изменить версию обработчика php в разделе "Сайты".
Аналогично для других сервисов, например:
killall -9 vsftpd
Завершение процесса MySQL:
mysqladmin -u'база_данных' -p'пароль_базы_данных' kill id_запроса
Для просмотра процессов MySQL используйте:
mysqladmin -u'база_данных' -p'пароль_базы_данных' pr
Дисковое пространство
Вывод информации о текущей дисковой квоте (в квоту не включается информация по базам данных):
quota -s
Вывести размер файлов и директорий в текущем каталоге:
du -sch *
Анализ дискового пространства аккаунта (сканирует корневой каталог):
ncdu
Просканировать файлы конкретную директорию:
ncdu имя_директории
Подробнее об использовании утилиты ncdu смотрите в статье Анализ дискового пространства.
Другие вспомогательные команды
Вывод истории команд:
history
Очистить экран (сочетание клавиш Ctrl-L):
clear
Закрыть подключение по SSH (сочетание клавиш Ctrl-D):
exit
Сочетания клавиш:
Ctrl-C - прервать выполнение текущей команды.
Ctrl-Shift-C - копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением).
Ctrl-Shift-V - вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши).