#004 Командная строка, эмулятор терминала, командная оболочка Linux Mint. Знакомство с bash

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать систему Linux на примере Linux Mint. Мы уже выполнили всю подготовительную работу (установили и настроили виртуальную машину, а затем уже на нее установили дистрибутив Linux Mint). Теперь можем попробовать поработать с нашим Linux. Естественно, будем работать в консоле (хотя это не совсем правильный термина, ниже вы поймете почему) и вообще все наше знакомство с Linux будет проходить через эмулятор терминала «глазами» командной оболочки bash.

Командная строка, эмулятор терминала, командная оболочка Linux Mint. Знакомство с bash.

Эта публикация будет состоять из шести небольших частей. И в первой части мы разберемся с такими терминами как командная строка, эмулятор терминала и командная оболочка, попутно поняв зачем все это нужно  в Linux. Вообще мы будем работать с командной оболочкой bash, но я постараюсь немного рассказать о других командных оболочках, которые можно использовать в Linux во второй части. Третья часть будет посвящена эмулятору терминала в Linux. А в четвертой части мы уже начнем изучать некоторые команды Linux. В дальнейшем я планирую подробно рассказать о приемах для быстрой работы в эмуляторе терминала, но и здесь мы немного затронем этот вопрос в пятой части. В завершении этой публикации вы увидите, что на самом деле под графической оболочкой любого дистрибутива Linux на самом деле работает несколько сеансов терминала.


Командная строка, эмулятор терминала и командная оболочка в Linux

Когда мы слышим фразу командная строка, то, скорее всего, говорящий имеет ввиду эмулятор терминала, который умеет отдавать текст, который мы вводим с клавиатуры, командной оболочке. Командная оболочка в системах типа Unix, например, Linux и в частности Linux Mint, с которым мы будем работать, хотя вы можете выбрать любой другой дистрибутив, который будет вам по душе (Debian, Fedora, Ubuntu CentOS и т.д.), это программа, которая служит мостом между пользователем и операционной системой: она принимает команды, которые вводятся с клавиатуры и передает их операционной системе на исполнение.

Большинство дистрибутивов Linux идут в комплекте с командной оболочкой проекта GNU, которая называется bash. На самом деле bash – это аббревиатура (Bourne Again Shell) и является   улучшенной заменой оболочки sh.

Другие виды командных оболочек Linux

На самом деле командная оболочка – это одна из важнейших частей любой операционной системы подобной Unix. Многие Linux дистрибутивы предоставляют своим пользователям несколько оболочек на выбор, в том числе и наш подопытный – Linux Mint. Сейчас мы не будем вдаваться в подробности, но перечислим несколько командных оболочек, с которыми вы можете встретиться и дадим им краткую характеристику. На самом деле командных оболочек очень и очень много, мы будем разбираться только с bash, так как именной эта оболочка чаще всего используется во многих дистрибутивах. Если вас данная тема заинтересовала, то воспользуйтесь Google и напишите запрос типа «командные оболочки Linux/Unix» и вы получите массу интересных статей.

Командные оболочки можно классифицировать и делить. Так, например, bash можно отнести к классу оболочек Bourne shell/ Bourne sh/sh. Эта оболочка названа в честь своего создателя Стивена Борна. Исполняемый файл этой оболочки – sh. Именно так, без расширений. Про файлы в Linux мы будем говорить отдельно и много.

Bourne again shell или bash, с которым мы будем работать. Исполняемый файл – bash. Является самой популярной командной оболочкой в мире дистрибутивов Linux.

KoenShell или ksh – еще один доработанный клон sh.

Public domain ksh – открытая реализация оболочки ksh.

Есть еще семейство оболочек, у которых за основу языка сценариев был взят синтаксис языка программирования C. Самой первой такой оболочкой была C shell, которую разработал Билл Джой, автор редактора Vi. Здесь стоит упомянуть, что большей популярностью пользуется оболочка tcsh (TENEX C Shell), которая обладает большей интерактивностью и к тому же является свободной.

Еще можно выделить оболочки ash (Almquist shell) и xsh (Xiki shell). Первую чаще всего можно встретить в различных встраиваемых системах, а вторая отличается тем, что совмещается командный и графический режим работы.

Есть и другие командные оболочки, которые берут синтаксис сценариев от популярных языков программирования: Perl Shell или psh – эта оболочка написана на языке perl и может работать из-под Windows. Упомянем также оболочку IPython и scsh, в основе которой лежит синтаксис скриптового языка Scheme 48.

Конечно, это далеко не все командные оболочки, которые можно использовать в Linux и других Unix-подобных операционных системах. Есть еще много разных, удобных и не очень, многофункциональных и узкоспециализированных командных оболочках. На самом деле, выбор оболочки – это дело вкуса каждого, но освоив одну из них, вы легко разберетесь с другой.

Эмулятор терминала в Linux

Если вы используете дистрибутив Linux с графическим интерфейсом, а, скорее всего, так оно и есть, иначе вы бы это не читали, то для взаимодействия с командной оболочкой вам потребуется еще одна программа, которая называется эмулятор терминала (кстати, если вы являетесь пользователем Windows и хотите ближе познакомиться с системами Linux, то для первого знакомства я рекомендую вам установить VirtualBox, который позволит создать виртуальную машину, на которую можно поставить дистрибутив, например, Linux Mint, ну а если возникнут трудности с управлением виртуальной машиной VirtualBox, то у меня в блоге есть инструкция). В зависимости от вашего графического интерфейса эта программа может называться по-разному, например, в дистрибутивах с KDE эмулятор терминала называется konsole, а в дистрибутивах с GNOME – gnome-terminal. На самом деле эмуляторов достаточно много, но у них у всех одна задача – предоставить вам доступ к командной оболочке.

Окно эмулятора терминала в Linux Mint

Окно эмулятора терминала в Linux Mint

На рисунке выше показано окно эмулятора терминала в Linux Mint, его можно запустить, кликнув на соответствующую иконку в левом нижнем углу со всплывающей подсказкой «Терминал» (если у вас не оказалось такой иконки, то попробуйте сочетание клавиш Ctrl+Alt+T, это сочетание работает во многих дистрибутивах Linux и обычно по нажатию этих клавиш открывается окно эмулятора терминала). Как видите, окно терминала Linux очень похожа на окно командной строки DOS в операционных системах семейства Windows.

Пробуем работать с командной оболочкой bash

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

kirill@AsusPC ~ $

В моем случае Mint установлен на виртуальной машине VirtualBox, но это по сути ничего не меняет. Давайте разберемся с тем, что мы видим. Во-первых, если мы видим приглашение, то это означает, что терминал ждет от нас каких-либо действий в виде команд, то есть командная оболочка в такие моменты готова принять от нас ввод. Во-вторых, приглашение в различных дистрибутивах может немного отличаться, но в общем случае оно выглядит так: имя_пользователся@имя_компьютера, после имени пользователя следует имя каталога, в котором вы сейчас находитесь, в данном случае символ «~» означает, что вы находитесь в своей домашней папке, а в конце приглашения мы видим знак $, который говорит о том, что команды выполняются от имени обычно пользователя, а не сюперюзера или root. Если же в конце приглашения стоит знак решетки, то это означает, что текущий пользователь терминала обладает правами root. Попробуйте ввести команду:

cd /usr/bin

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

kirill@AsusPC /usr/bin $

А теперь выполните какую-нибудь бессмысленную команду, например:

Sdfsdfsdvfgdfgdfgfd

Мы видим, что командная оболочка сообщает о том, что мы ввели какую-то чушь и дает нам возможность попробовать снова, экран терминала будет выглядеть примерно так:

kirill@AsusPC ~ $ cd /usr/bin
kirill@AsusPC /usr/bin $ Sdfsdfsdvfgdfgdfgfd
Sdfsdfsdvfgdfgdfgfd: команда не найдена
kirill@AsusPC /usr/bin $

Тут стоит обратить внимание на то, что в приглашении изменился каталог, приглашение нам подсказывает, что мы находимся в каталоги bin, который в свою очередь находится в папке usr, а usr находится в корне или корневом каталоге, который обозначается просто символом «/».

История команд, использование курсора и еще несколько простых команд для оболочки

Продолжим работать с командной оболочкой bash. Если вы повторяли примеры, то теперь сможете воспользоваться стрелками на своей клавиатуре: стрелка вверх позволяет посмотреть и повторить предыдущую команду, а стрелка вниз следующую. Это называется историей команд, по умолчанию многие дистрибутивы Linux запоминают 500 команд, терминал помнит команды даже если его выключить, а затем снова включить.

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

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

В эмуляторе терминала Linux не пытайтесь использовать сочетания клавиш Ctrl+C и Ctrl+V для копирования и вставки, не сработает. У этих команд в терминале другое назначение, о нем мы поговорим позже. Копирование и вставку в терминале можно выполнять мышкой при помощи контекстного меню: выделите фрагмент текста и нажмите правую кнопку мыши, появится контекстное меню с несколькими различными действиями. На рисунке ниже вы можете увидеть пример.

Операции копирования и вставки можно выполнять при помощи контекстного меню эмулятора терминала

Операции копирования и вставки можно выполнять при помощи контекстного меню эмулятора терминала

Рассмотрим еще несколько простых команд оболочки. Например, такую echo Hello, Vasya. Вы должны увидеть такую вот простую строку:
kirill@AsusPC /usr/bin $ echo Hello, Vasya
Hello, Vasya
kirill@AsusPC /usr/bin $

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

