1. Загрузка файлов по сети – wget
В *nix-подобных
операционных системах wget
загружает по сети файлы, обслуживаемые с помощью HTTP, HTTPS или FTP. Самый простой способ
использования wget
– указать файл для загрузки по HTTP. Например, чтобы
загрузить с помощью wget
jpg-файл по адресу http://website.com/static/images/header.jpg
, выполните следующую команду:
Приятные особенности wget
связаны с тем, что это неинтерактивная программа, которая может работать в фоновом режиме, а интерфейс терминала позволяет управлять wget
из других программ и скриптов. Так можно автоматизировать загрузку файлов для различных задач.
2. Копирование через SSH – scp
Если необходимо скопировать файл с удалённого сервера на локальный компьютер через SSH, в терминале можно это сделать с помощью scp
(сокращение англ. secure copy). Команда похожа на cp
, но в ней источник и получатель находятся в разных системах (например, под разными IP-адресами).
Следующее предписание скопирует
файл foobar.txt
с сервера в локальный каталог:
Команду scp
можно
использовать и для копирования файла в обратном направлении – из локальной папки
на сервер:
То же самое можно делать с каталогами, используя опцию -r
, которая рекурсивно скопирует все
каталоги.
3. Генерация ключей – ssh-keygen
Команда ssh-keygen
используется для создания пары ключей SSH. Сгенерированный публичный ключ можно использовать для установления безопасного соединения с GitLab, Bitbucket или в другом виде SSH-подключения к удалённому серверу.
После добавления SSH-ключ в Gitlab или Bitbucket, вам больше не потребуется каждый раз вводить пароль при отправлении в удалённую ветку.
Чтобы создать пару ключей, используйте следующий метод:
В приведённом примере указан алгоритм подписи Ed25519, вы можете использовать другие. Генерация ключей не займёт много времени, но это того стоит!
4. Изменение прав доступа к файлам и каталогам – chmod
Все хотя бы раз бывали в положении, когда сервер не даёт доступ к файлу из-за неправильной настройки разрешений. К предоставлению прав к файлам и каталогам нужно относиться серьёзно. Бывало, что из-за неверного сочетания ключей злоумышленники получали полный доступ к серверу и требовали выкуп.
В следующем примере выдаётся разрешение на чтение и запись в файл robots.txt
пользователю и группе, а всем остальным только на чтение:
Команда chmod
так называется от английского "change mode". Ниже пользователь и группа получают разрешение на чтение, запись и выполнение для
папки public/images
. Остальные пользователи – только на чтение и выполнение.
Что «зашифровано» в этих цифрах и как настроить правильные разрешения для файлов и каталогов, вы узнаете из wiki-cтатьи о chmod.
5. Создание и распаковка архивов – tar
Команда tar
(англ. tape archive) широко
используется в *nix для работы с файлами архивов. Начнём с того,
как заархивировать определенный каталог:
Эта операция создаст в текущем рабочем каталоге архив с именем my-archive.tar
, содержащий
все файлы каталога /path/to/directory
.
Создание архивного файла – пол-дела. Распакуем файл в заданный каталог:
6. Cокращённые имена команд и их последовательностей – alias
У каждого в арсенале есть длинные команды, которые сложно запомнить. Облегчить процесс набора позволит создание псевдонима:
Но создание псевдонима таким способом
приводит к проблеме: этот «алиас» является временным и доступен лишь в
текущей сессии терминала. Чтобы сохранить
псевдонимы для повторного использования в других сеансах, нужно записать их в
файле профиля конфигурации оболочки. Он находится по
ссылке ~/.bashrc
или ~/.zshrc
(при использовании Bash и ZSH соответственно).
Напоследок пара советов про перенаправление потока и комбинирование команд.
Перенаправление вывода
Стандартным устройством
вывода является экран. Но часто результаты нужно направлять не на экран, а в файл. Например, для создания логов. Чтобы перенаправить
поток, используй оператор >
. В следующей команде вывод ls -al
перенаправляется
в файл myfile
:
Комбинирование команд
Команды будут запускаться подряд, независимо от того, будет ли успешно выполнена предыдущая, если поставить их через точку с запятой. :
Если нужно, чтобы второе приказание выполнялась только при успешном выполнении первого, объедините их логическим оператором &&
:
В этом случае директория будет меняться на images
только, если она была успешно создана.
А что, если нужно что-то выполнить, если другую команду осуществить не удалось? Используйте логический оператор ||
.
Резюмируем
Для автоматизированной загрузки файлов через HTTP или FTP используйте wget
, а для копирования по SSH-каналу – scp
(secure copy). Пару SSH-ключей создаст ssh-keygen
. Надоело печатать длинные последовательности строк – обзываем их короткими псевдонимами, по-латыни «иначе» это alias
. Архивируем и распаковываем архивы с помощью tar
. Нужно вывести поток данных не на экран, а в файл – пишите имя файла после оператора >
.
Выполнить операции одну за другой можно, поставив их через точку с запятой ;
. Чтобы команда выполнялась только в случае успешного завершения предыдущей, используем оператор &&
. Когда наоборот, хотим запустить другую команду, если не выполнится первая – ставим между ними оператор ||
.
Комментарии