Командная строка Linux, введение: типы команд, plain text, файловая система, shell prompt

Командная строка Linux, введение: типы команд, plain text, файловая система, shell prompt

Обновлено 23.02.2024

Представляю вашему вниманию первую (вводную) часть из цикла постов, посвященных работе в командной строке Linux. Данный пост является неким фундаментом для будущих записей по этой теме. За ним последуют посты с описаниями и практическими примерами использования популярных консольных утилит.

Сразу дам одну рекомендацию. Если хотите получить исчерпывающий материал по командной строке Linux, то рекомендую к прочтению книгу Уильяма Шоттса с незамысловатым названием: Командная строка Linux. Данная книга является прекрасным источником, позволяющим всесторонне изучить основы работы в Linux консоли. Материалы из этой книги будут также использоваться и цитироваться в этом и последующих постах про Linux.

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

И так, приступим.

Введение

Говоря о командной строке, подразумевают командную оболочку (shell), она же командный интерпретатор. Вспомним, что это вообще такое.

Командная оболочка — это программа, являющаяся частью операционной системы и позволяющая управлять компьютером посредством ввода текстовых команд в интерфейсе командной строки (CLI – command line interface). Еще её часто называют консолью.

Большинство дистрибутивов Linux поставляются с командной оболочкой из
проекта GNU, под названием bash.

Имя bash — это аббревиатура от названия Bourne Again Shell, отражающего тот факт, что bash является улучшенной заменой sh, первоначальной командной оболочки для Unix, написанной Стивом Борном (Steve Bourne).

Уильям Шоттс. Командная строка Linux.

Как это обычно водится у тру unix’оводов, название чего-то – это игра слов 😉

Также вспомним, что такое терминал/эмулятор терминала Linux.

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

Что такое команды в Linux?

В командной строке Linux существует 4 типа команд:

  • Выполняемая программа – такие файлы обычно, располагаются в каталогах /bin, /sbin, /usr/bin и т.д. К этой категории относятся: скомпилированные двоичные программы, например, написанные на C и C++; программы, написанные на языках сценариев, таких как shell, Perl, Python, Ruby и др.
  • Встроенные команды – команды реализованные внутри самой командной оболочки. Командная оболочка bash поддерживает множество внутренних команд, которые так и называют — встроенными (shell builtins). Команда cd, например, — это встроенная команда.
  • Функции командной оболочки. Функции командной оболочки (shell functions) — это миниатюрные сценарии на языке командной оболочки, встроенные в окружение. В данном посте мы их рассматривать не будем, просто знайте об их существовании 😉
  • Псевдонимы. Псевдоним или alias — это команда, которую мы можем определить сами, сконструировав ее из других команд.

Чтобы узнать к какому типу относиться та или иная команда, выполните в терминале:

type <имя_команды>

Для примера, узнаем тип некоторых команд:

Роль обычного текста в Linux

В операционных системах Linux значительную роль играет простой текст (plain text) в кодировке ASCII. Например, конфигурационные файлы самой системы или установленных в ней программ, зачастую хранят свои настройки в виде обычного текста.

Чуть подробнее про ASCII:

ЧТО ЕСТЬ «ТЕКСТ»
Существует множество способов представления информации в компьютере. Все способы связаны с определением отношения между смысловой информацией и числами, которые применяются для ее представления. В конце концов, компьютеры могут работать только с числами, и все данные в компьютере преобразуются в числовое представление.

Некоторые из этих систем представления очень сложны (например, сжатые видео файлы), другие, напротив, очень просты. Одна из самых ранних и простых систем называется ASCII-текст. ASCII (произносится «ас-ки») — это аббревиатура названия «American Standard Code for Information Interchange» (американский стандартный код для обмена информацией). Эта простая система кодирования впервые была использована в телетайпах.

Текст — это простое отображение «один в один» символов в числа. Это очень компактный формат. Пятьдесят символов текста преобразуются в пятьдесят байт данных. Но это не то же самое, что текст в документе, созданном текстовым процессором, таким как Microsoft Word или OpenOffice.org Writer. Файлы документов, в отличие от простых файлов с ASCII-текстом, содержат множество нетекстовых элементов, используемых для описания их структуры и форматирования. Файлы с простым ASCII-текстом содержат только сами символы и очень небольшое количество простейших кодов управления, таких как символы табуляции, возврата каретки и перевода строки.

