eFusion 09 января 2020

6 команд терминала и пара комбинаций, полезных для начинающих разработчиков

Для тех, кого уже не пугает команда cd. Краткие описания и примеры выполнения wget, scp, ssh-keygen, chmod, tar, alias. Приёмы перенаправления вывода и комбинирования команд.

1. Загрузка файлов по сети – wget

В *nix-подобных операционных системах wget загружает по сети файлы, обслуживаемые с помощью HTTP, HTTPS или FTP. Самый простой способ использования wget – указать файл для загрузки по HTTP. Например, чтобы загрузить с помощью wget jpg-файл по адресу http://website.com/static/images/header.jpg, выполните следующую команду:

            wget http://website.com/static/images/header.jpg
        

Приятные особенности wget связаны с тем, что это неинтерактивная программа, которая может работать в фоновом режиме, а интерфейс терминала позволяет управлять wget из других программ и скриптов. Так можно автоматизировать загрузку файлов для различных задач.

2. Копирование через SSH – scp

Если необходимо скопировать файл с удалённого сервера на локальный компьютер через SSH, в терминале можно это сделать с помощью scp (сокращение англ. secure copy). Команда похожа на cp, но в ней источник и получатель находятся в разных системах (например, под разными IP-адресами).

Следующее предписание скопирует файл foobar.txt с сервера в локальный каталог:

            scp username@remotehost.com:/path/to/foobar.txt /some/local/directory
        

Команду scp можно использовать и для копирования файла в обратном направлении – из локальной папки на сервер:

            scp /some/local/directory/foobar.txt username@remotehost.com:/destination/path/
        

То же самое можно делать с каталогами, используя опцию -r, которая рекурсивно скопирует все каталоги.

3. Генерация ключей – ssh-keygen

Команда ssh-keygen используется для создания пары ключей SSH. Сгенерированный публичный ключ можно использовать для установления безопасного соединения с GitLab, Bitbucket или в другом виде SSH-подключения к удалённому серверу.

После добавления SSH-ключ в Gitlab или Bitbucket, вам больше не потребуется каждый раз вводить пароль при отправлении в удалённую ветку.

Чтобы создать пару ключей, используйте следующий метод:

            ssh-keygen -t ed25519
        

В приведённом примере указан алгоритм подписи Ed25519, вы можете использовать другие. Генерация ключей не займёт много времени, но это того стоит!

4. Изменение прав доступа к файлам и каталогам – chmod

Все хотя бы раз бывали в положении, когда сервер не даёт доступ к файлу из-за неправильной настройки разрешений. К предоставлению прав к файлам и каталогам нужно относиться серьёзно. Бывало, что из-за неверного сочетания ключей злоумышленники получали полный доступ к серверу и требовали выкуп.

В следующем примере выдаётся разрешение на чтение и запись в файл robots.txt пользователю и группе, а всем остальным только на чтение:

            chmod 664 robots.txt

        

Команда chmod так называется от английского "change mode". Ниже пользователь и группа получают разрешение на чтение, запись и выполнение для папки public/images. Остальные пользователи – только на чтение и выполнение.

            chmod 775 public/images
        

Что «зашифровано» в этих цифрах и как настроить правильные разрешения для файлов и каталогов, вы узнаете из wiki-cтатьи о chmod.

5. Создание и распаковка архивов – tar

Команда tar (англ. tape archive) широко используется в *nix для работы с файлами архивов. Начнём с того, как заархивировать определенный каталог:

            tar -cvf my-archive.tar /path/to/directory
        

Эта операция создаст в текущем рабочем каталоге архив с именем my-archive.tar, содержащий все файлы каталога /path/to/directory.

Создание архивного файла – пол-дела. Распакуем файл в заданный каталог:

            tar -xvf my-archive.tar -C /home/myfolder/
        

6. Cокращённые имена команд и их последовательностей – alias

У каждого в арсенале есть длинные команды, которые сложно запомнить. Облегчить процесс набора позволит создание псевдонима:

            alias short-command="длинная команда с множеством ключей и конвейеров"
        

Но создание псевдонима таким способом приводит к проблеме: этот «алиас» является временным и доступен лишь в текущей сессии терминала. Чтобы сохранить псевдонимы для повторного использования в других сеансах, нужно записать их в файле профиля конфигурации оболочки. Он находится по ссылке ~/.bashrc или ~/.zshrc (при использовании Bash и ZSH соответственно).

Напоследок пара советов про перенаправление потока и комбинирование команд.

Перенаправление вывода

Стандартным устройством вывода является экран. Но часто результаты нужно направлять не на экран, а в файл. Например, для создания логов. Чтобы перенаправить поток, используй оператор >. В следующей команде вывод ls -al перенаправляется в файл myfile:

            ls -al > myfile
        

Комбинирование команд

Команды будут запускаться подряд, независимо от того, будет ли успешно выполнена предыдущая, если поставить их через точку с запятой. :

            ls -al; pwd;
        

Если нужно, чтобы второе приказание выполнялась только при успешном выполнении первого, объедините их логическим оператором &&:

            mkdir images && cd images
        

В этом случае директория будет меняться на images только, если она была успешно создана.

А что, если нужно что-то выполнить, если другую команду осуществить не удалось? Используйте логический оператор ||.

Резюмируем

Для автоматизированной загрузки файлов через HTTP или FTP используйте wget, а для копирования по SSH-каналу – scp (secure copy). Пару SSH-ключей создаст ssh-keygen. Надоело печатать длинные последовательности строк – обзываем их короткими псевдонимами, по-латыни «иначе» это alias. Архивируем и распаковываем архивы с помощью tar. Нужно вывести поток данных не на экран, а в файл – пишите имя файла после оператора >.

Выполнить операции одну за другой можно, поставив их через точку с запятой ;. Чтобы команда выполнялась только в случае успешного завершения предыдущей, используем оператор &&. Когда наоборот, хотим запустить другую команду, если не выполнится первая – ставим между ними оператор ||.

Какие команды в терминале вы используете чаще других?

Источники

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

Комментарии 1

ВАКАНСИИ

Technical Lead – PHP
Монреаль, по итогам собеседования
DevOps Engineer
Казань, по итогам собеседования
iOS Developer
по итогам собеседования
Разработчик Unity 3D
Новосибирск, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

BUG