Консоль или терминал linux

Терминалы, оболочки, консоли и командные строки

Оригинал: Terminals, shells, consoles, and command lines
Автор: Seth Kenlon (Red Hat).
Дата публикации: 23 марта 2020 г.
Перевод: В.Костромин
Дата перевода: 12 мая 2020 г.

Терминалы, оболочки, консоли и командные строки связаны, но эти термины не являются синонимами. Сет Кенлон объясняет различия.

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

Как работают компьютеры

Когда компьютер запускается, ядро ОС распознает его физические устройства и обеспечивает возможность взаимодействия между ними. Существует много разных ядер: давным-давно было ядро Unix, ядро Sun, ядро BSD, а позже появилось ядро Linux, ядро Hurd, ядро Mach и ядро NT.

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

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

Интерактивная оболочка

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

Существуют разные версии того, почему был выбран термин «оболочка», самое правдоподобное и удовлетворительное объяснение состоит в том, что интерфейс оболочки окружает ядро так же, как ореховая скорлупа окружает орех. Оболочка — это та часть, с которой взаимодействует пользователь, а запросы на вычислительную мощность управляются ядром.

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

Оболочка является абстрактной концепцией для многих людей. Когда мы думаем или говорим об оболочке, полезно иметь в виду какую-то конкретную. Их много и есть из чего выбрать. Самая популярная — это (GNU) Bash, но альтернативой ей могут служть Zsh и Fish. Tcsh и Ksh — это надежные старые фавориты ранних версий UNIX со строгим соответствием POSIX. Ash и Dash стремятся быть легкими и быстрыми, что делает их идеальными для встраиваемых систем и для минимальных сред. Powershell от Microsoft — это основанная на .NET оболочка с открытым кодом.

Командная строка

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

Приглашение представляет собой некоторый символ, который дает вам понять, что оболочка ожидает ваших инструкций. Обычно это символ доллара ( $ ), но это может быть также символ процента ( % ), угловая скобка ( > ), знак числа ( # ) или что-то еще. То есть приглашение оболочки может выглядеть примерно следующим образом:

Одно из заметных различий между оболочками заключается в синтаксисе. Например, в Bash, Zsh, Ash и Ksh значения переменных задаются с помощью знака равенства:

Читайте также:  Mac os скопировать горячие клавиши

В Tcsh, однако, используется ключевое слово set :

Помощь

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

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

Даже если вы введете команду help в ответ на приглашение Bash, вы получите только список встроенных команд, только немногие из которых могут показаться полезными для дальнейшего взаимодействия с оболочкой.

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

Поскольку пользователь не всегда имеет даже необходимый минимум знаний, в публичных системах заменяют не всегда полезную команду help на что-то более информативное, например, на shellp.

Консоль

В Linux или BSD вы можете получить доступ к оболочке не запуская графическое окружение вообще (то есть оболочка — это все, что будет вам доступно), либо набрав сочетание клавиш Alt+Shift с одной из функциональных клавиш от F2 до F6. Каждая из этих функциональных клавиш открывает для вас экран, предоставляемый getty (или agetty, или еще чем-то подобным, в зависимости от того, что используется в вашем дистрибутиве). На этом экране отображается приглашение для входа в оболочку, и этот экран часто называют консолью. Строго говоря, это сеанс getty или эмулированное tty-устройство.

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

Наиболее распространенный способ доступа к оболочке на современных компьютерах — это открыть эмулятор терминала, в котором запускается оболочка.

Терминал

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

Например, на рабочем столе Linux вы можете запустить один экземпляр терминала GNOME (GNOME Terminal), который будет служить окном для доступа к оболочке Bash, и другой экземпляр терминала GNOME, который послужит окном в оболочку Tcsh.

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

Существует множество эмуляторов терминала для любой операционной системы. Настольные компьютеры с Linux и BSD поставляются с xterm в качестве запасного варианта и обычно включают современный эмулятор для ежедневного использования (например, GNOME Terminal, Konsole и т.д.). Mac OS поставляется с проприетарным эмулятором терминала, но существует намного лучшая замена — iTerm2 (поставляется под лицензией GPLv2).

Windows по умолчанию включает PowerShell, но существует много возможностей замены этого эмулятора программами с открытым кодом, такими как ConEmu или Cmder.

Источник

Терминал и консоль

Итак, давайте сначала посмотрим что из себя представляет этот самый терминал. Найти его можно набрав «терминал» в строке поиска, или комбинацией клавиш Ctrl + Alt + T . Запустив его вы увидите примерно такое окошечко:

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

Управление терминалом

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

Читайте также:  Lexmark x1150 драйвер windows 10

На выходе получим кодовое имя нашего дистрибутива:

Набирать такие команды с клавиатуры посимвольно немного неудобно, поэтому давайте сразу разберёмся с основами управления терминалом. Начнём с копирования/вставки. Стандартные сочетания клавиш Ctrl + C и Ctrl + V в терминале не работают, вместо них используется старая добрая пара Ctrl + Insert с Shift + Insert или же сочетания с Shift : Ctrl + Shift + C для копирования и Ctrl + Shift + V для вставки. Что ж, теперь вы умеете целиком копировать команды из руководств.

Однако, часто всё-таки команды приходится набирать вручную, а не вставлять откуда-то. И вот тут на помощь приходит великолепное свойство терминала, называемое автодополнением. Наберите в терминале символы apt-g , а потом нажмите клавишу Tab . Терминал автоматически дополнит за вас команду. Кстати, apt-get — это основная консольная утилита управления пакетами, но об этом после.

А теперь попробуйте набрать только apt и нажать Tab . Ничего не происходит? А теперь нажмите Tab два раза подряд. Видите, терминал выдал вам список всех команд, начинающихся с apt .

Удобно, не правда ли? Особенно, если привыкнуть.

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

Еще одна хитрость. Откройте терминал нажмите сочетание клавиш Ctrl + R и начните набирать нужную команду. Терминал автоматически подставит подходящие варианты из набранных ранее команд.

Работа с файлами

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

Узнать, в какой же папке вы сейчас находитесь, очень просто, достаточно посмотреть на приглашение терминала, то есть на те символы, которые печатаются автоматически в начале каждой строки:

Текущий каталог — это то, что между символами : и $ . Кстати, обратите внимание, перед : стоит имя пользователя и имя компьютера, разделённые символом @ . Но когда вы запускаете терминал, то между : и $ стоит символ

При запуске терминала текущим каталогом становится домашняя папка пользователя, так вот, символ

— это синоним адреса домашней папки текущего пользователя 2) . Кстати, если вы ещё не знаете, полный адрес домашнего каталога выглядит как

У меня это /home/san-alex .

Хорошо, как выяснить текущее местоположение, вроде разобрались, а как же его сменить? Для этого предназначена команда cd , выполните, например, команду

Видите, текущее местоположение изменилось:

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

Хочу сразу обратить внимание на несколько важных особенностей. Во-первых, при наборе путей так же работает автодополнение по Tab , это очень удобно. Во-вторых, использовать различные небуквенные символы и пробелы напрямую при наборе путей нельзя. Например, для того, чтобы перейти в каталог, содержащий в имени символ пробела, надо при наборе пути к такому каталогу перед пробелом поставить символ обратного слеша \ . Вот так:

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

Но в этом случае автодополнение работать не будет.

Заменитель адреса домашнего каталога

можно использовать и при наборе путей, например:

А для перемещения непосредственно в домашний каталог достаточно просто набрать cd без аргументов.

Для перемещения на каталог выше можно использовать команду

Вообще, две точки обозначают всегда родительский каталог, поэтому можно делать так:

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

Как перемещаться по каталогам в первом приближении вроде разобрались, теперь же я расскажу про некоторые другие полезные операции. Посмотреть содержимое текущего каталога можно командой ls :

Обычно командам можно передавать различные модификаторы, например:

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

Очень часто параметрами команд являются имена файлов или папок, именно для этого я так подробно рассказывал о способе перемещения по каталогам и использования различных имен файлов в качестве аргументов. Например, команда cat показывает содержимое текстового файла, и если вы хотите посмотреть содержимое файла test.txt , лежащего в вашем домашнем каталоге, то вы могли бы выполнить команду

Читайте также:  Установка apache windows 64 bit

Получение справки

Начинающих пользователей Linux очень часто любят пугать так называемыми манами. Дело в том, что man — это система справки о командах для терминала. Пользоваться ей очень легко, просто наберите в терминале

Появится собственно текст справки 3) , разбитый на разделы. Перемещаться по нему можно с помощью стрелок и клавиш PgUp и PgDown , а для выхода просто нажмите Q .

Кроме man-страниц у многих утилит 4) есть встроенная справка, которую обычно можно посмотреть, запустив программу с ключом —help :

Есть и другие способы получения помощи, например похожая на man утилита info . Но чаще всего наиболее полную информацию о программе можно получить именно из man-страниц, а краткую справку — указав ключ —help при вызове 5) .

История введённых команд

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

У каждой команды в истории есть номер, выполнить снова команду с определённым номером можно набрав в терминале восклицательный знак и номер нужной команды:

А повторить предыдущую набранную команду можно просто написав два восклицательных знака !! Двигаться по истории набранных команд можно стрелочками вверх/вниз клавиатуры. Нажав один раз на стрелку вверх — терминал покажет последнюю набранную команду, два раза — предпоследнюю, и так далее. Если нужно вернуться назад — нажмите стрелочку вниз.

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

Разные полезности терминала

На всякий случай немного коснусь ещё одной темы. Бывает так, что вы что-то запустили в терминале и хотите прервать работу этого чего-то. Обычно это сделать очень просто, достаточно нажать на клавиатуре сочетание клавиш Ctrl + C 6) .

Есть и другие управляющие сочетания, например Ctrl + D посылает сигнал конца файла запущенному приложению, а без запущенных утилит делает тоже, что и терминальная команда exit . Ну а если вы хотите более подробно управлять работающими программами, то посмотрите на системный монитор htop , который, правда, нужно доустанавливать отдельно.

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

И напоследок, в качестве примера, рассмотрим простой консольный файловый менеджер. Помните, в одной из предыдущих глав мы установили в нашу систему Midnight Commander. Введите в терминале команду

и увидите, что получится:

Консоль

Не путайте терминал с консолью. Для работы консоли графическая оболочка не нужна совсем. Именно так работают серверные версии Ubuntu. Терминал — это только одна из программ, которые эмулируют работу консоли. В «настоящую» консоль можно попасть набрав комбинацию клавиш Ctrl + Alt + Fx (где Fx — клавиши от F1 до F6 ). После этого нужно ввести свой логин и пароль (пароль никак отображаться не будет, ни звездочками, ни черточками — вообще никак). Обратно в графическую оболочку — Ctrl + Alt + F7 .

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

Вы, наверное, подумали: а зачем эта консоль нужна, если есть терминал? Приведу только два примера:

посмотреть номер зависшего процесса и командой

завершить зависший процесс.

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

Источник

Оцените статью