Введение
Примечание: Интерактивный терминал в этом учебнике в настоящее время отключен, поскольку мы работаем над улучшением наших интерактивных образовательных возможностей. Вы все равно можете использовать этот учебник, чтобы узнать о командной строке и практиковать команды Linux, но вам нужно будет использовать терминал на своем компьютере или виртуальной машине.
Сегодня многие из нас знакомы с компьютерами (настольными и ноутбуками), смартфонами и планшетами, которые имеют графические пользовательские интерфейсы (также называемые GUI), позволяющие нам навигировать по приложениям, вебу и нашим файлам (таким как документы и фотографии) через визуальный опыт. Операционные системы Windows, macOS и Linux каждая представляют различные варианты рабочего окружения (с изображениями папок и файлов, например), и выпадающими меню, все это обеспечивает доступ к компьютерным программам, приложениям и нашим собственным медиафайлам.
Хотя графические интерфейсы могут быть интуитивным способом использования компьютера для многих пользователей, они часто не предоставляют нам максимальной мощности над нашими машинами, и они могут мешать нам иметь полный административный доступ на наших компьютерах, включая установку, изменение или удаление программного обеспечения или файлов. Кроме того, поскольку графические интерфейсы в значительной степени визуальны, они часто не так доступны для всех пользователей, как могли бы быть.
Один из способов навигации как по вашему собственному персональному компьютеру, так и по удаленным облачным серверам без графического интерфейса – это с помощью текстового терминала или интерфейса командной строки (CLI).
Интерфейсы терминала существуют практически на каждой операционной системе компьютера, а эмуляторы терминала также доступны в виде приложений для планшетов и смартфонов. Терминалы предоставляют пользователям более полный доступ к их устройствам благодаря увеличенному административному доступу, большей возможности настройки окружения и возможностям автоматизации процессов. Они также позволяют пользователям получать доступ к удаленным компьютерам, таким как облачные серверы.
Этот учебник предоставит пользователям, которые новички в терминальных средах, основы использования интерфейса командной строки через встроенный веб-терминал в вашем браузере, который вы можете запустить ниже. Если у вас уже есть некоторое представление о терминалах, вам может быть удобнее пройти через наш Введение в Linux Terminal учебник. После завершения этого урока у вас должно быть понимание того, как использовать терминал на компьютере или сервере Linux (или macOS).
Понимание окна терминала
Когда вы впервые получаете доступ к новому компьютеру или смартфону, вероятно, вы хотите включить его и понять, как его использовать, проверив доступные приложения, и узнать, где находятся вещи, чтобы настроить устройство под свои нужды. Вы можете ознакомиться с компьютером через терминал аналогичным образом.
Интерактивный терминал, который вы запустили в этом окне браузера, нажав кнопку Запустить интерактивный терминал!
выше, отображает белый прямоугольник внизу окна вашего браузера:
Если вы еще не запустили терминал, пожалуйста, сделайте это сейчас, используя кнопку в начале этого руководства.
В вашем интерактивном браузерном терминале должен быть символ доллара, $
, и мигающий курсор. Здесь вы начнете вводить команды, чтобы указать терминалу, что делать.
Терминал, который вы запустили, является терминалом Ubuntu 20.04. Ubuntu – популярное распространение Linux, которое изначально было основано на операционной системе Unix. Операционная система macOS также основана на Unix. Если вы читаете это руководство на компьютере с операционной системой Linux или macOS, у вас должен быть терминал на вашей операционной системе, который работает аналогично встроенному терминалу, который мы будем использовать в этом руководстве.
Во многих из этих операционных систем Unix (или *nix) символы в конце приглашения могут быть символом $
или символом #
, что означает следующее:
$
или символ доллара — вы вошли как обычный пользователь#
или символ решетки — вы вошли как пользователь с повышенными привилегиями
Пользователь, который указан в среде с символом #
, также известен как пользователь root, который по умолчанию считается суперпользователем или администратором.
Для наших целей в терминале браузера ниже вы вошли как обычный пользователь, но у вас также есть права администратора через команду sudo
. Поскольку это временный терминал, вам не нужно беспокоиться о том, что вы вводите в терминал, поскольку мы уничтожим все, когда закончим. Аналогично с облачным сервером, можно уничтожить сервер и начать с чистого листа, если что-то пойдет не так.
Обратите внимание, что лучше проявлять больше осторожности при работе в терминале локального компьютера, поскольку в терминале как администратор можно внести изменения, которые могут привести к постоянным изменениям на используемом вами компьютере.
На данном этапе, с запущенным вами терминалом в браузере, вы можете начать вводить текст с использованием вашего локального компьютера. Ваш текст появится у мигающего курсора. Мы узнаем о том, что мы можем вводить здесь, в следующих разделах.
Ознакомление с каталогами
Мы начнем работу с терминалом, набирая команду. Команда – это инструкция, которую дает пользователь, сообщая компьютеру, что именно пользователь хочет, чтобы компьютер выполнил. Вы будете вводить свои команды в терминал, а затем нажимать ENTER
или RETURN
, когда будете готовы к выполнению компьютером данной команды.
Введите следующую команду, а затем нажмите ENTER
. Вы также можете скопировать команду или выполнить ее в запущенном интерактивном терминале, нажав на соответствующие ссылки в блоке кода ниже, когда наведете на него мышью.
После выполнения этой команды вы получите следующий вывод:
Output/home/sammy
Команда pwd
расшифровывается как «present working directory» и позволяет узнать текущее местоположение в файловой системе.
В этом примере вы находитесь в каталоге (или папке), называемом /home/sammy
, который соответствует пользователю с именем sammy
. Если вы вошли в систему под учетной записью root
, пользователем с повышенными привилегиями, то каталог назывался бы /root
. На персональном компьютере этот каталог может называться именем пользователя, владеющего компьютером. Например, на компьютере Сэмми Шарка может быть каталог /sammy
или /sammy-shark
или /home/sammy
как основной каталог пользователя.
В настоящее время этот каталог пуст. Давайте создадим каталог для хранения файлов, которые мы будем создавать по мере продвижения по этому руководству, который мы можем назвать, например, files
.
Для этого мы будем использовать команду mkdir
, которая расшифровывается как “создать каталог”. После ввода команды нам нужно будет написать имя папки, которое передаст значение команде, чтобы она могла выполнить создание этого каталога. Это значение (имя папки) известно как аргумент, который является входным значением для команды. Если вы знакомы с грамматикой естественного языка, вы можете представить аргумент как объект, на который действует глагол команды.
Чтобы создать новый каталог под названием files
, мы напишем следующее, где mkdir
– это команда, а files
– это аргумент:
После выполнения этой команды вы не получите никакого вывода, кроме новой строки с мигающим курсором. С этой новой строкой в вашем терминале вы готовы к следующей команде.
Перечисление содержимого и понимание прав
Поскольку мы еще не получили конкретной обратной связи о нашем новом каталоге, мы воспользуемся командой, чтобы узнать больше о том, что находится в нашем текущем рабочем каталоге. Вы можете подтвердить, что новый каталог действительно существует, перечислив файлы в каталоге с помощью команды ls
(обозначающей “список”):
Вы получите вывод, который подтверждает, что каталог files
существует:
Outputfiles
Это дает нам общую информацию о содержимом нашего текущего рабочего каталога. Если мы хотим получить более подробную информацию, мы можем выполнить команду ls
с так называемым флагом. В командах Linux флаг записывается с дефисом -
и буквами, передавая дополнительные параметры (и больше аргументов) команде. В нашем примере мы добавим флаг -l
, который — в паре с ls
— означает, что мы хотели бы использовать опцию вывода в длинном формате с нашей командой.
Давайте введем эту команду и флаг следующим образом:
Нажав ENTER
, мы получим следующий вывод в нашем терминале:
Outputtotal 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
Здесь две строки вывода. Первая строка относится к выделенным блокам памяти компьютера для этого каталога, вторая строка в основном относится к разрешениям пользователя на файл.
Чтобы получить более читаемый для человека вывод, мы также можем передать флаг -h
или --human-readable
, который будет выводить размеры памяти в формате, понятном для человека, как показано ниже. Обычно один дефис -
обозначает опции с одной буквой, а два дефиса --
обозначают опции, записанные словами. Обратите внимание, что некоторые опции могут использовать оба формата. Мы можем объединить несколько опций в команду, объединив флаги вместе, как в -lh
.
Например, две нижеследующие команды дают одинаковые результаты, даже если они записаны по-разному:
Обе эти команды вернут следующий вывод, аналогичный указанному выше, но с более полным контекстом блоков памяти:
Outputtotal 4.0K
drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files
Первая строка вывода информирует нас о том, что 4К компьютерной памяти выделено для папки. Вторая строка вывода содержит гораздо больше деталей, которые мы рассмотрим более подробно. Общее высокоуровневое описание всей информации, которую мы рассмотрим, указано в таблице ниже.
File type | Permissions | Link count | Owner | Group | File size | Last modified date | File name |
---|---|---|---|---|---|---|---|
d | rwxr-xr-x | 2 | sammy | sammy | 4.0K | Nov 13 18:06 | files |
Обратите внимание, что имя нашего каталога, files
, находится в конце второй строки вывода. Это имя указывает на конкретный элемент в домашнем каталоге пользователя /home/sammy
, который описывается этой строкой вывода. Если бы у нас был еще один файл в каталоге, у нас была бы еще одна строка вывода с подробностями о том файле.
В начале строки есть список символов и тире. Давайте разберем значение каждого из этих символов:
Character | Description |
---|---|
d | directory (or folder) — a type of file that can hold other files, useful for organizing a file system; if this were - instead, this would refer to a non-directory file |
r | read — permission to open and read a file, or list the contents of a directory |
w | write — permission to modify the content of a file; and to add, remove, rename files in a directory |
x | execute — permission to run a file that is a program, or to enter and access files within a directory |
В первых символах drwx
строки первая буква d
означает, что элемент files
является каталогом. Если бы это был файл, а не каталог, эта строка символов начиналась бы с дефиса, как, например, -rwx
, где первый дефис указывает на файл, не являющийся каталогом. Следующие три буквы, rwx
, представляют разрешения для владельца каталога files
и означают, что каталог files
может быть читаемым, записываемым и исполняемым владельцем файла. Если бы любой из этих символов был заменен дефисом, это означало бы, что у владельца нет типа разрешения, представленного этим символом. Мы обсудим, как определить владельца файла, как только дойдем до этого момента.
Следующие три символа в выводе – r-x
, которые представляют права группы для каталога files
. В этом случае у группы есть разрешения на чтение и выполнение, но нет разрешений на запись, так как символ w
заменен на -
. Мы обсудим, как определить группу вот-вот.
Последние три символа первой строки, r-x
, представляют разрешения для любых других групп пользователей, имеющих доступ к машине. В данном случае эти группы пользователей также могут читать и выполнять, но не могут записывать.
Число 2
в выводе относится к количеству ссылок на этот файл. В Linux ссылки предоставляют метод создания ярлыков для помощи пользователям в навигации по файловой системе. Когда вы создали этот файл, Linux выполнил некоторую фоновую работу по созданию абсолютной ссылки на файл и ссылки на самого себя для возможности навигации пользователей по относительному пути. Мы обсудим абсолютные и относительные пути в следующем разделе.
После числа 2
слово sammy
отображается дважды. Эта часть вывода предоставляет информацию о владельце и группе, связанных с каталогом files
. Первое вхождение sammy
в этой строке относится к владельцу каталога, права доступа к которому мы видели ранее как rwx
. Пользователь sammy
является владельцем, так как мы создали каталог files
от имени пользователя sammy
и в данный момент являемся владельцем файла. Хотя пользователь sammy
единственный в нашей текущей среде, в Unix-подобных операционных системах часто бывает несколько пользователей, поэтому полезно знать, какой пользователь является владельцем файла.
Второе вхождение sammy
относится к группе, которая имеет доступ к каталогу files
, права доступа к которому мы видели ранее как r-x
. В данном случае имя группы совпадает с именем владельца sammy
. В реальной среде могут существовать другие группы в операционной системе, имеющие доступ к каталогу, такие как staff
или имя пользователя, например, admin
.
Оставшиеся детали на этой строке вывода представляют собой 4.0K
для выделения памяти каталога на машине и дату последнего изменения каталога (на данный момент мы только что создали его).
С этим более глубоким пониманием файловых систем и прав доступа мы можем перейти к навигации по файловой системе в нашем терминале Linux.
Навигация по файловой системе
До сих пор мы узнали, как определить, где мы находимся в файловой системе, как создать новый каталог, как перечислить файлы и как определить права доступа.
Давайте теперь научимся перемещаться по файловой системе. Мы создали новый каталог, но все еще находимся в основном пользовательском каталоге /home/sammy
. Чтобы перейти в каталог /home/sammy/files
, который мы создали, мы используем команду cd
и передадим имя каталога, в который мы хотим переместиться, в качестве аргумента. Команда cd
означает “сменить каталог”, и мы сформируем ее следующим образом:
Опять же, вы не получите ничего, кроме новой строки с мигающим курсором, но мы можем проверить, что мы находимся в каталоге /home/sammy/files
с помощью команды pwd
, которую мы использовали ранее:
Вы получите следующий вывод, подтверждающий ваше местоположение:
Output/home/sammy/files
Это подтверждает, что вы находитесь в каталоге /home/sammy/files
домашнего каталога пользователя /home/sammy
. Этот синтаксис вам знаком? Он может напомнить вам URL-адрес веб-сайта с его косыми чертами, и, действительно, веб-сайты также структурированы на серверах в каталогах.
Давайте перейдем в основной каталог сервера. Независимо от того, где мы находимся в файловой системе, мы всегда можем использовать команду cd /
для перехода в основной каталог:
Чтобы подтвердить, что мы перешли и узнать, что находится в этом каталоге, давайте выполним нашу команду списка:
Мы получим следующий вывод:
Outputbin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var
Там много файлов! Каталог /
является основным каталогом сервера Linux, называемым каталогом “root”. Обратите внимание, что каталог root отличается от пользовательского “root” по умолчанию. Вы можете представить каталог /
как главную артерию Linux-машины, так как он содержит все необходимые папки для работы компьютера. Например, каталог sys
содержит ядро Linux и виртуальную файловую систему системной информации. Если вы хотите узнать больше о каждом из этих каталогов, вы можете посетить документацию Linux Foundation.
Вы также заметите, что есть каталог, в котором мы уже были, каталог пользователя /home
. Из каталога /
мы можем перейти обратно в каталог /home
, а затем в files
, или мы можем перейти непосредственно в этот каталог, набрав абсолютный путь туда с помощью cd
:
Теперь, если вы выполните pwd
, вы получите /home/sammy/files
в качестве вывода.
A file path is the representation of where a file or directory is located on your computer or server. You can call a path to a file or directory in either a relative or absolute way. A relative path would be when we move to a location relative to our current working directory, like we did when we were already in /home/sammy/
and then moved into files/
. An absolute path is when we call the direct line to a location, as we did above with /home/sammy/files
, showing that we started in the /
directory, called the /home/sammy/
user directory and then the nested files/
directory.
Кроме того, в Linux используется точечная нотация для помощи пользователям в навигации по относительным путям. Одна .
означает каталог, в котором вы находитесь в данный момент, а двойной ..
означает родительский каталог. Таким образом, из текущего местоположения (/home/sammy/files
) мы можем использовать две точки, чтобы вернуться в родительский каталог /home/sammy
пользовательского каталога:
Если вы выполните pwd
, вы получите /home/sammy
в качестве вывода, а если выполните ls
, вы получите files
в качестве вывода.
Еще один важный символ, с которым стоит быть знакомым, это ~
, который означает домашний каталог вашей машины. Здесь наш домашний каталог называется /home/sammy
для пользователя sammy, но на локальной машине это может быть ваше собственное имя, как в sammy-shark/
.
Вы можете ввести следующее откуда угодно на вашей машине и вернуться в этот домашний каталог:
На этом этапе не стесняйтесь перемещаться по вашей файловой системе с помощью команд, которые вы усвоили до этого. В следующем разделе мы начнем работать с текстовыми файлами.
Создание и изменение текстовых файлов
Теперь, когда у нас есть базовые знания о файловой системе Linux и о том, как в ней ориентироваться, давайте начнем создавать новые файлы и узнаем, как манипулировать текстом в командной строке.
Для начала убедимся, что мы находимся в каталоге files/
в папке пользователя /home/sammy
, что мы можем сделать, либо проверив с помощью pwd
, либо изменив каталоги в абсолютном пути:
Теперь мы создадим новый текстовый файл. Мы будем создавать файл .txt
, который является стандартным файлом, который можно читать в различных операционных системах. В отличие от файлов .doc
, файл .txt
состоит из неформатированного текста. Неформатированный текст, включая текст в файлах .txt
, легко можно использовать в командной строке, и, следовательно, его можно использовать при работе с текстовыми данными программно (например, для автоматизации анализа текста, извлечения информации из текста и т. д.).
Мы начнем с использования команды touch
, которая может создавать новый файл или изменять существующий файл. Для использования ее можно воспользоваться командой touch
и передать имя создаваемого вами текстового файла в качестве аргумента, как показано ниже.
После нажатия ENTER
вы получите новую строку приглашения командной строки, и вы можете перечислить текущее содержимое files/
, чтобы убедиться, что файл был создан.
Outputocean.txt
На данный момент мы создали файл ocean.txt
, который не содержит текста на момент создания.
Если мы хотим создать текстовый файл, который будет инициализирован текстом, мы можем использовать команду echo
, которая используется для отображения строк текста в Linux.
Мы можем использовать echo
напрямую в командной строке, чтобы интерфейс повторил за нами. Традиционная первая программа, "Hello, World!"
, может быть записана с помощью echo
следующим образом:
OutputHello, World!
Названный в честь Эхо из “Метаморфоз” Овидия, команда echo
возвращает то, что мы запрашиваем. В данном случае она повторила: “Hello, World!” Однако сама команда echo
не позволяет нам сохранить значение нашего текста в текстовый файл. Для этого нам понадобится ввести следующее:
В приведенной выше команде используется echo
, затем текст, который мы хотели бы добавить в наш файл в кавычках, затем оператор перенаправления >
, и, наконец, имя нашего нового текстового файла, sammy.txt
.
Мы можем проверить, существует ли наш новый файл, снова с помощью ls
.
Outputocean.txt sammy.txt
Теперь у нас есть два текстовых файла в нашей папке пользователя /home/sammy/files
. Далее мы можем подтвердить, что файл sammy.txt
содержит текст, который мы попросили терминал вывести в него. Мы можем сделать это с помощью команды cat
. Сокращение от concatenate, команда cat
очень полезна для работы с файлами. Среди ее функций — отображение содержимого файла.
После выполнения команды мы получим следующий вывод:
OutputSammy the Shark
Если бы мы запустили cat
на пустом файле ocean.txt
, мы бы не получили ничего в ответ, так как в этом файле нет текста. Мы также можем добавить текст в этот существующий файл с помощью echo
. Давайте добавим цитату Зоры Нил Хёрстон в файл.
Теперь, если мы запустим cat
на файле, мы получим вывод текста, который мы только что ввели.
OutputSome people could look at a mud puddle and see an ocean with ships.
На данный момент мы создали текстовые файлы и добавили текст в эти файлы, но еще не модифицировали их. Если мы хотим это сделать, мы можем использовать текстовый редактор командной строки. Существует несколько популярных выборов, включая Vim и Emacs. Для наших целей мы будем использовать nano, который является менее сложной программой редактора текста CLI, которую мы можем использовать для начала нашего исследования.
Текстовый редактор nano можно вызвать с помощью команды nano
. Если мы хотим редактировать наш существующий файл sammy.txt
, мы можем сделать это, передав имя файла в качестве аргумента.
Файл откроется на вашем терминале:
Sammy the Shark
С помощью стрелок на клавиатуре переместите курсор в конец строки и начните печатать несколько строк с точки зрения Сэмми.
Примечание: На командной строке вы не можете использовать мышь или другой указатель для навигации, как в файловой системе, так и внутри файлов. Вам нужно использовать клавиатуру, и ваши стрелки в частности, чтобы перемещаться по текстовым файлам.
Когда вы закончите работу с файлом, он может выглядеть примерно так:
Sammy the Shark
Hello, I am Sammy.
I am studying computer science.
Nice to meet you!
Теперь, когда ваш файл содержит текст, который вам нужен, мы можем сохранить и закрыть файл. Вы можете заметить, что внизу вашего окна терминала есть некоторые указания:
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
Поскольку мы закончили работу с этим файлом, мы бы хотели выйти
из файла. Здесь символ ^
обозначает клавишу Control
или CTRL
на вашей клавиатуре, и вывод выше говорит нам, что нам нужно нажать эту клавишу вместе с клавишей X
(используйте это в нижнем регистре, не нажимая клавишу SHIFT
), чтобы выйти из файла. Давайте нажмем эти две клавиши вместе:
CTRL x
Вышеописанное часто записывается встроенно как CTRL + X
или Ctrl+x
в технической документации.
На этом этапе вы получите следующий запрос:
OutputSave modified buffer?
Y Yes
N No ^C Cancel
Чтобы сохранить его, мы нажмем букву y
для подтверждения:
y
Вы получите обратную связь вроде следующей.
OutputFile Name to Write: sammy.txt
Существуют дополнительные варианты, включая отмену с помощью CTRL + C
, но если вы уверены в закрытии файла, вы можете нажать ENTER
в этой точке, чтобы сохранить файл и выйти из него.
Допустим, мы хотим создать несколько файлов студентов в университете DigitalOcean. Давайте создадим новый каталог в files/
с именем students
:
Затем переместим sammy.txt
в новый каталог students/
. Команда mv
, что означает mоve, позволит нам изменить местоположение файла. Команда строится путем взятия файла, который мы хотим переместить, в качестве первого аргумента, и нового местоположения в качестве второго аргумента. Оба следующих выполнения приведут к одному и тому же результату.
Последний вариант будет полезен, если мы хотим изменить название файла, как в mv sammy.txt students/sammy-the-shark.txt
.
Теперь, если мы запустим команду ls
, мы увидим, что только ocean.txt
и каталог students/
находятся в нашем текущем каталоге (files/
). Давайте перейдем в папку students/
.
Чтобы иметь шаблон для других студентов, мы можем скопировать файл sammy.txt
, чтобы создать больше файлов. Для этого мы можем использовать команду cp
, которая означает copy. Эта команда работает аналогично команде mv
, принимая исходный файл в качестве первого аргумента и новый файл в качестве второго аргумента. Мы создадим файл для Алекса Листового Морского Дракона:
Теперь мы можем открыть alex.txt
и проверить его.
Пока что alex.txt
выглядит идентично sammy.txt
. Заменив некоторые слова, мы можем изменить этот файл на следующий текст. Обратите внимание, что вы можете использовать CTRL + K
, чтобы удалить всю строку.
Alex the Leafy Seadragon
Hello, I am Alex.
I am studying oceanography.
Nice to meet you!
Вы можете сохранить и закрыть файл, нажав CTRL + X
, затем y
, затем ENTER
.
Если вы хотите получить больше практики с текстовыми файлами, рассмотрите создание файлов для Джейми Мантиса, Джесси Осьминога, Дрю Кальмара или Тейлор Желтоплавника.
Как только вы почувствуете себя уверенно в создании, редактировании, копировании и перемещении текстовых файлов, мы можем перейти к следующему разделу.
Автодополнение и история
Многие версии командной строки, включая интерактивный терминал, встроенный в этот учебник, позволяют вам использовать автодополнение и повторно использовать команды по мере их выполнения. Это помогает вам двигаться быстрее, поскольку экономит время набора.
Попробуйте набрать cat
вместе с первыми несколькими буквами одного из текстовых файлов, с которыми вы работали, например, cat sa
. Прежде чем закончить вводить полное имя файла sammy.txt
, нажмите клавишу TAB
. Это должно автоматически дополнить полное имя файла, так что ваш приглашение терминала отобразит следующее:
Теперь, если вы нажмете ENTER
, терминал должен вернуть содержимое файла на командную строку.
Еще один быстрый способ – нажать стрелку ВВЕРХ
, которая позволит вам просматривать последние выполненные вами команды. На новой строке с мигающим курсором несколько раз нажмите стрелку ВВЕРХ
, чтобы быстро получить доступ к предыдущим командам.
Если вам нужно повторить все команды, выполненные вами в терминале, вы также можете вызвать всю историю этой сессии с помощью уместно названной команды history
:
В зависимости от того, насколько много вы практиковались, вы должны получить 30 или более строк команд, начиная с следующего вывода:
Output 1 pwd
2 mkdir files
3 ls
4 ls -l
...
Ознакомление с этими ярлыками поможет вам стать более опытным пользователем интерфейса командной строки.
Работа с файлами из Интернета
Одним из самых увлекательных аспектов работы в командной строке, подключенной к Интернету, является то, что у вас есть доступ ко всем ресурсам веба и вы можете автоматизированно действовать с ними. С помощью терминала вы также можете напрямую получать доступ к облачным серверам, для которых у вас есть учетные данные, управлять и оркестрировать облачную инфраструктуру, создавать свои собственные веб-приложения и многое другое. На данный момент, поскольку мы уже изучили, как работать с текстовыми файлами в терминале, давайте рассмотрим, как загрузить текстовый файл из Интернета, чтобы у нас был доступ к этому файлу на используемой машине.
Вернемся в каталог files/
:
Отсюда мы будем использовать команду curl
для передачи данных из Интернета на наш интерактивный терминал в браузере. Команда curl
означает клиент URL (веб-адрес).
Мы загрузили короткий отрывок из произведения Жюля Верна “Двадцать тысяч лье под водой” на облачный сервер. Мы передадим URL этого файла команде curl
, как показано ниже.
После нажатия ENTER
мы получим текст отрывка в качестве вывода на наш терминал (приведен ниже)
Output"You like the sea, Captain?"
"Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe.
...
"Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this
is a library which would do honor to more than one of the continental palaces, and I am
absolutely astounded when I consider that it can follow you to the bottom of the seas."
Хотя интересно видеть текст на нашем терминальном окне, у нас нет доступа к файлу, мы только передали данные, но не сохранили их. (Вы можете убедиться, что файла нет, выполнив ls
).
Чтобы сохранить текст в файл, нам нужно запустить curl
с флагом -O
, который позволяет нам вывести текст в файл, взяв то же имя удаленного файла для нашей локальной копии.
Вы получите обратную связь из терминала, что ваш файл загружен.
Output % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487
Если вы хотите использовать конкретное и альтернативное имя файла, вы можете сделать это с флагом -o
и передать имя нового файла в качестве аргумента (в данном случае jules.txt
).
Теперь мы можем работать с этим файлом точно так же, как с любым другим текстовым файлом. Попробуйте использовать cat
или редактировать его с помощью nano
.
В следующем разделе мы удалим некоторые файлы и выйдем из терминала.
Удаление файлов и завершение команд
Как и на любом другом компьютере, нам иногда нужно удалить файлы и папки, которые больше не нужны, и выйти из используемой программы.
Допустим, студенты, которых мы знаем из университета DigitalOcean, окончили обучение, и нам нужно очистить их файлы и соответствующую папку. Убедитесь, что вы находитесь в каталоге students/
:
Если вы запустите ls
, ваша папка может содержать несколько файлов, например, так:
Outputalex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
Мы можем удалить отдельные файлы с помощью команды rm
, что означает rеmove. Нам нужно передать файл, который мы хотим удалить, как аргумент.
Предупреждение: Обратите внимание, что после удаления файла это нельзя отменить. Убедитесь, что вы хотите удалить файл, прежде чем нажать ENTER
.
Теперь, если мы выполним ls
, мы заметим, что sammy.txt
больше нет в папке:
Outputalex.txt drew.txt jamie.txt jesse.txt taylor.txt
Хотя теперь мы знаем, что мы можем удалить отдельные файлы с помощью rm
, это не очень эффективно с точки зрения времени, если мы хотим удалить всю директорию students/
и все ее содержимое.
Команда, которая используется для удаления каталогов, называется rmdir
, что означает remove directory. Давайте перейдем в родительскую папку files
, чтобы мы могли работать с каталогом students/
оттуда (мы не сможем удалить папку, в которой находимся в данный момент).
Из домашнего каталога пользователя /home/sammy/
мы можем выполнить rmdir
на students
.
Однако это не работает, поскольку мы получаем следующую обратную связь:
Outputrmdir: failed to remove 'students': Directory not empty
Команда не сработала, поскольку rmdir
работает только с пустыми каталогами, а в каталоге students
все еще есть файлы. (Здесь вы можете создать новую пустую папку и попробовать rmdir
на ней. Пустые папки можно удалить с помощью rmdir
.)
Чтобы удалить каталог со всё ещё находящимися внутри файлами, нам нужно попробовать другой вариант. В компьютерной науке рекурсия часто используется для итеративного самообращения; таким образом, мы можем вызывать как основной элемент, так и все его зависимости. С помощью команды rm
мы можем рекурсивно удалить основной каталог students
и все его зависимости от содержимого. Мы используем флаг -r
, который означает рекурсивно, и передаем каталог students
в качестве аргумента.
На данном этапе, если мы выполним ls
, то заметим, что students/
больше не находится в нашем текущем каталоге, и ни один из файлов, которые он содержал, также не доступен, так как они все были удалены.
Когда вы закончите работу с терминалом, особенно если вы работаете на удаленном сервере, вы можете выйти из терминала с помощью команды exit
. Как только вы почувствуете себя уверенно в том, что достигли в этой сессии (поскольку вы не сможете восстановить ее), вы можете ввести следующее, а затем нажать ENTER
, чтобы покинуть терминал.
На нашем интерактивном терминале мы получим следующий вывод, подтверждающий, что наша сессия завершена.
OutputSession ended
Завершив эту сессию, вы можете обновить эту страницу и затем запустить новый терминал, чтобы попробовать альтернативные команды или создать новую файловую систему для изучения.
Заключение
Поздравляю! Теперь вы знаете, как ориентироваться в интерфейсе терминала и уже готовы делать больше с компьютерами и серверами.
Чтобы продолжить обучение, вы можете пройти пошаговый курс по настройке и управлению удаленными серверами с нашим учебным планом Введение в облачные вычисления.
Source:
https://www.digitalocean.com/community/tutorials/a-linux-command-line-primer