Материалы для студентов по командной строке

Командная строка — это способ управления компьютером без графического интерфейса. В этом модуле мы изучим основные команды для взаимодействия с компьютером.

Ключевые выводы

  • Учащиеся будут перемещаться по компьютеру с помощью команд.
  • Учащиеся будут создавать, перемещать, копировать и удалять файлы и папки.

Что такое командная строка?

Большинство пользователей чаще всего взаимодействуют с компьютером с помощью графического интерфейса пользователя (GUI). В GUI для управления окнами с помощью значков, кнопок, полос прокрутки и т. д. обычно используются мышь или сенсорный экран.

Командная строка — это альтернативный способ просмотра компьютера. Иногда её называют «оболочкой», «терминалом», «bash» или «текстовым интерфейсом». Командная строка:

  • Средство взаимодействия с компьютерной программой, при котором пользователь вводит команды, например:
open README.txt
  • Способ навигации и управления компьютером без мыши.
  • Неграфический способ создания, чтения, обновления, управления и удаления файлов и каталогов. Например:
mv README.txt readme.txt

Графический интерфейс и командная строка работают с одним и тем же! Это разные способы взаимодействия с компьютером.

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

Разработчики часто отдают предпочтение интерфейсам командной строки:

  • Они предоставляют более компактный способ управления программой или операционной системой. Почему? Потому что всё происходит в одном окне, и с опытом это становится проще, чем поиск и управление объектами с помощью мыши.
  • Они легко предоставляют возможности управления командой. Почему? Меню в графических интерфейсах предоставляют очень ограниченное количество опций. В командной строке сотни команд, и добавление нескольких символов к команде может заставить её выполнять множество различных действий. Например:
  • ls Базовый список файлов
  • ls -a Вывести список всех файлов, включая обычно скрытые файлы
  • ls -l Длинный список, показывающий информацию о каждом файле
  • ls -R Рекурсивно, вывести список содержимого каталогов
  • ls -la Длинный список всех файлов
  • Они позволяют легко и комплексно обрабатывать множество файлов одновременно.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Они предоставляют средства для программирования операционной системы (программы-оболочки), например, приведенный выше пример — очень простая программа-оболочка, предназначенная для изменения изображений с именами файлов, заканчивающимися на .png .

Командная строка в действии

Части команды командной строки

Все команды состоят из трех частей:

  • Команда (или утилита) всегда идет первой.
  • Флаги необязательны и зависят от используемой утилиты. Флаги всегда начинаются с символа «-» (минус).
  • Аргументы — это данные, на основе которых команда должна выполнять действие, или необходимая информация. Часто это имена файлов.

Обрамление

Контекст и цель

Командная строка — это способ управления компьютером без мыши или графического интерфейса пользователя (GUI). До того, как Apple Computer начала выпускать машины с иконками и папками, на которые можно было кликать, единственным способом взаимодействия с компьютером была командная строка.

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

Поскольку терминал представляет собой гораздо более простой интерфейс, он имеет большое преимущество перед графическим интерфейсом, когда требуется удалённое подключение к компьютеру по сети. Разработчики часто этим занимаются, например, во время путешествий.

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

Цели обучения

Студенты смогут

  • Используйте Терминал для навигации по файлам и папкам
  • Вывести список содержимого папки
  • Создание файлов и папок в командной строке
  • Перемещение файлов и папок
  • Копировать файлы и папки
  • Удалить файлы и папки

Начиная

Доступ к терминалу

Каркас и назначение секции

Терминал предоставляет операционной системе интерфейс командной строки (CLI). С его помощью вы можете отдавать компьютеру прямые текстовые команды.

Для этого нам необходимо запустить ваш терминал на основе используемой вами системы.

При запуске терминал запустится в домашнем каталоге вашего компьютера (как бы вы его ни назвали). Домашний каталог обозначается тильдой ~ .

При обсуждении нашего мира внутри Терминала, Каталоги — это то же самое, что и Папки (иногда мы можем называть их просто Каталогами ).

Изменение каталогов