В системе Linux многие файлы хранятся в текстовом формате, и многие инструменты работают с текстовыми файлами. Даже Windows признает важность этого формата. Хорошо известная программа Notepad (Блокнот) — это редактор для простых файлов с ASCII-текстом.

Уильям Шоттс. Командная строка Linux.

Про структуру файловой системы Linux

Ранее в своих постах, я уже упоминал, что файлы в Linux располагаются иначе, чем в Windows. В Linux адрес расположения любых файлов начинается от “корня” (root) файловой системы, который обозначается символом слэша /

К примеру путь к директории с изображениями на моём компьютере будет иметь такой адрес: /home/ivan/Изображения.

Тут первый слэш обозначает “корень” нашей ФС, а остальные являются лишь разделителями между вложенными директориями и файлами.

Структура файловой системы в Linux определяется понятием стандартом иерархии файловой системы – FHS (Filesystem Hierarchy Standard). Краткая выдержка из Википедии:

FHS (англ. Filesystem Hierarchy Standard, «стандарт иерархии файловой системы») — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе UNIX. На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам.

Если визуализировать структуру ФС Linux, то выглядеть это будет примерно вот так:

Источник: wiki.merionet.ru

К примеру в Linux Mint если в файловом менеджере перейти в “корень” файловой системы, мы увидим такую картину:

Интересный факт. Вероятно вы обращали внимание на url адресов сайтов в интернете, эелементы которого отделяются символом слэша /. Например, https://r4ven.me/tag/oboi/. Изначально веб технологии, в т.ч. веб-сервера, на которых работают сайты, разрабатывались и эксплуатировались в Unix и Unix-подобной среде. А Linux, как мы помним – это как раз Unix-подобная ОС.

Абсолютные и относительные пути

В Linux существуют такие понятия, как абсолютный и относительный путь.

Абсолютные пути всегда начинаются с “корня” т.е. символа слэша /

Например: /home/ivan/Изображения/image.png – это абсолютный путь.

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

. или ./обозначает текущую директорию
.. или ../обозначает родительскую директорию, относительно текущей

Например: ./image.png – относительный путь до файла image.png. Подразумевается, что рабочим каталогом является /home/ivan/Изображения/.

Более наглядно работу с путями мы рассмотрим следующем посте, где будем рассматривать такие утилиты, как: cd, pwd.

Приглашение оболочки – shell prompt

И так, терминал 😉

При открытии терминала первым делом мы наблюдаем приглашение оболочки (prompt) к вводу команд. По умолчанию во многих дистрибутивах Linux внешний вид prompt имеет примерно одинаковую структуру. Тем не менее этот элемент очень гибко настраивается, но сейчас не об этом.

Давайте разберём “классический” prompt подробнее.

№ элемента promptОписание
1Имя пользователя от имени которого выполнен вход в сеанс оболочки.
2Имя компьютера (его hostname).
3Адрес текущего рабочего каталога.
В Linux системах символом тильды ~ обозначается адрес домашнего каталога пользователя.
4Уровень привилегий.
Знак доллара $ в строке приглашения обозначает, что работа в командной строке ведется от имени непривилегированного пользователя.
Знак # – обозначает работу от имени пользователя root (администратора системы).

Для сравнения, посмотрим на поведение prompt, если мы перейдём в привилегированный режим и изменим рабочий каталог:

sudo su

cd /usr/share

Волшебная клавиша Tab

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

Принцип работы такой: при частичном или полном вводе команды и/или её ключей/параметров необходимо нажать клавишу Tab один или несколько раз, после чего командная оболочка, при наличии возможных вариантов, даст вам подсказку. Данное действие в народе также называют “протабать” команду.

Как это выглядит. Например, команда ls (list) выводит содержимое каталогов, набираем её в терминале (без пробела) и дважды нажимаем Tab:

ls

И ниже видим возможные варианты команд, существующих в нашей системе, имя которых начинается с ls*:

Если же к этой команде добавить пробел и вновь дважды нажать Tab командная строка отобразить нам список каталогов, доступных нам в качестве аргументов для передачи их команде ls:

Послесловие

Сегодня наши знания пополнились пониманием некоторых базовых вещей в Linux: типы команд, структура файловой системы, роль простого текста, shell prompt и важная функция автоподстановки.

В следующем посте мы, с учетом полученных сегодня знаний, подробно рассмотрим работу утилит: pwd, ls, cd с помощью которых, будем осуществлять навигацию по нашей файловой системе в командной строке.

Спасибо, что читаете. Успехов в изучении Linux. Кар-кар)

Полезные источники

Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии