Командная строка - qa-guru/knowledge-base GitHub Wiki
Командная строка часто нужна для сборки кода, доступа к удаленному серверу или репозиторию. Даже если вы работаете в Windows, то большинство продакшена работает на Unix-подобных системах и только некоторые развернуты на Azure. Поэтому знание основ работы с командной строкой — база, необходимая каждому человеку, работающему с кодом.
Командная оболочка обычно запускается с символом доллара, который выполняет роль разделителя, и не выполняется. Слева от разделителя выводится текущая директория, а справа – вводится команда. После каждой введенной команды ее необходимо выполнить. Для запуска надо нажать Enter
.
Обычно конструкции команд выглядят так:
$ <команда> <опции/ключи> <параметры>
Пример:
Вызов команды date
выведет актуальную дату и время
$ date
Вс 03 апр 2022 00:10:57 MSK
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
.
Пример:
$ 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 git
git (1) - the stupid content tracker
Git (3pm) - Perl interface to the Git version control system
Команда получения полного пути к программе. Если надо узнать, где находится программа, и получить полный путь к ней, то можно вызвать команду whereis <название-утилиты>
.
Пример:
$ whereis git
git: /usr/bin/git /usr/share/git /usr/share/man/man1/git.1.gz
Терминал позволяет работать нам от лица любого пользователя и, если вы, к примеру, зашли на удаленный сервер и не до конца понимаете, с чьего профиля, об этом тоже можно спросить систему. Достаточно вызвать команду whoami
.
Пример:
$ whoami
superuser1
Если в терминале введено уже много команд и мусора, то можно его очистить. Для этого достаточно вызвать команду clear
. Она встроенная и не принимает аргументы.
Команда для просмотра содержимого каталогов. По умолчанию выводит содержимое текущего каталога, но в ней также можно указать путь до другого каталога.
Опции:
- -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 ..
.
Примеры:
Представим, что мы находимся в папке Downloads
, которая сама расположена в корне, а в ней есть папка New
. Для перехода из Downloads
в New
необходимо вызвать cd New
.
~/Downloads $ cd New
~/Downloads/New $
Если хотим вернуться назад, то вызываем cd ..
.
~/Downloads/New $ cd ..
~/Downloads $
Большинство современных оболочек командой строки выводят текущий путь, но бывает всякое и иногда надо узнать свое местонахождение в системе. Для этих целей есть команда pwd
, выводящая точный и актуальный путь.
Пример:
$ pwd
/home/daniilshat/Downloads/New
С помощью команды mkdir
можно создать новую папку в текущем каталоге:
Пример:
Создаст папку New
$ mkdir New
Создаст вложенную структуру папок
$ mkdir New/New/New
В Unix-подобных ОС файлы могут быть без явно указанного расширения и, если надо выяснить тип файла, можно вызвать соответствующую команду.
Пример:
$ file New.txt
New.txt: ASCII text
Файл или папку можно удалить с помощью вызова rm
. Команда действует точечно и, если в папке есть файлы или другие директории, надо запустить рекурсивное удаление – указать ключ -r
. С этой командой надо работать внимательно: rm
не перемещает в корзину, а удаляет без права возврата.
Пример:
Удалит папку New
, если в ней ничего больше нет
$ rm New
Удалит папку New
со всем ее содержимым
$ rm -r New
Так получилось, что в Unix-подобных системах за перемещение и переименование файла отвечает одна и та же команда — mv
. Если мы хотим переименовать файл, то надо вызвать следующую конструкцию: mv <имя-файла> <новое-имя-файла>
. Если переместить, то mv <исходный-файл(-ы)> <куда>
.
Примеры:
Переместит файл test.txt
в папку New
$ mv test.txt New
Переименует test.txt
в new.txt
$ mv test.txt new.txt
Для копирования заготовлена команда cp
. Если надо скопировать файл в файл, то следует воспользоваться следующей конструкцией: cp <файл-источник> <файл-приемник>
. Если надо скопировать файл в директорию, то cp <файл-источник> <директория-приемник/
.
Пример:
Скопирует файл в другой файл
$ cp file.txt file1.txt
Скопирует файл в директорию
$ cp file.txt home/
Команда du
выводит в консоль размер файла или всей директории. Имеет следующую конструкцию: du <путь-к-папке/файл>
. Предусмотрено несколько ключей для более читаемого вывода:
-
-h
или--human-readable
— выводит размер в удобных для человека единицах измерения; -
-a
или--all
— выводит размер всех файлов, а не только директорий; -
--si
— выводит размер в СИ (округляет 1024 до 1000); -
-s
или--summarize
— выводит только общий размер.
Примеры:
Выводит размер директории VR
в привычном для человека виде
~/Downloads $ du -h VR
6,9M VR