Сегодня большинство людей знакомы с компьютерами, имеющими графические интерфейсы. Эти интерфейсы упрощают нашу работу с файлами и интернетом и позволяют комфортно просматривать различные виды цифрового контента: фото, видео, музыку и документы. Графический интерфейс позволяет нам работать с контентом как на нашем компьютере, так и онлайн. Несмотря на то, что графический интерфейс кажется интуитивно понятным, у него есть некоторые ограничения по управлению компьютером и требует не малой части ресурсов компьютера для своей работы.
Альтернативный способ управления компьютером (сервером) — использование текстового терминала или интерфейса командной строки. Такой интерфейс присутствует в каждой операционной системе независимо от её назначения. На мобильных устройствах (телефонах, планшетах) он, как правило, скрыт в глубинах системы. Терминал предоставляет пользователям более широкий доступ к системе и оборудованию, так как позволяет работать с правами администратора.
Это краткое руководство позволит вам немного разобраться и ознакомиться с основами владения командной строкой операционной системы Linux, на примере уже установленного и настроенного нами в предыдущих статьях (1, 2) сервера.
Понимание терминала
На самом деле мы с вами уже немного знакомы с командной строкой, ведь предварительную настройку сервера мы проводили именно с помощью терминала.
Итак, давайте закрепим — если мы подключились к серверу по SSH, то, мы уже в командной строке.
И, если вы читаете эту статью с ПК, под управлением ОС Windows, Linux или MacOS, то в этой системе тоже есть командная строка, и вы можете использовать ее для ознакомления, но, я рекомендую все-таки, если уж мы изучаем работу с ОС Linux, а тем более работу с сервером, то и изучать терминал будем Linux’овый, пусть даже он будет запущен у вас на виртуальной машине (кстати, нужно будет еще написать статью об установке и настройки виртуального сервера на Windows,).
Во многих *nix операционных системах символы в конце приглашения выводится символ $ или #, которые означают следующее:
- $ (знак доллара) — вы вошли как обычный пользователь;
- # (хэштег/решетка) — вы вошли в систему как пользователь с повышенными привилегиями, также известен как пользователь root, который по умолчанию считается суперпользователем или администратором.
Для знакомства с терминалом мы вошли с правами обычного пользователя ($). Этого достаточно на начальном этапе знакомства. В *nix системах считается хорошей привычкой, использовать терминал с правами обычного пользователя, и переключаться на root (#) только в случаях необходимости выполнения административных функций.
Обратите внимание, что стоит проявлять большую осторожность при работе на терминале от имени SU, поскольку как администратор вы можете внести изменения, которые способны привести к необратимым изменениям на используемом оборудовании (пк или сервер).
Предлагаю для начала ознакомиться с командами, предназначенными для работы с файловой системой.
Знакомство с каталогами
Для работы с файловой системой — не плохо было бы для начала понять, в какой её части мы находимся. Для того, чтоб узнать ваше текущее местоположение в файловой системе используется простая команда pwd (present working directory).
~$ pwd
/home/zimakos
В результате ввода данной команды, операционная система выдаст нам ответ с указанием пути каталога, в котором мы с вами сейчас находимся. Обычно, после входа в систему, мы попадаем в наш домашний каталог /home/user_name.
Сейчас этот каталог пуст, так как мы только установили систему и только произвели начальную настройку.
Давайте создадим в нашей домашней директории новый каталог (новая папка, если вы привыкли работать с OS Windows), который мы будем использовать по ходу изучения основ работы с файловой системой.
Для того, чтоб создать новый каталог в директории — нам необходимо ввести команду mkdir (make directory) и через пробел указать название нового каталога
~$ mkdir my_files
Результатом выполнения этой команды станет то, что операционной системой будет создан новый каталог в вашей домашней директории.
Содержимое каталога
Поскольку мы еще не знакомы с содержимым каталога, мы воспользуемся командой ls (list), чтобы узнать больше о том, что находится в нашем текущем рабочем каталоге.
~$ ls
my_files
Данная команда дает нам краткую информацию о содержимом каталога, в котором мы находимся. Если нам необходимо получить содержимое другой директории, то можем ввести путь к нужному каталогу через пробел, например корневого каталога /.
~$ ls /
bin boot dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv swap.img sys tmp usr var
Если же вам необходимо получить более подробную информацию о содержимом каталога, то вы можете вызвать команду ls с дополнительным флагом -l. В командной строке Linux, дополнительные флаги к командам указываются через дефис —, и допускается использовать сразу несколько флагов.
~$ ls -l
total 4
drwxrwxr-x 2 zimakos zimakos 4096 Oct 1 11:13 my_files
В ответ мы получаем две строки. Первая указывает информацию о блоках памяти, которые выделены для этого каталога, а вторая относится к пользовательским разрешениям.
Для получение более удобочитаемого формата ответа — вы можете использовать флаг -h или —human-readable. В Linux, как правило, флаг через один дефис — указывает на буквенный флаг, а если дефиса два, —, то флаг записывается в виде выражения.
~$ ls -l --human-readable (ls -lh)
total 4.0K
drwxrwxr-x 2 zimakos zimakos 4.0K Oct 1 11:13 my_files
Вторая строка содержит гораздо больше информации, поэтому разберем ее отдельно.
| d | rwxrwxr-x | 2 | zimakos | zimakos | 4.0k | Oct 1 11:13 | my_files |
| тип | разрешения | кол-во ссылок | владелец | группа | блоки памяти | дата создания | имя |
Буква d в типе указывает , что это каталог directory.
rwxrwxrr-x указывает, что на разрешения для данной директории соответственно для владельца, группы, и остальных пользователей (соответственно по три символа на каждого). r — разрешает обращаться к файлу (папке) для чтения, w — разрешает запись в файл, x — разрешает запускать (если файл является исполнительным) файл. Дефис в перечисленных разрешениях указывает, что для других пользователей, не входящих в перечисленные группы, разрешено читать файл и исполнять его, а вот записывать в него они уже не смогут.
Число 2 в выходных данных указывает на количество ссылок на этот файл. В Linux ссылки предоставляют метод создания ярлыков, помогающих пользователям перемещаться по файловой системе. При создании этого файла Linux выполнила некоторую фоновую работу по созданию абсолютной ссылки на файл и ссылки на файл с самостоятельной ссылкой, позволяющей пользователям перемещаться по относительному пути.
Далее у нас указан владелец файла (папки) и группа, к которой принадлежит данный пользователь.
Остальные данные мы с вами уже разобрали ранее.
Навигация по файловой системе
Помнете, ранее мы с вами создали папку my_files в нашей домашней директории? Если бы мы с вами находились в операционной системе с графическим окружением, то, для перехода внутрь нового каталога мы бы просто воспользовались графическим указателем (курсором мыши), и нажав на кнопку уже были бы внутри него.
Для того, чтоб осуществлять переход по директориям файловой системы, при помощи командной строки, используется простая команда cd (change directory) с указанием пути к новой папке. Путь к папке может быть указан как в виде полного пути /home/username/my_files, так и относительно нашего текущего положения my_files.
~$ cd my_files
zimakos@ubuntuserver:~/my_files$
Для перехода в корень файловой системы команда будет выглядеть следующим образом — cd /.
~$ cd /
zimakos@ubuntuserver:/$
Создание и редактирование текстовых файлов
Теперь, когда у нас есть базовые знания о файловой системе Linux и о том, как в ней ориентироваться, давайте начнем создавать новые файлы и узнаем, как работать с текстом в командной строке.
Для начала убедимся, что мы находимся в каталоге files/ в пользовательской папке /home/username, что мы можем сделать, либо подтвердив с помощью команды pwd, либо сменяя каталоги по абсолютному пути:
~$ cd /home/username/files
Теперь мы создадим новый текстовый файл. Мы создадим файл .txt, который является стандартным файлом, который можно читать на всех операционных системах. В отличие от файлов .doc, файл .txt состоит из неформатированного текста. Неформатированный текст, включая текст в файлах .txt, легко использовать в командной строке, и, следовательно, его можно использовать при работе с текстовыми данными программно (например, для автоматизации анализа текста, извлечения информации из текста и т. д.).
Мы начнем с использования команды touch, которая может создать новый файл или изменить существующий файл. Чтобы использовать ее, вы можете воспользоваться командой touch и передать имя текстового файла, который вы хотите создать, как аргумент, как показано ниже.
~$ touch filename.txt
После нажатия клавиши ENTER вы увидите новую строку в командной оболочке, и вы сможете выполнить команду для вывода текущего содержимого каталога files/, чтобы убедиться, что файл был успешно создан.
~$ ls
Output
filename.txt
На данный момент мы создали файл под названием filename.txt, который не содержит какого-либо текст.
Если нам нужно создать текстовый файл с некоторым начальным содержимым, мы можем воспользоваться командой echo, которая обычно используется для отображения текстовых строк в Linux.
Мы можем использовать echo непосредственно в командной строке, чтобы интерфейс повторил наш ввод. Например, классическая программа «Привет, мир!» может быть создана с помощью echo следующим образом:
~$ echo Hello, World!
Output
Hello, World!
Команда echo возвращает то, что мы запрашиваем. В этом случае она вывела строку «Привет, мир!». Однако сама по себе команда echo не позволяет нам сохранить значение нашего текста в текстовый файл. Для этого нам потребуется набрать следующее:
~$ echo "your text here" > filename.txt
Эта команда запишет строку your text here в файл с именем filename.txt. Давайте убедимся, что это действительно так при помощи команды cat.
~$ cat filename.txt
Output
your text here
Вообще команда cat, как и большинство команд в Linux, очень обширна и может использоваться с некоторыми атрибутами. Может быть когда-нибудь у меня хватит сил и терпения сделать о ней отдельную запись, но, сейчас давайте немного упростим себе задачу работы с текстовыми файлами, и перейдем к редактору Nano.
«Для запуска текстового редактора Nano используется команда nano. Если необходимо отредактировать уже существующий файл filename.txt, достаточно указать его имя как аргумент.
~$ nano filename.txt
После этого файл откроется в вашем терминале.
Используя стрелочные клавиши клавиатуры, переместите курсор в конец строки и начните вводить свой текст.
Отступление
В командной строке вы не можете использовать мышь или другой указатель для навигации как по файловой системе, так и внутри файлов. Для перемещения по текстовым файлам вам придется использовать клавиатуру и, в частности, клавиши со стрелками.
Теперь, когда ваш файл содержит нужный текст, мы можем сохранить и закрыть его. Обратите внимание, что внизу вашего терминального окна есть некоторые инструкции:
^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+O, чтобы сохранить файл, то редактор предложит вам записать изменения:
Output
Save modified buffer?
Y Yes
N No ^C Cancel
Теперь, если вы нажмете Y или N, то, соответственно сохраните или откажетесь от сохранения файла. Нажав на комбинацию CTRL+C, вы вернетесь к редактированию файла.
Перемещение и копирование файлов
Теперь, допустим, что мы хотим переместить, или переименовать файл. Для этого в Linux имеется удобная команда mv, которая представляет собой сокращение от move, переместить.
Для примера мы переместим созданный вами файл в новую папку. Для начала создадим новую папку при помощи уже изученной нами команды mkdir:
~$ mkdir new_dir
Теперь мы переместим наш текстовый файл в новую папку:
~$ mv filename.txt /new_dir/filename.txt
Здесь после команды mv идет название файла, который мы хотим переместить и путь до места его дальнейшего хранения. Заметьте, что при перемещении файла указан путь нового хранения файла вместе с именем файла. Это обязательно, потому что второе назначение команды — это переименование. Вы можете сразу и перемещать, и переименовывать файлы. Если же вы хотите просто переименовать файл, то используйте эту же команду, только не указывайте новый путь хранения:
~$ mv filename.txt new_filename.txt
Эта команда не переместит наш файл, а просто изменит его имя.
Если же вы хотите просто скопировать файл, сделать копию, то можете использовать команду cp (copy), указав имя исходного и имя нового файлов:
~$ cp filename.txt filename_copy.txt
Если вы хотите поместить копию файла в другую директорию, то просто укажите путь к новой директории в имени нового файла:
~$ cp filename.txt /new_dir/filename_copy.txt
Удаление файлов и папок
Иногда, файлы, которые нам были нужны когда-то, становятся ненужными. Или мы скопировали всё нужное и теперь просто хотим удалить дубликаты.
В Linux, как и в других операционных системах, мы можем просто взять и удалить всё, что нам не нужно.
В консоли Linux для удаления файлов применяется команда rm (remove). Давайте удалим ранее созданный файл используя эту команду:
~$ rm filename.txt
Если же нам нужно удалить директорию (папку), то команда rm уже не сработает, нам нужно применить её вариацию rmdir (remove directory). Давайте теперь удалим ненужную нам папку, которую создавали ранее:
~$ rmdir new_dir
И ничего у вас не получится, и система выдаст вам сообщение об ошибке:
Output
rmdir: failed to remove 'new_dir': Directory not empty
Система сообщает нам, что папка содержит некоторые файлы и не может удалить директорию, потому что rmdir работает только с пустыми папками.
Можно, конечно перейти в папку, cd/new_dir, вывести список всех файлов в директории командой ls, и удалить по очереди каждый файл в этой папке командой rm.
Долго, нудно, не интересно…
Что же делать? Используйте атрибут команды -r:
~$ rm -r new_dir
Этот атрибут указывает, что команда должна рекурсивно (recursive) удалить каждый файл, содержащийся в указанной директории, за одно, попутно удалить и саму папку.
Заключение
Конечно, поначалу может показаться, что работа в терминале очень неудобная, что требуется знать и понимать огромное количество команд. Но, поверьте мне, стоит вам начать, стоит вам попробовать, и вас уже не остановить. Тем более, что другого выбора при работе с серверами на базе OS Linux, у вас особо то и нет.
Так что дерзайте и осваивайте. Это не возвращение в эпоху компьютерных динозавров. Это — технология и мудрость наших предков!
Добавить комментарий