Каркас и назначение секции

Чтобы общаться с компьютером через Терминал и сообщать ему, что мы хотим делать, нам нужно говорить на одном языке. Командная строка понимает команды, написанные на языке сценариев bash . Эти команды представляют собой аббревиатуры или сокращения английских слов.

При навигации в терминале важно знать, где вы находитесь (это напрямую применимо и к реальной жизни — если вы хотите куда-то попасть, вам для начала нужно узнать свое текущее местоположение).

# See your current location - abbreviation for 'print working directory'
pwd

Список доступных файлов и каталогов

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

Чтобы узнать, какие файлы или папки находятся в текущем каталоге, используйте команду ls (сокращение от list), чтобы просмотреть список содержимого.

# See files and folders in current location - abbreviation for 'list'
ls

Изменить рабочий каталог

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

Синтаксис, сообщающий командной строке о необходимости перемещения в новый каталог (также известный как папка), выглядит следующим образом: cd за которым (в той же строке) следует путь к новой папке.

Если вы переходите в каталог, который находится внутри каталога, в котором вы сейчас находитесь (т. е. в подпапку вашего рабочего каталога ), используйте команду cd , а затем имя папки.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Вы также можете начать перемещение из домашнего каталога ~ .

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Если вы сменили каталоги, но вам необходимо вернуться в домашний каталог, сделайте это, либо перейдя напрямую в домашний каталог с помощью ~ , либо используя .. для перехода на один уровень вверх.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

Обратите внимание, что cd .. позволяет подняться (назад) только на один уровень, поэтому, если вы уже три раза меняли каталоги (спускались на три уровня), вам нужно будет использовать cd .. три раза, чтобы вернуться домой, но cd ~ нужно будет использовать только один раз.

Мини-задания

  • Используйте ls чтобы увидеть, что находится внутри вашего текущего каталога.
  • Вернитесь в свой домашний каталог и используйте ls , чтобы просмотреть содержимое вашей домашней папки.
  • Выберите имя одной из папок, находящихся внутри домашнего каталога, и перейдите в эту новую папку.
  • Используйте команду list, чтобы увидеть, что внутри.

Совет: автодополнение с помощью tab

При смене каталогов с помощью команды cd даже одна опечатка может помешать её корректному выполнению. Однако нажатие клавиши tab автоматически дополнит имя любого доступного каталога в текущем каталоге. Поэтому вместо того, чтобы вводить cd Documents , введите просто cd Do и нажмите клавишу tab , и терминал автоматически дополнит команду cd Documents/ (символ / в конце необязателен, но он указывает, что конечный каталог — это каталог).

Это автодополнение не только экономит время, когда работает, но и предоставляет ценную информацию, когда не работает. Если кнопка Tab не работает автодополнением, вероятно, вы столкнулись с одной из трёх распространённых проблем:

  1. Каталог, в который вы хотите перейти, недоступен из вашего текущего рабочего каталога.
  2. Есть два каталога с похожими начальными названиями (например, Documents и Downloads ), и вы не указали достаточно информации для автозаполнения, чтобы система определила нужный вам каталог. Нажмите клавишу tab ещё раз, чтобы увидеть список каталогов, которые могут совпадать с введенным вами текстом. Затем введите ещё немного (достаточно, чтобы было только одно совпадение) и снова нажмите клавишу tab .
  3. Вы уже допустили опечатку в первой половине слова.

Чем раньше вы привыкнете использовать клавишу Tab для автодополнения команд, тем больше вероятность, что вы будете справляться с неприятными ситуациями, когда ваши команды не работают.

Родительские и дочерние каталоги

Каталоги и файлы могут иметь дочерние и родительские отношения друг с другом. Если directory_b находится внутри directory_a , directory_b считается дочерним элементом directory_a . В этом случае directory_a считается родительским элементом directory_b . Если третий элемент, my_file , находится внутри directory_b , он считается дочерним элементом directory_b и внучатым элементом directory_a .

Эти отношения часто иллюстрируются на форумах текстовой диаграммой, например такой:

directory_a/
  directory_b/
    my_file

Обратите внимание, что имена каталогов заканчиваются на символ / , а имена файлов — нет. Такую иерархическую организацию обычно называют древовидной структурой файловой системы.

Братья и сестры

Если на одном уровне находится несколько файлов или папок, они называются родственными . Например, если file_b и file_c находятся внутри directory_a они являются родственными .

Эта текстовая диаграмма будет выглядеть так:

directory_a/
  file_b
  file_c

Обратите внимание, что поскольку file_b и file_c являются родственными, они имеют одинаковый отступ.

Пути к файлам

Ниже представлена более сложная текстовая диаграмма, которая отображает как родительско-детские, так и братско-сестринские отношения.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

В этом примере new_york_city/ — это имя каталога, но у него также есть путь , в котором подробно описано, как туда попасть: ~/north_america/united_states/new_york/new_york_city/ .

Чтобы изменить каталог на new_york_city/, вы можете перемещаться по шагам, используя имена, или вы можете пройти весь путь одной командой, используя путь.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

Сводка навигационных команд

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

Мини-задания

  • Используйте pwd , чтобы узнать, в какой папке вы сейчас находитесь.
  • Перейдите в другой каталог и подтвердите новое местоположение.
  • Попробуйте ещё раз и перейдите в другую папку. Используйте новые команды, чтобы увидеть своё местоположение и файлы в этом каталоге.

Создание файлов и каталогов

Каркас и назначение секции

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

Прежде чем создавать файлы и папки, определите свое местоположение в терминале.

# See your current location.
pwd

Чтобы создать файл, используйте команду touch а затем имя файла.

# `touch` creates a new file.
touch style.css

При создании файлов добавьте расширение , чтобы указать тип. Примеры типов файлов:

  • .js создать как файл JavaScript
  • .html создать HTML-файл
  • .css создает CSS-файл
  • .md создает файл разметки

Имена файлов не должны содержать пробелов.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

Создание нескольких файлов

Вы можете создать несколько файлов одновременно, добавив пробелы между именами.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Создание каталогов

Чтобы создать каталог/папку, используйте команду mkdir - сокращение от «make directory» - за которым следует имя папки.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

Создание нескольких каталогов

Вы можете создать несколько папок одновременно, добавив пробелы между именами.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Мини-задания

  • Создайте новый файл.
  • Создайте несколько файлов одной командой.
  • Создайте новый каталог.
  • Создайте ещё несколько новых каталогов. Попробуйте сделать это одной командой.
  • Используя знания о навигации по каталогам и создании файлов и папок, постройте на рабочем столе «генеалогическое древо» с использованием файлов и папок.

Перемещение и копирование

Перемещение файлов и каталогов

Каркас и назначение секции

Мы можем переместить файл или папку в командной строке, но всегда нужно указать три вещи:

  1. Мы используем команду mv — сокращение от move .
  2. После команды перемещения укажите имя файла или папки, которые вы хотите переместить.
  3. После имени файла укажите место назначения, куда вы хотите его переместить.

Например, если у вас такая структура файла:

my_child_folder/
my_parent_folder/

Видите, что всё организовано не так, как должно быть: они — родственные, хотя должны быть родительским и дочерним. Используйте эту команду:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

Итоговая структура будет выглядеть так.

my_parent_folder/
  my_child_folder/

Вот еще несколько вариантов команды mv :

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

Внимание: mv также является командой переименования файла с использованием синтаксиса mv old_name new_name . Это означает, что если вы переместите файл в несуществующий каталог или неправильно укажете место назначения, то сам файл будет переименован, а не перемещен.

Мини-задания

  1. Создайте 5 текстовых (.txt) файлов.
  2. Создайте новый каталог.
  3. Переместите 5 созданных вами файлов в папку.
  4. Создайте папку и переместите эту новую папку в другую папку.

Копирование файлов и каталогов

Каркас и назначение секции

При создании веб-приложений нам может потребоваться создать дубликат файла (если мы создаем две одинаковые веб-страницы, нам может не захотеться начинать все с нуля), а синтаксис команды cp (копировать) действительно похож на синтаксис mv .

Копирование файла

Команда копирования состоит из трех частей:

  1. Команда cp — сокращение от copy
  2. Имя файла, который нужно скопировать
  3. Имя копии (если она остается в той же папке) или местоположение и имя (если она перемещается в другую папку).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

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

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

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

Копирование каталога

Копирование папки или каталога немного сложнее, поскольку вам, скорее всего, понадобится скопировать не только папку, но и все ее содержимое.

  1. Команда cp -R — сокращение от «copy recursive» (рекурсивное копирование) — используется как для пустых, так и для непустых папок.
  2. Имя источника (папка или файл, который мы хотим переместить)
  3. Имя копии (если она остается в той же папке) или местоположение и имя (если она перемещается в другую папку).

Внимание : при указании имени для копии, если файл или папка не были созданы ранее, они будут созданы при копировании. Если файл был создан до запуска команды копирования, всё, что было в нём ранее, будет перезаписано, поэтому будьте осторожны!

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

Примечание: компонент -R команды cp -R называется флагом . Флаги всегда начинаются с дефиса и используются в сочетании с командами для более точного указания, как должна выполняться эта команда.

Мини-задания

  1. Создайте файл с именем my_original.txt
  2. Создайте копию my_original.txt под каким-нибудь новым именем в той же папке.
  3. Создайте новый каталог.
  4. Создайте копию этого каталога, но назовите ее по-другому.
  5. Сделайте копию скопированного файла (из шага 2), но поместите его в скопированный каталог (из шага 4).

Удаление файлов и папок

Каркас и назначение секции

Мы можем удалить файлы и папки в командной строке, но это действие будет необратимым.

Удаление файла

Чтобы удалить файл , мы можем использовать команду rm (сокращение от remove ), а затем имя файла.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Удаление пустого каталога

Чтобы удалить пустой каталог , мы можем использовать команду rmdir (сокращение от remove directory ), а затем имя папки.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Удаление каталога, который не пуст

Чтобы удалить непустую папку, необходимо добавить флаг -R (сокращение от recursive ) после команды rm , который предписывает компьютеру удалить всё содержимое папки. Некоторые разработчики используют флаг -Rf для ускорения удаления (в противном случае могут появиться запросы на удаление некоторых дочерних файлов или папок).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

Внимание : использование команды rm не похоже на корзину или удалённый раздел электронной почты — эти файлы не подлежат восстановлению. Будьте КРАЙНЕ ОСТОРОЖНЫ при удалении файлов таким способом.

Мини-задания

  1. Создайте 4 файла.
  2. Удалить 2 файла.
  3. Создайте папку.
  4. Создайте еще одну папку и создайте файл внутри этой папки.
  5. Удалите оба каталога.

Код для этой лабораторной работы вы можете найти в следующей папке внутри репозитория студентов, который вы загрузили с GitHub: command-line/labs/around-the-world

Фон

Ваш семестр за рубежом уже не за горами, и пришло время начать планировать путешествия по Европе...

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

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

Не волнуйтесь, благодаря магии командной строки вы исправите их в мгновение ока!

Задача

Убедитесь, что каждый город находится в нужной стране, а в папке с городом указаны нужные памятники. Будьте осторожны, иначе можете оказаться в Амстердаме в поисках Эйфелевой башни!

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

Убедившись, что всё на своих местах, вы сможете взять на себя управление следующими месяцами. Придумайте новые города, страны и памятники, которые вам НУЖНО посетить, и добавьте их в своё дерево файлов!

Поздравляем! Вы официально научились говорить на языке компьютера. Готовы сделать шаг вперёд? Давайте поговорим о расширениях...

Расширения

  1. Снова перемешайте все файлы, затем отправляйтесь в любой город по вашему выбору. Снова перегруппируйте файлы, оставаясь в этом городе.
  2. Попробуйте одну из увлекательных игр с командной строкой, ссылки на которые приведены ниже.
    Игра Терминус
    Продвинутая игра (будьте готовы к поиску в Google)
  3. Большой поклонник «Звёздных войн»? Попробуйте запустить telnet towel.blinkenlights.nl в командной строке и нажать Enter... (Обратите внимание, что в последних версиях MacOS команда telnet больше не установлена по умолчанию; в этом случае вместо неё можно использовать команду nc towel.blinkenlights.nl 23 ).

Код для этой лабораторной работы вы можете найти в следующей папке внутри репозитория студентов, который вы загрузили с GitHub: command-line/labs/bashing-away-repetition

Готовы ли вы избавиться от повторяющихся команд в ежедневном использовании командной строки? Отлично, я тоже!

Фон

Если программисты чего-то и ненавидят, так это повторения. Как специалисты по информатике, мы обязаны заставить компьютер выполнять как можно больше работы за нас. Написание bash-скриптов поможет нам эффективнее использовать командную строку.

Начнем с самого главного: что такое bash-скрипт?

ОТЛИЧНЫЙ вопрос. К счастью, наш друг Райан Чедвик, находящийся на этом замечательном сайте, где можно найти руководства по командной строке , может нам помочь.

Скрипт Bash позволяет определить последовательность действий, которые компьютер выполнит, без необходимости вводить команды вручную. Если определённая задача выполняется часто или повторяется , скрипт может быть полезным инструментом.

Никаких повторений? Вот о чём я говорю.

Учебное пособие

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

chmod 755 myScript.sh

Итак, пора написать вашу первую программу. Откройте файл myScript.sh (проверьте, можете ли вы открыть его из командной строки). В конце файла добавьте:

echo "Hello World"

Теперь запустите:

./myScript.sh

в вашем терминале. ** TA DA ** вы должны увидеть «Hello World» напечатанный в вашем терминале.

празднование

Всё, что вы пишете в своём bash-скрипте, будет выполняться так, как будто вы ввели его в терминал. Давайте рассмотрим ещё один пример, прежде чем переходить к расширениям. Сначала создайте файл для своего скрипта. Он может называться как угодно, но должен иметь расширение .sh . Затем убедитесь, что ваш скрипт имеет разрешение на запуск, введя команду chmod 755 , затем имя скрипта в терминале и нажав Enter. Каждый раз при запуске нового bash-скрипта обязательно выполняйте эти два шага.

Вводный вызов

Теперь попробуем написать скрипт, создающий новую папку. Какая команда, как мы знаем, создаёт новую папку? Если вы задумали слово, начинающееся с буквы m и заканчивающееся на kdir , вы на правильном пути. Напишите команду, которая создаст новую папку, и дайте ей какое-нибудь интересное имя в новом .sh файле, а затем запустите её в терминале.

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

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

Основные задачи

  1. Добавьте в созданный вами выше файл команду, которая перенаправляет в создаваемую вами папку. (Какую команду мы используем для смены каталогов?)
  • Отметьте дату создания нового имени папки. Например, ваша программа должна создать папку с именем « 2017-12-07my_super_cool_folder ».
  1. Выводит на экран сообщение «Мой текущий каталог:», а затем ваш рабочий каталог и сообщение «Вот список всего содержимого этого каталога!», а затем содержимое вашего текущего каталога.
  2. Разберитесь, как передать входные данные вашему bash-скрипту, и создайте файл на основе этой строки. В руководстве, ссылка на которое дана ранее в лабораторной работе, есть несколько отличных примеров в разделе переменных.
  3. Спросите имя пользователя, а затем напечатайте: «Привет, приятно познакомиться. Введите его имя здесь ».
  • Попробуйте запросить у пользователя дополнительную информацию и создать для него персональное сообщение.

КОНТЕКСТ

Командная строка (или терминал) обеспечивает прямое взаимодействие с операционной системой (ОС) компьютера — всё то же, что и графический интерфейс пользователя (GUI), но посредством текстовых команд — от навигации до создания новых файлов и выполнения скриптов . Командная строка будет использоваться для открытия файлов и запуска среды разработки при использовании Google App Engine .

Командная строка в действии

Доступ к терминалу

Сочетание клавиш для Mac:

  • Откройте Spotlight сочетанием клавиш Command + пробел.
  • Введите Терминал в поиске Spotlight .
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

Создание файлов и папок

Создание файлов

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Создание папок

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

Перемещение файлов и папок

Перемещение файлов

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

Перемещение папок

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

Перемещение — это переименование

Имейте в виду, что mv — это та же команда, которая используется для переименования файлов или папок.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Копирование файлов и папок

Копирование файлов

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

Копирование папок

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

Удаление файлов и папок

Удаление файлов

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

Удаление папок

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

Советы и рекомендации

  • Практикуйтесь в использовании командной строки, даже если не считаете это необходимым. Со временем у вас наберётся опыта.
  • Клавиша tab автоматически дополнит имя файла или папки (может быть чувствительно к регистру).
  • Если остался только один подходящий файл или папка, произойдет автоматическое заполнение.
  • Если найдено несколько соответствующих файлов или папок, дважды нажмите клавишу Tab, чтобы увидеть список оставшихся совпадений.
  • Стрелки вверх/вниз циклически прокручивают историю команд, чтобы вам не приходилось вводить команды заново.
  • Используйте команду clear , чтобы очистить окно терминала. При этом вся ваша предыдущая работа сохранится — прокрутите вверх, чтобы увидеть её.
  • Используйте reset , чтобы перезапустить терминал. Это не сохранит ваши предыдущие данные на экране, но может решить ряд проблем, если терминал начинает вести себя непредсказуемо.
  • Нажмите option + arrow , чтобы переместить курсор на одно слово.

Краткое изложение лучших практик

  • Для навигации по Терминалу используйте cd , cd .. или cd <folder name> .
  • Просмотр содержимого папок с помощью ls .
  • Создавайте файлы с помощью touch ; создавайте папки с помощью mkdir .
  • Перемещайте файлы и папки с помощью mv <item to move> <destination> .
  • Копируйте файлы и папки с помощью cp <item to copy> <destination> .
  • Удалите файлы и папки с помощью rm <item to remove> .

Вопрос 1

Что бы вы использовали для определения вашего текущего рабочего каталога?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

Вопрос 2

Как бы вы поднялись на два уровня выше вашего текущего рабочего каталога?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

Вопрос 3

Какую команду вы бы использовали для переименования файла?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

Вопрос 4

Почему команда mv script.py выдает ошибку?

  1. Потому что « script.py » — недопустимое имя файла.
  2. Потому что за командой mv не может следовать какая-либо другая информация.
  3. Это вопрос с подвохом; он не вызовет ошибку.
  4. Поскольку для перемещения файла требуется как минимум два аргумента — цель и место назначения.

Вопрос 5

Что сделает команда cd ~ ?

  1. Измените рабочий каталог на домашний каталог.
  2. Повторите предыдущую команду.
  3. Используйте алгоритм для определения наиболее полезной команды в данный момент.
  4. Выдать ошибку.

Вопрос 6

Что из перечисленного НЕ является причиной использования клавиши Tab для автодополнения имён файлов?

  1. Потому что это экономит время.
  2. Потому что это помогает устранить орфографические ошибки.
  3. Потому что это требует меньше вычислительной мощности.

Вопрос 7

Если новый разработчик попытается создать файл с именем « my script.py », почему команда touch my script.py не сработает?

  1. Потому что touch не может создавать новые файлы.
  2. Поскольку .py не является допустимым расширением файла.
  3. Потому что он создаст два файла, один с именем « my », а другой с именем « script.py », а не один.
  4. Потому что невозможно создавать новые файлы из командной строки.

Вопрос 1

Что бы вы использовали для определения вашего текущего рабочего каталога?

pwd

Вопрос 2

Как бы вы поднялись на два уровня выше вашего текущего рабочего каталога?

С помощью cd ../.. вы перемещаетесь на два уровня вверх (каждый .. представляет один уровень выше).

Вопрос 3

Какую команду вы бы использовали для переименования файла?

mv используется для перемещения файла из одного места в другое, а также может использоваться для изменения имени файла.

Вопрос 4

Почему команда mv script.py выдает ошибку?

Команда mv требует два аргумента : исходный файл и целевой файл.

Вопрос 5

Что сделает команда cd ~ ?

Это изменит ваш рабочий каталог на домашний. Специальный символ ~ используется для обозначения домашнего каталога текущего пользователя. Его также можно использовать в сочетании с другим именем пользователя: ~user2, чтобы указать на его домашний каталог.

Вопрос 6

Что из перечисленного НЕ является причиной использования клавиши Tab для автодополнения имён файлов?

Так как это требует меньше вычислительной мощности, это некорректно . tab требует (часто незначительного) количества вычислительной мощности для сканирования папок в поисках имени файла для автозаполнения, но это экономит время и позволяет избежать орфографических ошибок в процессе.

Вопрос 7

Если новый разработчик попытается создать файл с именем « my script.py », почему команда touch my script.py не сработает?

Это создаст два файла вместо одного. Команда touch создаст новые файлы. Пробелы в терминале — это разделители, а не символы, которые нужно включать в имя файла. Лучше их полностью избегать, но если всё же необходимо их использовать, имя файла следует заключить в двойные кавычки:

touch "my script.py"

Вопрос 1

Команда терминала для смены каталогов:

  1. move
  2. mkdir
  3. pwd
  4. cd

Вопрос 2

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

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

Вопрос 3

Какая команда используется для создания файлов?

  1. touch
  2. mkdir
  3. create
  4. pwd

Вопрос 4

Какая из следующих команд создаст два файла с именами index.html и style.css ?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

Вопрос 5

Какую команду следует использовать для переименования файла или папки?

  1. rename
  2. move
  3. mv
  4. rm

Вопрос 6

Какой флаг у rm и cp команды должны работать с папками?

  1. -f
  2. -r
  3. -x
  4. -d

Вопрос 7

Для перемещения projects в ~/Documents и переименуйте его в Projects . Какую команду нужно вставить в пробел?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

Вопрос 8

Что сделает следующая команда?

rm -r projects

  1. Удалить файл с названием projects
  2. Удалить папку под названием projects
  3. Переименуйте файл с названием projects
  4. Поиск projects в содержимом текущего каталога

Вопрос 1

Команда терминала для смены каталогов:

Команда терминала для смены каталогов — cd . Сама команда представляет собой сокращение от «change directory» (сменить каталог).

Вопрос 2

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

Команда для перехода в родительскую папку — cd ..

Вопрос 3

Какая команда используется для создания файлов?

Команда для создания файлов — touch

Вопрос 4

Какая из следующих команд создаст два файла с именами index.html и style.css ?

Команда touch index.html style.css создаст два файла . Запятая не требуется, и таким образом можно создать любое количество файлов, разделяя их пробелами.

Вопрос 5

Какую команду следует использовать для переименования файла или папки?

Хотя mv означает «переместить» и может использоваться для перемещения файлов или папок, mv также можно использовать для переименования файлов и папок .

Вопрос 6

Какой флаг у rm и cp команды должны работать с папками?

Для работы с папками командам rm и cp требуется флаг -r , поскольку флаг -r означает «рекурсивный» и повторно запускает команду для любых файлов и папок, содержащихся в них.

Вопрос 7

Для перемещения projects в ~/Documents и переименуйте его в Projects . Какую команду нужно вставить в пробел?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Поскольку мы начинаем с домашнего каталога, нам нужно будет выполнить cd ~/Documents чтобы финальная команда была выполнена в правильном каталоге.

Вопрос 8

Что сделает следующая команда?

rm -r projects

Команда удалит либо файл, либо папку с именем projects потому что она вызывается с флагом -r (рекурсивным). Без этого флага эта команда удалит только файл с заданным именем.