Базовые команды в консоли
Что такое система контроля версией
Система контроля версий, или VCS, — это программное обеспечение, которое помогает отслеживать изменения в программах, текстовых файлах, больших документах, веб-сайтах и так далее.
Одно изменение или группу изменений в VCS называют ревизией или версией. Каждая такая ревизия содержит информацию о том, что изменилось, кто внёс изменения, когда это было и иногда комментарии к изменению.
Основные функции системы контроля версий:
- хранит историю изменений в виде отдельных ревизий;
- позволяет манипулировать историей: например, менять порядок ревизий, полностью удалять версии, возвращаться назад в истории;
- помогает анализировать изменения: например, кто и когда вносит изменения, кто чаще всего вносит изменения в определённый файл и так далее.
Одна из ключевых особенностей современных систем контроля версий — поддержка параллельной работы нескольких пользователей, в том числе над одним файлом. Именно поэтому VCS так популярны у IT-команд.
Система контроля версий — общее название ряда продуктов, таких как Git, Mercurial, Subversion и других. В этом курсе мы будем говорить о самом популярном из них — Git.
Как не потеряться
В графическом интерфейсе всегда ясно, где именно вы находитесь в файловой системе. Если перед вами рабочий стол, значит, вы в папке «Рабочий стол». Если открыта папка «Документы» — вы в ней.
В командной строке вы тоже всегда находитесь в какой-то папке — просто этого не видно.
Узнать, где вы сейчас, поможет команда pwd
(от англ. print working directory — «показать рабочую папку»). Она выводит путь к текущей директории.Введите pwd
в командную строку и нажмите клавишу Enter
для выполнения команды.
Командная строка выведет путь к папке, в которой вы сейчас находитесь. Вместо %USERNAME%
будет ваше имя пользователя. Это путь к домашней директории (англ. home directory) — каталогу с файлами пользователя. Обычно здесь хранится такая информация, как загрузки, медиа, скриншоты и так далее. Когда вы открываете командную строку, вы оказываетесь именно в домашней директории.
С помощью терминала вы всегда можете перейти к домашней директории. Для этого нужно ввести команду cd
(от англ. change directory — «сменить директорию») и символ ~
— обозначение домашней директории.
Навигация в командной строке
Пришло время узнать больше об основных командах для работы с консолью. Начнём с навигации — мы уже затронули эту тему, когда говорили о домашней директории. Теперь подробнее остановимся на файловой системе и разберём, как перемещаться в ней.
Вывести содержимое директории — ls
Когда вы открываете папку через графический интерфейс операционной системы, вы сразу видите её содержимое. В случае с консолью для отображения файлов и папок используют команду — ls
(от англ. list directory contents — «отобразить содержимое директории»).
Сменить директорию — cd
Следующая важная команда — cd
(от англ. change directory — «сменить директорию»). Вы познакомились с ней в прошлом уроке. Она меняет текущую рабочую директорию на ту, которая указана в качестве параметра: cd имя_папки
.
Рассмотрим пример. Структура директорий может выглядеть так.
/projects /github /open-source-project /practicum /my-project
Допустим, вы находитесь в директории /projects
. Если ввести команду cd github
, она перенесёт вас в директорию /projects/github
.
$ pwd /projects # сейчас мы здесь $ cd github # переходим в папку github $ pwd /projects/github # теперь мы здесь!
Обратите внимание: если в названии папки есть пробелы, при вводе нужно использовать кавычки.
$ cd "Фотографии с дня рождения"
Чтобы вернуться в родительскую директорию — то есть на уровень выше, — вместо названия папки нужно написать две точки: ..
.
Есть ещё одна команда с точкой. Чтобы обратиться к текущей директории, можно использовать .
. Но это нужно довольно редко — например, для запуска скриптов и программ, которые принимают папку в качестве параметра.
Также cd
позволяет перемещаться сразу через несколько директорий. Для этого нужно разделить их названия знаком /
.
$ pwd /projects # сейчас мы здесь $ cd github/open-source-project # переходим через несколько директорий $ pwd /projects/github/open-source-project # переместились сразу в папку open-source-project внутри github
Дополнительные возможности ls
У многих команд консоли есть дополнительные опции. Например, если вы вызовете ls
, то увидите список обычных файлов в директории. Но можно вызвать ls
с флагом -a
и вывести расширенный список. В нём отобразятся все скрытые файлы, которые начинаются с символа .
(например, файлы конфигурации). В том числе два особых файла .
и ..
, которые обозначают текущую и родительскую директории.
А ещё, как и другие команды, ls
может работать с символом домашней директории (~
) и предыдущей директории (..
). Например, ls ~
выведет содержимое домашней директории вне зависимости от того, что показывает pwd
. А ls ..
покажет содержимое родительской директории.
Операции с папками и файлами: создание, копирование, перемещение
Создание файлов и директорий — touch
, mkdir
Чтобы создать файл, нужно ввести в консоль команду touch
(англ. «коснуться») с именем файла в качестве параметра: touch %ИМЯ_ФАЙЛА%
.
$ touch my-new-file.txt # создали файл my-new-file.txt
Хорошей практикой при создании файла считается указывать его расширение (в примере — .txt
). Это позволит операционной системе выбрать подходящую программу, чтобы открыть файл. А ещё поможет другому человеку понять, какое содержимое находится внутри.
Для создания директорий через терминал используют другую команду — mkdir
(от англ. make directory — «создать директорию»).
$ mkdir new-dir # создали директорию new-dir
Можно создать целую структуру директорий одной командой с помощью флага -p
.
$ mkdir -p dir1/dir-inside/dir-deeper-inside # создали папку dir-deeper-inside в папке dir-inside, которая находится в папке dir1
По умолчанию touch
и mkdir
создают файлы и папки в текущей рабочей директории. Например, если вы находитесь в директории abs
, команда touch file.txt
создаст файл именно там: abs/file.txt
.
Также можно использовать обе команды вместе с символом домашней директории (~
) или родительской директории (..
).
Например, команда mkdir ~/my-git-projects
создаст папку my-git-projects
внутри домашней директории.
А команда touch ../../file.txt
создаст файл file.txt
на две папки выше по иерархии. Допустим, если вы находитесь в директории projects/git/hello
, команда touch ../../file.txt
создаст файл по такому пути: projects/file.txt
.
Копирование файлов — cp
Вы наверняка копировали файлы на своём компьютере через графический интерфейс — диспетчер файлов на Windows или Finder на macOS. Посмотрим, как это делать через консоль.
Для копирования файлов через терминал существует команда cp
(от англ. copy — «копировать»). В простом виде cp
принимает два параметра: что копируем
и куда копируем
.
$ cp что_копируем куда_копируем $ cp index.html src/ # скопировали index.html в папку src
Но можно указать сразу несколько файлов.
$ cp что_копируем что_копируем что_копируем куда_копируем $ cp index.html style.css script.js src/ # скопировали три файла (index.html, style.css и script.js) в папку src
Попробуйте вместе с нами! Откройте консоль и создайте папку first-project
где угодно на компьютере. Внутри папки создайте два файла: data.txt
и table.csv
.
$ mkdir first-project $ touch first-project/data.txt first-project/table.csv
Теперь скопируйте файл data.txt
в домашнюю директорию.
$ cd first-project # перешли в директорию $ cp data.txt ~ # скопировали файл в домашнюю директорию
Перемещение файлов и папок — mv
Копирование создаёт копию файла или папки. Но иногда вместо копии нужно удалить файл в одном месте и создать в другом. Для этого есть команда mv
(от англ. move — «переместить»).
Синтаксис команды mv
аналогичен синтаксису cp
. После имени команды указывают список файлов и папок, которые нужно переместить, а затем — папку, в которую нужно выполнить перемещение.
Создайте папку very-important-files
внутри директории first-project
. Перейдите в first-project
командой cd
.
Затем переместите файл table.csv
в папку very-important-files
и проверьте результат.
Операции с папками и файлами: чтение и удаление
Чтение файлов — cat
Чтобы прочитать файл, в консоль нужно ввести cat
(от англ. concatenate and print — «объединить и распечатать») вместе с именем файла. Команда распечатает то, что содержится в нём.
$ cat myfile.txt # распечатали содержимое файла myfile.txt file-content-1 file-content-2
Команда cat
работает только с текстовыми файлами. Вывести этой командой файл другого типа (например, изображение) не получится.
Удаление файлов и папок — rm
, rmdir
, rm -r
Чтобы удалить файл, нужно напечатать команду rm
(от англ. remove — «удалить») и передать ей имя файла.
$ rm example.txt # удалили файл example.txt из текущей папки
Удалить папку можно командой rmdir
(от англ. remove directory — «удалить директорию»). Не забудьте указать имя папки.
$ rmdir images # команда удалит папку images из текущей директории, # если папка images пуста
Если в папке, которую вы пытаетесь стереть, есть какие-то файлы, то командная строка не удалит её и выведет сообщение о том, что папка не пуста (англ. Directory not empty
).
Это защита от случайного удаления нужных файлов. Если папку всё-таки нужно удалить вместе со всем её содержимым, можно использовать команду rm
так.
$ rm -r images # удалили папку images со всем её содержимым из текущей директории
В этом случае команда rm -r
(-r
— от англ. recursive, «рекурсивный») рекурсивно удаляет файлы и папки. Это значит, что удаление будет последовательно применяться к каждому из элементов в этой папке — пока не сотрёт их все. Затем команда удалит пустую директорию.
Например, есть папка "ФОТО"
, внутри которой — файлы и папка "Фотографии с дня рождения"
. Если вызвать команду rm -r
для "ФОТО"
, то сначала будут удалены все файлы и папки внутри неё (в том числе папка "Фотографии с дня рождения"
), а после — сама директория "ФОТО"
.
Эффективная работа с командной строкой
Выполняйте сразу несколько команд
Команды в терминале необязательно вбивать и выполнять по очереди. Их можно указывать не по одной, а сразу списком. Для этого их нужно разделить двумя амперсандами (&&
).
$ mkdir second-project && cd second-project && touch index.html style.css # создаём папку second-project, # переходим в папку second-project # и создаём в ней два файла: index.html и style.css
Вызывайте команды из буфера
Допустим, вчера вы создали пять новых файлов, а сегодня решили добавить к ним ещё один, но не можете вспомнить название нужной команды. На этот случай у терминала есть собственная память. Она называется буфером (от англ. buffer — «посредник»). В буфере хранятся все команды, которые вызывались до этого. По их списку можно перемещаться.
Чтобы обратиться к последней введённой команде, нажмите на клавиатуре стрелку вверх (↑
). Если нажать ещё раз, появится предпоследняя команда; ещё раз — предпредпоследняя; и так далее. Чтобы вернуться — например, от предпоследней команды к последней, — нажмите стрелку вниз (↓
).
Используйте автозаполнение
Необязательно заучивать все команды наизусть. Если нужно найти какую-нибудь из них, достаточно вспомнить, с каких букв она начинается. Можно набрать их в командной строке и дважды нажать клавишу Tab
. Терминал покажет список всех команд, которые начинаются с этих символов.
Tab
автоматически дописывает не только команды, но и пути. Начните печатать имя папки или файла (они должны быть в той же директории) и нажмите Tab
. Терминал заполнит имя автоматически.
Если этого не происходит, значит, есть несколько файлов или папок, которые начинаются так же. Нажмите Tab
ещё раз, и вы увидите их список. Терминал не знает, как ему дозаполнить такой ввод и что именно выбрать, поэтому показывает все варианты, чтобы вы могли уточнить запрос.
Рассмотрим пример. Перейдём в домашнюю директорию /Users/Username
с помощью автозаполнения Tab
.
$ cd /Users/ # перешли в папку Users $ cd U[Tab] # ввели первую букву имени пользователя и нажали Tab # имя папки Username подставится автоматически $ pwd # теперь проверим, где мы сейчас находимся /Users/Username # мы в папке Username!
Есть ещё один способ использовать Tab
при навигации в другую директорию. Если ввести cd
с названием папки, а затем нажать Tab
, в консоль в качестве подсказки выведутся все возможные пути.
Применяйте команды для быстрой навигации
pwd
— проверить, где мы находимся;ls
— посмотреть список файлов/папок в директории;cd
— перейти в выбранную папку.
С помощью этих команд можно быстро перемещаться между каталогами и изучать их содержимое.
Чтобы попасть в корневую директорию Windows, нужно перейти на соответствующий диск. Например, cd c:/
+ Enter
или cd /c
+ Enter
.
Задание для самостоятельной работы
1) Откройте консоль и перейдите в домашнюю директорию с помощью cd ~
.
2) Введите cd
, нажмите пробел, а затем клавишу Tab
. Если консоль сообщит, что вариантов слишком много, нажмите y
. Вы должны увидеть все файлы и папки в текущей директории.
3) Введите несколько первых символов одной из папок (например, Desk
), а затем ещё раз нажмите клавишу Tab
— автозаполнение превратит Desk
в Desktop
. Выполните cd
клавишей Enter
.
4) Два раза нажмите на клавиатуре стрелку вверх (↑
), пока не вернётесь к команде для перехода в домашнюю директорию. Дополните её выводом ls
. Должно получиться следующее: cd ~ && ls
.