Нет, в этой статье мы не будем говорить о базовых командах, таких как ls, rm и cd. Вы не должны пугаться, увидев их. Более того, скорее всего, вы даже знакомы с ними. Особенно, если вы достаточно хорошо разбираетесь в принципах работы с командной строкой. Я рассчитываю, что ранее вы хотя бы немного работали (или пытались работать) с командной строкой. Если же вы никогда не сталкивались с этим, я советую вам начать с изучения основ.
Эта статья для тех, кто имел небольшой опыт работы с командной строкой и оценил возможности базовых команд; для тех, кто решил, что пришло время глубже изучить возможности этого инструмента. В этой статье я расскажу вам о 6 командах, а в конце дам несколько полезных советов.
1. wget
В Unix-подобных операционных системах команда wget служит для загрузки файлов по сети через протоколы HTTP, HTTPS или FTP. Эта команда присутствует во всех уважающих себя дистрибутивах Linux.
Самый простой способ применения wget — передать ей один аргумент, содержащий путь к файлу, который мы хотим загрузить. Например, для загрузки файла
website.com/static/images/header.jpg
мы должны ввести в командной строке
wget http://website.com/static/images/header.jpg
Одна из замечательных особенностей wget — то, что для её работы не нужен интерактивный режим: она может выполняться в фоновом режиме, даже если пользователь не выполнил вход в систему. Это позволит вам начать извлечение данных, а затем выйти из системы, предоставив wget возможность завершить работу самостоятельно.
2. scp
Вы когда-нибудь сталкивались с необходимостью хранить копию файла с удалённого сервера на своей локальной машине? Например, такое бывает, когда пользователь обновил или загрузил на сервер свою копию файла и это вызвало проблемы.
Загружать копию файла с сервера можно с помощью команды scp (сокращённо, secure copy — безопасное копирование). Но что ещё важнее, это копирование выполняется удалённо. Команда scp похожа на cp, которая вам, возможно, уже известна, но адрес источника (откуда копируем) и адрес назначения (куда копируем) могут принадлежать разным системам.
Эта команда копирует файл foobar.txt с удалённого сервера в локальную директорию:
scp username@remotehost.com:/path/to/foobar.txt /some/local/directory
И наоборот: можно копировать данные из локальной директории на удалённый сервер.
scp /some/local/directory/foobar.txt username@remotehost.com:/destination/path/
Можно копировать и целую директорию, используя флаг -r для рекурсивного копирования содержимого всех её файлов и поддиректорий.
3. ssh-keygen
Команду применяют для генерации пары SSH-ключей. Публичный ключ, сгенерированный этой командой, можно использовать в Gitlab или Bitbucket для обеспечения безопасного подключения.
Добавив туда свой SSH-ключ один раз, вы избавитесь от необходимости вводить пароль каждый раз, когда пытаетесь сделать push в удалённую ветку.
Чтобы сгенерировать пару SSH-ключей введите в командной строке, например, такое:
ssh-keygen -t ed25519
Обратите внимание, что в примере выше мы используем для подписи алгоритм ED25519. Хотя этот алгоритм считается одним из лучших, рекомендую всегда рассматривать разные варианты.
Генерация пары ключей и настройка SSH в Gitlab или Bitbucket займет у вас 10 минут максимум (а скорее всего, минуты 3), но это 100% стоит того.
4. chmod
В Unix и Unix-подобных операционных системах chmod — это команда для изменения прав доступа к файлам и каталогам.
Это определение команды chmod из Википедии. У большинства из нас была ситуация, когда сервер не давал доступ к файлу из-за отсутствия тех или иных разрешений файловой системы.
С одной стороны, команда chmod сама по себе достаточно проста, но правильная настройка прав доступа к файлам и каталогам — это совсем другое дело.
chmod 664 robots.txt
chmod 775 public/images
В первом примере мы устанавливаем права на чтение и запись файла robots.txt для пользователя и группы. Всем остальным мы даём только права на чтение.
Во втором примере мы устанавливаем права на чтение, запись и исполнение каталога public/images для пользователей и группы. Всем остальным мы даём только права на чтение и исполнение.
Если вы хотите больше узнать о разрешениях файловой системы и настройке прав доступа к файлам и каталогам, советую почитать о chmod в Википедии.
5. tar
В Linux команда tar (формат битового потока Tape ARchive) собирает множество файлов в один.
Начнём с создания архива для произвольной директории:
tar -cvf my-archive.tar /path/to/directory
Результатом выполнения этой команды будет файл с именем my-archive.tar, содержащий все файлы директории /path/to/directory.
Но архивирование — это только полдела. Часто нам требуется распаковать архив, потому что мы хотим использовать его содержимое. Мы можем распаковать tar-файл в произвольную директорию, введя в командной строке
tar -xvf my-archive.tar -C /home/myfolder/
6. alias
Каждый, скорее всего, сталкивался с необходимостью многократного использования слишком длинных или сложных команд, которые трудно запомнить. К счастью, для каждой такой команды можно создать псевдоним (alias) и не запоминать команды полностью.
alias short-command="your custom and very long command here"
Однако при использовании команды alias возникает одна проблема: псевдоним существует временно. Если вы создадите его так, как показано выше, alias будет доступен лишь до конца текущей сессии.
Чтобы псевдоним не умирал в конце сессии, вы можете сохранить его в конфигурационном файле профиля shell для текущего пользователя. Конфигурационный файл обычно хранится по адресу ~/.bashrc или ~/.zshrc, если вы используете Bash или ZSH соответственно.
А теперь перейдём к советам.
Совет 1: Перенаправляйте вывод
Стандартное устройство вывода, установленное по умолчанию, — это экран. Но иногда вы не хотите выводить на экран всю информацию. В некоторых случаях вы, возможно, захотите вывести результаты работы некоторых команд в файл, например, для логирования.
Чтобы перенаправить вывод, можно использовать знак “>”. В следующем примере мы выводим результат работы команды ls -al не на экран, а в файл myfile.
ls -al > myfile
В примере выше я использовал ls, но на самом деле мог использовать любую команду, которая выводит какую-либо информацию в качестве результата своей работы. Чтобы проверить, что это работает, вы теперь можете вывести содержимое файла myfile на экран.
cat myfile
Совет 2: Комбинируйте команды
Можно запускать две или более команд за раз. Для этого в качестве разделителя можно использовать оператор “;”. Так вы сможете выполнить все команды независимо от результатов работы каждой предшествующей команды.
ls -al; pwd;
Если вам нужно, чтобы вторая команда запускалась только в случае успешного выполнения первой, то в качестве разделителя используйте логическую операцию “И”, то есть &&.
mkdir images && cd images
В примере выше мы хотим применить команду cd к каталогу images только в том случае, если он будет успешно создан.
Но иногда может возникнуть другая задача: запустить вторую команду только в том случае, если первая не отработала успешно. Тогда используйте логическую операцию “исключающее ИЛИ”, то есть ||.
TonyLorencio
В пункте 5 про tar у вас фактическая ошибка. Архив
.tar
— не содержит сжатых данных, несколько файлов лишь помещаются в один.owlnagi Автор
спасибо! поправили