kirill@AsusPC /usr/bin $ date
Пн окт 23 19:36:25 +07 2017
kirill@AsusPC /usr/bin $

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

kirill@AsusPC /usr/bin $ free
total used free shared buff/cache available
Память: 2047912 396544 1098824 5396 552544 1467596
Подкачка: 1839100 0 1839100
kirill@AsusPC /usr/bin $

Или еще команда df, которая показывает сколько места на вашем жестком диске занято, а сколько свободно:

Результат работы команды df

Результат работы команды df

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

Результат работы команды cal

Результат работы команды cal

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

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

Стоит сказать и про функцию автодополнения, которая бывает полезна в том случае, если вы не помните как правильно пишется команда, эта функция работает по нажатию на клавишу Tab. Введите в окне терминала латинские буквы ec и нажмите два раза Tab:

kirill@AsusPC /usr/bin $ ec
echo
ecryptfs-add-passphrase
ecryptfsd
ecryptfs-find
ecryptfs-insert-wrapped-passphrase-into-keyring
ecryptfs-manager
ecryptfs-migrate-home
ecryptfs-mount-private
ecryptfs-recover-private
ecryptfs-rewrap-passphrase
ecryptfs-rewrite-file
ecryptfs-setup-private
ecryptfs-setup-swap
ecryptfs-stat
ecryptfs-umount-private
ecryptfs-unwrap-passphrase
ecryptfs-verify
ecryptfs-wrap-passphrase
kirill@AsusPC /usr/bin $ ec

Обратите внимание: терминала выдал нам подсказку в виде целого списка команд, начинающихся с ec, а новая строка с приглашением уже содержит эти символы. Попробуйте написать ech и нажать один раз Tab, в этом случае терминал закончит (тут будет правильнее сказать командная оболочка) за вас команду и вы увидите echo, это произошло потому, что в данный момент командная оболочка не знает других команд, начинающихся с ech, кроме команды echo.

Сеансы терминала, которые работают под графической оболочкой в Linux

Терминал, с которым вы работали закрыт, но на самом деле за всеми рюшечками рабочего стола крутится несколько сеансов терминалов, чтобы получить доступ к этим виртуальным терминалам во многих дистрибутивах Linux, в том числе и в Linux Mint, нужно воспользоваться сочетанием клавиш Ctrl+Alt+F1 и так до Ctrl+Alt+F6.

Один из сеансов эмулятора терминала, который работает под графической оболочкой Linux Mint

Один из сеансов эмулятора терминала, который работает под графической оболочкой Linux Mint

По рисунку выше мы видим, что это первый сеанс (tty1), который я открыл после нажатия клавиш Ctrl+Alt+F1. Чтобы получить возможность ввода команд, нужно ввести логин и пароль пользователя, под которым вы хотите работать. После того, как вы нажали заветное сочетание клавиш, которое сработает из любого приложения, какое бы не было запущено, вам нужно будет ввести свои логин и пароль, а переключаться между терминалами после входа можно при помощи сочетания клавиш Alt+F1 и так до F6. Нажав Alt+F7, вы вернетесь к своему рабочему столу, но это обычно, если же этого не произошло продолжайте перебирать клавиши: F8, F9, F10 и так далее. Также не забывайте завершать сеанс работы с терминалом командой exit.

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

Я хочу продолжить выпускать уроки по Linux Mint и командной оболочке bash

Если это так, то ваше желание совпадает с моим. Но мне от вас нужна небольшая помощь! Дело всё в том, что весь мой контент доступен полностью и абсолютно бесплатно в блоге и на канале YouTube. Создание контента — это работа, отнимающая много сил и энергии (благо, она мне нравится и пока я готов ей заниматься), оплату с вас за эту работу я не прошу, но прошу помочь распространить этот контент и поддержать мой канал и группу Вконтакте. Поэтому, если вы хотите, чтобы видео выходили чаще, лучше и больше, то можете мне помочь один из нескольких способов, указанных ниже, это нетрудно, но очень мотивирует и помогает:

  1. Оставьте ссылку на мой сайт, канал, группу в ВК, отдельное видео у себя на странице в соц. сетях или на своем сайту.
  2. Вступите в группу в ВК: https://vk.com/zametkinapolyah.
  3. Подпишитесь на мой YouTube-канал: https://www.youtube.com/user/zametkinapolyahru.
  4. И самое эффективное: после просмотра видео не забудьте написать отзыв в комментариях на YouTube и поставить лайк видео, опять же, на YouTube.

Замечу, что все мои видео уроки появляются сперва на YouTube, там вы их увидите быстрее всего.

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

WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

 

Рекомендую посмотреть и почитать: