Командная строка - qa-guru/knowledge-base GitHub Wiki

Командная строка часто нужна для сборки кода, доступа к удаленному серверу или репозиторию. Даже если вы работаете в Windows, то большинство продакшена работает на Unix-подобных системах и только некоторые развернуты на Azure. Поэтому знание основ работы с командной строкой — база, необходимая каждому человеку, работающему с кодом.

Командная оболочка обычно запускается с символом доллара, который выполняет роль разделителя, и не выполняется. Слева от разделителя выводится текущая директория, а справа – вводится команда. После каждой введенной команды ее необходимо выполнить. Для запуска надо нажать Enter.

Обычно конструкции команд выглядят так:

$ <команда> <опции/ключи> <параметры>

Пример:
Вызов команды date выведет актуальную дату и время

$ date
Вс 03 апр 2022 00:10:57 MSK

Команды получения справки

man

man (от анг. manual) — команда для получения справки по инструменту. Если вы забыли, для чего нужна та или иная утилита, то необязательно искать информацию в Google. Вероятно, разработчики подготовили подробную инструкцию и ее просто надо запросить. Для запроса справки существует такая конструкция: man <название-утилиты>.

Пример:

$ man git

GIT(1)                                                              Git Manual                                                             GIT(1)

NAME
       git - the stupid content tracker

SYNOPSIS
       git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]
... 
...
...

Обычно, чтобы выйти из режима просмотра справки, необходимо нажать клавишу q или h. Об этом сообщит сама справка, просто надо внимательно прочитать ее содержимое.

help

Не все разработчики ответственные, поэтому не для каждой команды или инструмента есть справка. Бывают случаи, когда она и не нужна. Если есть необходимость быстро вспомнить самые основные способы взаимодействия с инструментом, можно вызвать <название-команды> help.

Пример:

$ git help 

использование: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]

Стандартные команды Git, используемые в различных ситуациях:

создание рабочей области (смотрите также: git help tutorial)
   clone     Клонирование репозитория в новый каталог
   init      Создание пустого репозитория Git или переинициализация существующего

работа с текущими изменениями (смотрите также: git help everyday)
   add       Добавление содержимого файла в индекс
   mv        Перемещение или переименование файла, каталога или символьной ссылки
   restore   Restore working tree files
   rm        Удаление файлов из рабочего каталога и индекса
...
...
...

whatis

Если у вас установлен какой-то инструмент и вы забыли, для чего он нужен, то можно спросить систему и она любезно расскажет. Для этих целей предусмотрена команда whatis <название>.

Пример:

$ whatis git

git (1)              - the stupid content tracker
Git (3pm)            - Perl interface to the Git version control system

whereis

Команда получения полного пути к программе. Если надо узнать, где находится программа, и получить полный путь к ней, то можно вызвать команду whereis <название-утилиты>.

Пример:

$ whereis git
git: /usr/bin/git /usr/share/git /usr/share/man/man1/git.1.gz

whoami

Терминал позволяет работать нам от лица любого пользователя и, если вы, к примеру, зашли на удаленный сервер и не до конца понимаете, с чьего профиля, об этом тоже можно спросить систему. Достаточно вызвать команду whoami.

Пример:

$ whoami

superuser1

clear

Если в терминале введено уже много команд и мусора, то можно его очистить. Для этого достаточно вызвать команду clear. Она встроенная и не принимает аргументы.

Команды управления файлами

ls

Команда для просмотра содержимого каталогов. По умолчанию выводит содержимое текущего каталога, но в ней также можно указать путь до другого каталога.

Опции:

  • -l — выводить подробный список с идентификатором владельца файла, размером, датой создания и другими параметрами;
  • -a — отображать все файлы, даже скрытые и системные;
  • -f — не сортировать список;
  • -t — сортировать по времени создания;
  • -1 — отображать по одному файлу в строчку.

Примеры:

$ ls

algorithms-synopses        image-processing-in-python  space-invaders-python
allure-notifications       knowledge-base              test1
allure-notifications.wiki  programming-homeworks       test1.wiki
daniilshat                 simple-blackjack            test-qaguru-synopses
database-homework          simple-game                 test-qaguru-synopses.wiki
getting-started.wiki       simple-ytdownloader         textTikTakToe
$ ls -l

итого 72
drwxr-xr-x 6 daniilshat daniilshat 4096 фев  8 21:54 algorithms-synopses
drwxr-xr-x 8 daniilshat daniilshat 4096 мар 29 00:28 allure-notifications
drwxr-xr-x 3 daniilshat daniilshat 4096 мар 25 23:03 allure-notifications.wiki
drwxr-xr-x 5 daniilshat daniilshat 4096 янв 25 21:31 daniilshat
drwxr-xr-x 4 daniilshat daniilshat 4096 сен 17  2021 database-homework
drwxr-xr-x 3 daniilshat daniilshat 4096 мар 23 12:36 getting-started.wiki
drwxr-xr-x 5 daniilshat daniilshat 4096 янв 24 21:31 image-processing-in-python
drwxr-xr-x 5 daniilshat daniilshat 4096 мар 30 01:48 knowledge-base
drwxr-xr-x 7 daniilshat daniilshat 4096 апр 19  2021 programming-homeworks
drwxr-xr-x 3 daniilshat daniilshat 4096 мая 10  2021 simple-blackjack
drwxr-xr-x 7 daniilshat daniilshat 4096 апр  6  2021 simple-game
drwxr-xr-x 3 daniilshat daniilshat 4096 мая  5  2021 simple-ytdownloader
drwxr-xr-x 6 daniilshat daniilshat 4096 мар  7 22:47 space-invaders-python
drwxr-xr-x 4 daniilshat daniilshat 4096 мар 29 00:37 test1
drwxr-xr-x 3 daniilshat daniilshat 4096 мар 29 00:26 test1.wiki
drwxr-xr-x 4 daniilshat daniilshat 4096 мар 30 01:48 test-qaguru-synopses
drwxr-xr-x 3 daniilshat daniilshat 4096 апр  3 00:02 test-qaguru-synopses.wiki
drwxr-xr-x 3 daniilshat daniilshat 4096 мар 29  2021 textTikTakToe

cd

Команда cd нужна для перемещения между директориями. Если вызвать просто cd, то система вернет в домашний каталог. Вызов cd <название-директории/путь> перенаправит в указанное место. Можно подняться на один шаг вверх, для этого надо вызывать cd ...

Примеры:

Представим, что мы находимся в папке Downloads, которая сама расположена в корне, а в ней есть папка New. Для перехода из Downloads в New необходимо вызвать cd New.

~/Downloads $ cd New
~/Downloads/New $

Если хотим вернуться назад, то вызываем cd ...

~/Downloads/New $ cd ..
~/Downloads $

pwd

Большинство современных оболочек командой строки выводят текущий путь, но бывает всякое и иногда надо узнать свое местонахождение в системе. Для этих целей есть команда pwd, выводящая точный и актуальный путь.

Пример:

$ pwd
/home/daniilshat/Downloads/New

mkdir

С помощью команды mkdir можно создать новую папку в текущем каталоге:

Пример:
Создаст папку New

$ mkdir New

Создаст вложенную структуру папок

$ mkdir New/New/New

file

В Unix-подобных ОС файлы могут быть без явно указанного расширения и, если надо выяснить тип файла, можно вызвать соответствующую команду.

Пример:

$ file New.txt
New.txt: ASCII text

rm

Файл или папку можно удалить с помощью вызова rm. Команда действует точечно и, если в папке есть файлы или другие директории, надо запустить рекурсивное удаление – указать ключ -r. С этой командой надо работать внимательно: rm не перемещает в корзину, а удаляет без права возврата.

Пример:
Удалит папку New, если в ней ничего больше нет

$ rm New

Удалит папку New со всем ее содержимым

$ rm -r New

mv

Так получилось, что в Unix-подобных системах за перемещение и переименование файла отвечает одна и та же команда — mv. Если мы хотим переименовать файл, то надо вызвать следующую конструкцию: mv <имя-файла> <новое-имя-файла>. Если переместить, то mv <исходный-файл(-ы)> <куда>.

Примеры:
Переместит файл test.txt в папку New

$ mv test.txt New

Переименует test.txt в new.txt

$ mv test.txt new.txt

cp

Для копирования заготовлена команда cp. Если надо скопировать файл в файл, то следует воспользоваться следующей конструкцией: cp <файл-источник> <файл-приемник>. Если надо скопировать файл в директорию, то cp <файл-источник> <директория-приемник/.

Пример:
Скопирует файл в другой файл

$ cp file.txt file1.txt

Скопирует файл в директорию

$ cp file.txt home/

du

Команда du выводит в консоль размер файла или всей директории. Имеет следующую конструкцию: du <путь-к-папке/файл>. Предусмотрено несколько ключей для более читаемого вывода:

  • -h или --human-readable — выводит размер в удобных для человека единицах измерения;
  • -a или --all — выводит размер всех файлов, а не только директорий;
  • --si — выводит размер в СИ (округляет 1024 до 1000);
  • -s или --summarize — выводит только общий размер.

Примеры:
Выводит размер директории VR в привычном для человека виде

~/Downloads $ du -h VR
6,9M    VR
⚠️ **GitHub.com Fallback** ⚠️