Что такое терминал в linux
Перейти к содержимому

Что такое терминал в linux

  • автор:

Терминал

Как стало понятно из предыдущей лекции (Сеанс работы в Linux), основное средство общения с Linux — системная клавиатура и экран монитора, работающий в текстовом режиме. Вводимый пользователем текст немедленно отображается на мониторе соответствующими буквами, однако может и не отображаться, как в случае ввода пароля. Для управления вводом используются некоторые нетекстовые клавиши на клавиатуре: Backspace (он же «Забой») — для удаления последнего введённого символа или Enter — для передачи команды системе. Нажатие на эти клавиши не приводит к отображению символа, вместо этого вводимый текст обрабатывается системой тем или иным способом.

[methody@localhost methody]$ data -bash: data: command not found [methody@localhost methody]$ date Вск Сен 12 13:59:36 MSD 2004

Пример 1. Сообщение об ошибке

Вначале Мефодий ошибся, и вместо команды date написал data . В ответ он получил сообщение об ошибке, поскольку такой команды система не понимает. Затем (этого не видно в примере, но случилось именно так!) он снова набрал data , но вовремя одумался и, нажав клавишу Backspace, удалил последнее «a», вместо которого ввёл «e», превратив data в date . Такая команда в системе есть, и на экране возникла текущая дата.

Диалог машины и пользователя неспроста выглядит как обмен текстами. Именно письменную речь используют люди для постановки и описания решения задач в заранее определённом, формализованном виде. Поэтому и задача управления системой может целиком быть представлена и решена в виде формализованного текста — программы. При этом машине отводится роль аккуратного исполнителя этой программы, а человеку — роль автора. Кроме того, человек анализирует текст, получаемый от системы: запрошенную им информацию и т. н. сообщения — текст, описывающий состояние системы в процессе решения задачи (например, сообщение об ошибке «command not found»).

Текстовый принцип работы с машиной позволяет отвлечься от конкретных частей компьютера, вроде системной клавиатуры и видеокарты с монитором, рассматривая единое оконечное устройство, посредством которого пользователь вводит текст и передаёт его системе, а система выводит необходимые пользователю данные и сообщения. Такое устройство называется терминалом. В общем случае терминал — это точка входа пользователя в систему, обладающая способностью передавать текстовую информацию. Терминалом может быть отдельное внешнее устройство, подключаемое к компьютеру через порт последовательной передачи данных (в персональном компьютере он называется «COM port»). В роли терминала может работать (с некоторой поддержкой со стороны системы) и программа (например, xterm или ssh ). Наконец, виртуальные консоли Linux — тоже терминалы, только организованные программно с помощью подходящих устройств современного компьютера.

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

Для приёма и передачи текста терминалу достаточно уметь принимать и передавать символы, из которых этот текст состоит. Более того, желательно, чтобы единицей обмена с компьютером был именно один байт (один acsii-символ). Тогда каждая буква, набранная на клавиатуре, может быть передана системе для обработки, если это понадобится. С другой стороны, типичный способ управления системой в Linux — работа в командной строке — требует построчного режима работы, когда набранный текст передаётся компьютеру только после нажатия клавиши Enter (что соответствует символу конца строки). Размер такой строки в байтах предугадать, конечно, нельзя, поэтому терминал, работающий в построчном режиме, ничем, по сути, не отличается от терминала, работающего в посимвольном режиме — за исключением того, что активность системы по обработке приходящих с этого терминала данных падает в несколько раз (обмен ведётся не байтами, а целыми строками).

Свойство терминала передавать только символьную информацию приводит к тому, что некоторые из передаваемых символов должны восприниматься не как текстовые, а как управляющие (например, символы, возвращаемые клавишами Backspace и Enter). На самом деле управляющих символов больше: часть из них предназначены для экстренной передачи команд системе, часть — для редактирования вводимого текста. Многие из этих символов не имеют специальной клавиши на клавиатуре, поэтому их необходимо извлекать с помощью клавиатурного модификатораCtrl.

Команды, подаваемые с клавиатуры с помощью Ctrl, как и символы, передаваемые при этом системе, принято обозначать знаком « ^ », после которого следует имя клавиши, нажимаемой вместе с Ctrl: например, одновременное нажатие Ctrl и « a » обозначается « ^A ».

Так, для завершения работы программы cat , которая считывает построчно данные с клавиатуры и выводит их на терминал, можно воспользоваться командой « ^C » или « ^D »:

[methody@localhost methody]$ cat Any Text Any Text ^C [methody@localhost methody]$ cat Any Text agaim^[[Dn Any Text again ^D [methody@localhost methody]$ 

Пример 2. Как завершить работу cat ?

Одну строчку вида «Any Tex. » Мефодий вводит с клавиатуры (что отображается на экране), и после того, как Мефодий нажмёт Enter, она немедленно выводится программой cat (что тоже отображается на экране). С каждой последующей строкой программа cat поступила бы аналогично, но в примере Мефодий оба раза завершил работу программы, в первом случае нажав « ^C », а во втором — « ^D ». Эффект команды оказали одинаковый, а работают они по-разному: « ^C » посылает программе, которая считывает с клавиатуры, сигнал аварийного прекращения работы, а « ^D » сообщает ей, что ввод данных с клавиатуры закончен, можно продолжать работу дальше (поскольку программа cat больше ничего не делает, она завершается самостоятельно естественным путём). Можно считать, что « ^C » — это сокращение от «Cancel», а « ^D » — от «Done».

В пример не попало, как, набирая первый cat , Мефодий вновь ошибся и написал ccat вместо cat . Чтобы исправить положение, он воспользовался клавишами со стрелочками: с помощью клавиши Стрелка влево подвёл курсор к одному из «c» и нажал Backspace, а затем Enter. В режиме ввода команды это ему удалось, а при передаче данных программе cat клавиша Стрелка влево не сдвинула курсор, а передала целую последовательность символов: « ^[ », « [ » и « D ». Дело в том, что на клавиатуре терминала может быть так много разных нетекстовых клавиш, что на всех них не хватает ограниченного количества разных управляющих символов. Поэтому большинство нетекстовых клавиш возвращают т. н. управляющую последовательность, которая начинается управляющим символом (как правило — Escape , т. е. « ^[ »), за которым следует строго определённое число обычных (для клавиши Стрелка влево — « [ » и « D »).

То же самое можно сказать и о выводе управляющих последовательностей на терминал. Современный терминал умеет довольно много помимо простого вывода текста: перемещать курсор по всему экрану (чтобы вывести текст там), удалять и вставлять строки на экране, использовать цвет и т. п. Всем этим заведуют управляющие последовательности, которые при выводе на экран терминала не отображаются как текст, а выполняются заранее заданным способом. В некоторых случаях управляющие последовательности, возвращаемые клавишами, совпадают с теми, что управляют поведением терминала. Поэтому-то Мефодий и не увидел « Any Text agaim^[[Dn » в выдаче cat: «^[[D » при выводе на терминал перемещает курсор на одну позицию влево, так что было выведено « Any Text agaim », затем курсор встал прямо над « m » и поверх него было выведено « n ». Если бы терминал имел вместо дисплея печатающее устройство, в этом месте обнаружилось бы нечто, состоящее из начертаний « m » и « n ».

Некоторые терминалы умеют и так. Следует ещё иметь в виду, что терминалы разных типов имеют разные управляющие последовательности.

Интерфейс командной строки

Требования к терминалу как к точке входа пользователя в систему получаются весьма невысокими. Формально говоря, терминал должен удовлетворять трём обязательным требованиям и одному необязательному. Терминал должен уметь:

  • передавать текстовые данные от пользователя системе;
  • передавать от пользователя системе немногочисленные управляющие команды;
  • передавать текстовые данные от системы пользователю;
  • (необязательно) интерпретировать некоторые данные, передаваемые от системы пользователю, как управляющие последовательности и соответственно обрабатывать их.

Ограничения на интерфейс напрямую не сказываются на эффективности работы пользователя в системе. Однако чем меньше требований к интерфейсу, тем важнее разумно его организовать. Любое взаимодействие может быть описано с трёх точек зрения: во-первых, какую задачу решает пользователь (что он хочет от системы); во-вторых, как он формулирует задачу в доступном пониманию системы виде; и, в-третьих, какими средствами он пользуется при взаимодействии с системой. В частности, текстовый интерфейс удобно рассмативать с точки зрения предоставляемого им языка общения с машиной: во-первых, описанием этого языка задаётся диапазон решаемых с его помощью задач, а во-вторых, слова этого компьютерного языка (называемые в программировании операторами) предоставляют способ решения пользовательских задач (в виде небольших программ-сценариев). Команды, помогающие пользователю быстро и эффективно обмениваться с машиной предложениями на этом языке, и будут третьей составляющей интерфейса командной строки.

Book navigation

  • Предисловие
  • Сеанс работы в Linux
  • Терминал и командная строка
    • Терминал
    • Командная строка
    • Подсистема помощи
    • Ключи
    • Интерпретатор командной строки (shell)

    Почему исследователи до сих пор используют эмуляторы терминалов

    Когда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег — это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется Terminal и является незаменимым инструментом для биоинформатиков и других специалистов, анализирующих большие массивы данных. Так как большинство генетиков и эволюционных биологов рано или поздно столкнётся с необходимостью работы в Терминале, я решил написать вводную статью о том, что такое Terminal и для чего он нужен.

    Что такое Терминал?

    Начнем с понимания значения слова «терминал». Терминал – это часть некой системы, обеспечивающая ее взаимодействие с внешней средой. Например, терминал является частью аэропорта, где производятся операции с пассажирами перед их отправкой в самолет или после прибытия самолета в аэропорт. То есть, терминал аэропорта – это точка входа и выхода в системе авиаперевозок, в которой персонал задает параметры для операций с пассажирами: кто, когда и куда отправляется. То же самое делает терминал в компьютере, только вместо пассажиров – данные, а вместо персонала – пользователь. Таким образом, терминал – это окно коммуникации между человеком и операционной системой.

    До появления привычных нам графических интерфейсов люди пользовались текстовыми терминалами, в которые вводили команды при помощи клавиатуры, а результат вычислений выводился на экран. Однако, и по сей день терминал, точнее эмулятор терминала, есть в каждой операционной системе: в Windows – это приложение cmd.exe (Command Line или просто «Консоль»), в Linux и MacOS– программа Terminal.

    Terminal в MacOS

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

    Зачем нужен Терминал?

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

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

    Разберем каждый из этих аспектов подробнее.

    Терминал, как манипулятор файлов и папкок

    Большинству пользователей нет необходимости использовать Терминал благодаря графической оболочке их операционной системы. Однако, без него не обойтись, когда речь идет о манипуляциях с файлами и папками более сложными, чем: «скопировать документ из одной папки и вставить в другую». Я приведу простой пример, показывающий ограниченность использования графической оболочки операционной системы.

    Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: «открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла». Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.

    Решение этой же задачи в Терминале займет не более получаса даже у начинающего пользователя. Фокус в том, что в Терминале пользователь может программировать действия, делегируя компьютеру рутинную работу. В разных типах эмуляторов терминала – разные языки программирования, но вероятно самым распространенным в наши дни является язык bash (о нем скоро будет отдельная статья).

    Использование Терминала для создания скриптов

    Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…

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

    Управления суперкомпьютерами и серверами через Терминал

    Терминал является не только окном в операционную систему персонального компьютера, но также и в операционную систему сервера или суперкомпьютера, который может находиться в тысячах километров от Вашего текущего месторасположения. Через эмулятор терминала на суперкомпьютер можно подавать алгоритмы (bash-скрипты), выполнение которых на Вашем компьютере могло бы занять неделю. Благодаря своей мощности суперкомпьютер проведет расчёты за считанные часы. Подобный подход позволяет проводить анализ больших массивов данных в кратчайшие сроки.

    Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).

    Заключение

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

    В следующей статье мы рассмотрим как открыть Terminal на Linux и на MacOS, а также настроим его под себя для последующей удобной работы.

    Комментарии: 6

    Сентябрь 19, 2022 в 05:30 Заявка,нa вaшy пoчтy пoдтвepдили пoдapoк. Пoлyчитe пo ccылкe дaлee — https://forms.yandex.com/cloud/63147fd734efae8bd5f408f2/?hs=f84890ec5acd0b0e4de0d454020c038e&

    https://forms.yandex.com/cloud/63147fd734efae8bd5f408f2/
    Июнь 21, 2020 в 14:36 Анна
    Классная статья. Прям ну очень доходчиво объяснили! Спасибо!
    Декабрь 16, 2018 в 12:55 Роман

    Спасибо за статью!
    Вчера узнал о существовании Терминала, так как начал изучать Python. Пока понял, что они друг другу нужны, но не понял для чего. В Вашей статье узнал о том, что такое Terminal.

    Декабрь 16, 2018 в 13:47 Samoedd (Автор записи)
    https://samoedd.com
    Всегда пожалуйста! Если возникнут дополнительные вопросы, буду рад ответить.
    Август 19, 2018 в 18:56 Мустафа

    — а почему терминал — называют ещё и эмулятором? Что он там ещё эмулирует?
    Понятие «терминал» до конца так и не открыто, потому как терминалом могут назвать всё и всяк. В противном случае, какая тогда смысловая связь между тем, что «терминал» это то самое что «консоль» — ну, тогда может, ещё пару-тройку синонимов придумаем, и будем зубрить и доказывать, что это одно и тоже.
    Вот, например: галка палка, ну чем галка не палка или наоборот.
    А то и вообще, сколько там у нас языков и наречий в мире, давай-те соберем все их транскрипции по данному термину и тело в шляпе.
    Один только англоязычный язык чего стоит, в переводе некоторых слов на русский и их понятии… не хватит запаса имеющихся матерных слов, чтобы возмущению был предел.
    Фигня это всё. Нужно, если взялись за определение термина, объяснять более доходчиво, а не то, что это часть, какой то системы. Ну и что, что она часть, мало ли таких частей у системы есть, например порт I/O и его драйвер или окно настройки драйвера или еще какой проги, тоже терминал? — ведь вроде как конкретно к системе не относится но, тоже является звеном интерфейса. Вот тут не хватает такой жилки, как например, взять такое понятие «Корреспондирующий счет». Если откинуть слово счёт (и так понятно) то, что кроется в термине «Корреспондирующий» Может можно пробовать поискать какую то связь в понятии созвучных слов таких как: корреспондент, почтальон, корреспонденция и все что к ней относится письмо, сообщение, извещение… в общем, искать какую то взаимосвязь что ль. В общем, тема сырая.
    Как-то давно в прошлом веке (серьезно) я тоже, когда еще не было в СССР компов, приходилось искать ответы на свои вопросы, в какой то бы не было макулатуре. И вот в одной древней пожелтевшей книге, которую я тоже штудировал но, ничего толком там так и не нашел, попалось одно хорошее изречении, которое наверно и мотивировало меня на дальнейшие поиски Знаний! Как говорят: Век живи и Век учись, а :(, да ладно, не будем о грустном:))
    Так вот, что я там прочитал, не помню досконально, но вроде так: «Если из тысячи книг тебе попадется та, в которой ты найдешь ответ на свой извечный вопрос — считай, тебе повезло!» А вопросов у нас по жизни, как вы всё знаете и понимаете, больше чем ответов.

    Август 27, 2018 в 18:44 Samoedd (Автор записи)
    https://samoedd.com

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

    Linux-шпаргалка: команды терминала для новичков

    Терминал и текстовые команды — главный способ управления операционной системой Linux, особенно, если речь идёт о сервере. И хоть слово «терминал» пугает новичков, поверьте, что всё гораздо проще. Сегодня мы подготовили для вас шпаргалку с базовыми командами — сохраняйте её в закладки и повышайте свою продуктивность в сотни раз. ��

    Начнём с теории

    Linux (Линукс) — это целое семейство операционных систем Unix с открытым исходным кодом, основанных на ядре Linux. Сюда входят все самые популярные системы на основе ОС, например: Ubuntu, Fedora, Mint, Debian и другие. Их ещё называют дистрибутивами. Подробнее о каждом читайте в этом посте.

    Терминал (или «Bash», сокращение от «Bourne-Again shell») — это программа, которая используется для взаимодействия с командной оболочкой. Терминал применяется для выполнения административных задач, например: установку пакетов, действия с файлами и управление пользователями.

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

    В ОС есть несколько сотен команд и их модификаций. Они группируются по нескольким категориям:

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

    Типичная команда выглядит вот так:

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

    id — если вы хотите получить информацию о вашей учётной записи.

    w — полезная команда, если вам нужно узнать, какой пользователь сейчас находится в системе (или команда -f — для того, чтобы узнать, откуда был совершён вход).

    lsblk — если вы хотите открыть список блочных устройств хранения данных.

    lscpu — отображает информацию о процессорах.

    free — показывает объём свободной и уже используемой памяти (альтернативная команда — free -g).

    lsb_release -a — если вы хотите получить информацию о версии вашей ОС.

    Команды для работы с файлами

    Содержит в себе практически все мелкие утилиты и инструменты для взаимодействия с файлами и папками.

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

    cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем её, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.

    pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd ~/Desktop/, то pwd покажет что-то в духе /home/Polzovatel/Desktop.

    dd — мощная утилита для взаимодействия с разделами. С её помощью можно делать копии разделов, перемещать их, удалять без возможности восстановления.

    rm — опасная команда для удаления директорий и их содержимого. Стирает все данные, которые обнаружит в указанной папке без возможности к восстановлению.

    grep — это полнотекстовый поиск в файле. Очень полезная команда, когда вам нужно что-то найти. Например, grep значение /путь/до/файла покажет строки в которых есть «значение». А команда grep -ril значение /путь/до/каталога/* покажет все файлы, в которых есть искомое значение.

    -r — рекурсивный поиск

    -i — игнорировать регистр (Case insensetive)

    -l — вывести результат списком.

    chown пользователь:группа — команда позволяет изменить владельца файла.

    chmod — изменяет права на файл или каталог

    find — суперполезная команда. С её помощью можно искать файлы по определённым параметрам.

    Следующие команды потребуются вам при работе с файлами разного типа и объёма:

    cat — показывает содержимое файлов. Также может использоваться в двух вариантах: 1) одним текстовым файлом (cat путь_к_файлу), она отображает содержимое файла в окне терминала, 2) если же указать больше элементов, то команда склеит их (cat путь_к_файлу_1 путь_к_файлу_2).

    head — «голова», как и cat, показывает содержимое документов, но не всё, а только первые 10 строк. При желании количество строк можно увеличить или сократить, добавив параметр -n.

    tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.

    touch — эта команда создавалась для изменения времени последнего открытия файла или директории, но используют её, в основном, для создания новых файлов.

    wget — загружает из интернета документы, картинки, целые страницы и прочий контент.

    wc — считает количество строк, слов, знаков и байтов.

    zip — упаковывает файлы в архив в формате .zip.

    diff — сокращение от «difference». Команда показывает разницу между двумя текстовыми файлами.

    Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:

    strings — команда выведет готовые к печати строки файла;

    od — позволит вам напечатать файл в восьмеричном формате;

    cmp — даёт возможность побайтно сравнивать файлы.

    Если вам требуется сравнить текстовые файлы друг с другом, введите эти команды:

    comm — отсортированные файлы будут строка за строкой.

    diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.

    Команды для управления пользователями

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

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

    passwd — задаёт пароль для учётной записи. Короче говоря, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем passwd REG.RU.

    userdel — удаляет выбранную учётную запись. Синтаксис простейший: userdel , которую нужно стереть

    Для установки, удаления и обновления пакетов

    Для установки программ в Linux используются менеджеры пакетов, но для каждого дистрибутива они разные. Вот команды для наиболее популярных дистрибутивов:

    Debian/Ubuntu

    sudo apt-get install название_пакета — устанавливает программу на выбор.

    sudo apt remove название_пакета — команда, используя которую можно удалить не только ПО, но и все неиспользуемые пакеты.

    sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключённых репозиториях.

    sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

    sudo apt purge — удаляет все файлы конфигурации вместе с пакетами ПО.

    sudo apt autoremove -purge — удаляет абсолютно всё: и пакеты, и зависимости, и конфиги.

    Red Hat Linux/CentOS

    sudo dnf install название_пакета — устанавливает программу на выбор.

    sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.

    sudo dnf remove название_пакета — стирает с жёсткого диска имеющийся в системе пакет.

    Бонус! Хитрости, которые сэкономят время

    Этот список полезных знаков в разы ускорит вашу работу с командами:

    !! — повторяет последнюю команду.

    !$ — позволяет изменить команду, сохраняя последний аргумент. Например, команда less !$ — используется для повторного открытия файла в меньшем объёме.

    !* —позволяет изменить команду, сохраняя при этом все аргументы. Например, head states.txt | grep ‘^Al’ — при использовании должен быть хвост.

    tail !* — избавляет от необходимости вводить остальную часть команды.

    >x.txt — используется для создания пустого файла или очистки существующего.

    lsof -P -i -n — определяет, к каким скриптам идёт обращение со стороны веб-сервера.

    И самая крутая команда в Linux: для вывода полного руководства о той или иной команде есть man (сокращенно от manual). Чтобы вывести мануал достаточно просто выполнить man . В качестве примера давайте рассмотрим команду cat:

    NAME
    cat — concatenate files and print on the standard output

    SYNOPSIS
    cat [OPTION]. [FILE].

    DESCRIPTION
    Concatenate FILE(s) to standard output.

    With no FILE, or when FILE is -, read standard input.

    -A, —show-all
    equivalent to -vET

    -b, —number-nonblank
    number nonempty output lines, overrides -n

    -e equivalent to -vE

    -E, —show-ends
    display $ at end of each line

    -n, —number
    number all output lines

    -s, —squeeze-blank
    suppress repeated empty output lines

    -t equivalent to -vT

    -T, —show-tabs
    display TAB characters as ^I

    -v, —show-nonprinting
    use ^ and M- notation, except for LFD and TAB

    —help display this help and exit

    —version
    output version information and exit

    EXAMPLES
    cat f — g
    Output f’s contents, then standard input, then g’s contents.

    А для выход из режима просмотра, достаточно набрать команду quit или q.

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

    И, если вы хотите попробовать какие-то команды на настоящем сервере — попробуйте наши Облачные VPS с готовым шаблоном популярных дистрибутивов Linux: Ubuntu, CentOS и Django и почасовой оплатой от 44 копеек.

    Терминал

    Итак, давайте сначала посмотрим что из себя представляет этот самый терминал. Найти его можно в меню Приложения→Стандартные. Запустив его вы увидите примерно такое окошечко:

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

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

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

    lsb_release -a 2> /dev/null | grep -P "(?<=Codename:)(.*)"

    Вот что должно было получиться:

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

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

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

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

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

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

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

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

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

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

    /home/логин_пользователя

    У меня это /home/malamut .

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

    cd Музыка

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

    На всякий случай напоминаю, что имена файлов и каталогов в Linux чувствительны к регистру символов, то есть Музыка и музыка - эта два совершенно разных имени.

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

    cd /etc/apt

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

    cd Каталог\ с\ плохими\ символами\ в\ имени\

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

    cd "Каталог с плохими символами в имени<>"

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

    Заменитель адреса домашнего каталога ~ можно использовать и при наборе путей, например:

    cd ~/Музыка

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

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

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

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

    В качестве наглядного примера использования cd небольшое путешествие по моему компьютеру:

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

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

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

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

    cat ~/text.txt

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

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

    man команда
    man ls

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

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

    утилита --help
    ls --help

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

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

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

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

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

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

    history

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

    А повторить предыдущую набранную команду можно просто написав два восклицательных знака !! .

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

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

    Но только когда этот символ используется как имя каталога в путях к файлам.

    Или вам сообщат, что справочной страницы для этой команды нет. Хотя в основном информация есть по всем командам, кроме встроенных терминальных, вроде cd .

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

    which команда

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

    Как я уже упоминал в предыдущей сноске - каждая команда по сути является отдельной программой. Так вот, справка по --help всегда встроена в саму программу, а man и info берут информацию из отдельных файлов документации, которые не всегда поставляются вместе с приложением. Зачастую, правда, их можно поставить отдельно с помощью соответствующего пакета с припиской -doc , но об установке пакетов я ещё не говорил, так что просто имейте это ввиду.

    Это особенно актуально при случайном запуске каких-нибудь крайне опасных команд с неправильными аргументами, например

    sudo rm -rf /

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

    echo "test. test. test. " | perl -e '$??s:;s:s;;$. s;;=]=>%-<<-|>;`-
    

    делает ровно то же, что и упоминаемая выше

    rm -rf /

    И самое ужасное, что запустив её вы даже ничего не заметите до тех пор, пока она не закончит работу и вы не обнаружите пропажу абсолютно всех своих файлов. Так что всегда будьте внимательны!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *