Лучший shell для linux

Какой Linux Shell лучше? Сравнение 5 общих оболочек

Счастливы использовать оболочку bash в Linux? Или вы бы предпочли попробовать альтернативу? На выбор есть tsch, fish, KornShell и Z Shell. Но какой из этих популярных оболочек Linux лучше?

Что такое оболочка Linux?

Обычно, когда вы пишете приложение, оно выполняется на языке высокого уровня, понятном людям. Примерами этого являются C #, Java, C ++ и т. Д. Хотите верьте, хотите нет, но ваш компьютер видит все как 1 в 0 или, как обычно известно, двоичный или машинный код.

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

Теперь, это очень высокоуровневое представление о том, что происходит; просто помните, ваш компьютер нуждается в слое перевода. Это находится между тем, что вы говорите, и тем, как он может это понять.

Оболочка — это то, что известно как переводчик. Подобно компилятору, интерпретатор переводит человеческий код в машинный код. Одно из отличий заключается в том, что переводчик делает это по одному заявлению за раз. Тем временем компилятор сканирует всю программу и переводит все это в машинный код.

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

Доступны несколько оболочек Linux. Чтобы узнать все оболочки, доступные в вашей системе, откройте терминал и введите:

кошка / etc / shells

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

Но вы используете лучшую оболочку Linux? Давайте посмотрим на то, что доступно.

1. Баш

Это на милю самая популярная оболочка среди пользователей Linux. Трудно даже думать об оболочках, если Bourne-Again Shell (bash) не является частью уравнения. Многие дистрибутивы Linux поставляются с bash в качестве оболочки по умолчанию, потому что bash является оболочкой GNU по умолчанию. Выпущенный в 1989 году, он также может похвастаться несколькими десятилетиями здорового развития.

Предшественником Bash является The Bourne Shell (sh), которая является одной из оригинальных оболочек Unix. Одной из привлекательных особенностей для программистов sh было то, что они могли напрямую переносить свои скрипты в bash без изменений. Bash также предлагает несколько улучшений своему предшественнику:

  • Завершение команды
  • История команд

Часто онлайн документация предполагает, что вы используете bash. Однако, это не без его недостатков — как может засвидетельствовать любой, кто когда-либо писал сценарий bash! Дело не в том, что вы не можете что-то сделать, а в том, что читать и писать не всегда особенно элегантно.

2. KornShell

Обычно известный как ksh, KornShell — это популярная альтернативная оболочка Linux, созданная Bell Labs в 1980-х годах. Существует не так много различий между bash и ksh, но у каждого есть незначительные преимущества перед другим. Ksh, например, имеет команду cd old new. Если вы были в каталоге / Downloads / foo / bar / one / foobar и вам нужно было перейти в / Downloads / foo / bar / two / foobar, вам просто нужно ввести:

Читайте также:  Как установить windows имея образ iso

Ветераны ksh будут пропагандировать его превосходство, упоминая его преимущества сценариев. Это включает:

  • Лучший синтаксис цикла
  • Естественные способы повторения команд
  • Ассоциативные массивы

В отличие от bash, сложно найти помощь для ksh в Интернете. Если вы хотите попробовать ksh, введите:

sudo apt установить ksh ksh

3. Tcsh

Tcsh может проследить свои корни еще до появления Unix. Это улучшенная версия оболочки C (csh) и функций:

  • Программируемое завершение командной строки
  • Редактирование командной строки
  • Добавление аргументов в псевдонимы
  • Простой доступ к истории команд

Вы можете запустить любую команду, набрав! N, заменив n на соответствующий номер в отображаемой истории. Завершение вкладки истории в tcsh работает, набрав:

Это распространяется на последнюю команду, которая началась с буквы «а». Для сравнения, в bash вам нужно будет набрать! A: p, чтобы сначала увидеть команду, а затем !! выполнить это.

Чтобы попробовать tcsh, наберите:

sudo apt установить tcsh tcsh

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

4. Рыба

Среди всей серьезности Linux, команда из fish привнесла чувство юмора в свой проект. На их веб-сайте заголовок «насмешка» гласит «Наконец, оболочка командной строки для 90-х», хотя fish («дружественная интерактивная оболочка») была разработана в 2005 году. Помимо рекламируемого «Славного цвета VGA», есть некоторые улучшения по сравнению с другие снаряды:

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

Чтобы узнать, о чем рыба, введите:

судо установить рыбу

5. Z Shell

Многие считают, что это оставляет лучшую оболочку для последнего, что было бы совершенно понятно. Zsh имеет сходство с bash и ksh и включает в себя многие функции, найденные в них, а также tcsh. Особенности Zsh:

  • Навигационный список автозаполнения
  • Улучшенная орфографическая коррекция
  • Завершение командной строки
  • История делится между терминалами
  • Globbing (подстановочные знаки для имен файлов)

Globbing в Zsh очень полезен. Typing:

VIM / U / L / B / A

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

sudo apt установить zsh zsh

Какой Linux Shell лучше для меня?

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

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

Когда вы остановитесь на оболочке Linux, убедитесь, что вы знакомы с основами сценариев оболочки.

Источник

Что такое командная оболочка (shell) в Linux?

Обновл. 27 Июл 2021 |

В этой статье мы разберемся, что такое shell и зачем это нужно, а также рассмотрим наиболее часто используемые командные оболочки в Linux и Unix.

Что такое shell?

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

Читайте также:  Windows не видит gpt разделов

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

Если пользователь не наделен особыми правами, то в качестве приглашения к вводу команд в терминале будет отображаться символ $ . Если же был выполнен вход под учетной записью привилегированного (root) пользователя, то в терминале вы увидите символ # :

Окно терминала обычного пользователя (виден символ $)

Окно терминала привилегированного (root) пользователя (виден символ #)

Примечание: Знак тильды (

) указывает на то, что мы находимся в домашнем каталоге текущего пользователя.

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

Ниже представлен пример выполнения простой команды date , возвращающей текущую дату и время:

Внутренние и внешние команды оболочки

Вводимые пользователем команды делятся на два типа:

Внутренние — это команды, изначально встроенные в оболочку.

Внешние — это команды, которые не встроены в оболочку. По своей сути они являются скорее небольшими отдельными программами, расположенными где-то в файловой системе (обычно, в каталогах /bin или /usr/bin).

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

Как вы можете видеть, команды dirs , pwd , cd и true — являются внутренними командами оболочки bash. А вот команды uname , id и whereis — являются внешними, т.к. они ссылаются на соответствующие файлы в каталоге /usr/bin.

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

Как узнать какая оболочка у меня установлена?

Если вы только начинаете свое знакомство с Linux и не меняли оболочку, то наиболее вероятно, что в вашей системе используется bash. Самый простой способ узнать, какая оболочка используется в данный момент — это обратиться к переменной окружения SHELL :

Кроме того, можно задействовать команду ps –p $$ , возвращающую информацию о процессе с заданным идентификатором. В нашем случае, идентификатором оболочки являются символы $$ :

Не трудно заметить, что в настоящее время используется оболочка bash. Для просмотра всех доступных оболочек в вашей системе, необходимо обратиться к содержимому файла /etc/shells:

Типы командных оболочек

В *nix-системах существует два основных типа оболочек: оболочки на основе Bourne shell и оболочки на основе C shell.

Типичными представителями оболочек типа Bourne shell являются:

sh (Bourne shell)

bash (Bourne Again shell)

К оболочкам типа C Shell относятся:

tcsh (TENEX/TOPS C shell)

Ниже представлены некоторые из самых распространенных шеллов, используемых в *nix-системах:

Примечание: Термин «*nix-системы» обозначает Unix-подобные операционные системы.

sh (Bourne shell)

sh (сокр. от «Bourne shell») — это самая старая (среди рассматриваемых) оболочка, написанная Стивеном Борном из AT&T Bell Labs для ОС UNIX v7. Оболочка доступна практически в любом *nix-дистрибутиве. Многие другие шеллы уходят своими корнями именно к sh. Благодаря своей скорости работы и компактности, данная оболочка является предпочтительным средством для написания shell-скриптов. К её недостаткам можно отнести отсутствие функций для использования оболочки в интерактивном режиме, а также отсутствие встроенной обработки арифметических и логических выражений.

Примечание: Стоит отметить, что из-за общего морального устаревания оболочки, в современных системах ссылка на шелл sh (/bin/sh), обычно, является псевдонимом для запуска текущей, более новой оболочки.

Читайте также:  Change windows key button

Характерные черты sh:

Полные пути к интерпретатору: /bin/sh и /sbin/sh.

Приглашение для обычного пользователя: $ .

Приглашение для суперпользователя (root): # .

bash (Bourne-Again shell)

bash (сокр. от «Bourne–Again shell») — это усовершенствованный и дополненный вариант шелла sh, является одной из самых популярных современных командных оболочек *nix-систем.

Объединяет в себе полезные фишки оболочек ksh и csh.

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

Характерные черты bash:

Полный путь к интерпретатору: /bin/bash.

Приглашение для обычного пользователя: имя_пользователя@имя_хоста:

— это домашний каталог текущего пользователя, например, mrsmith@mypc:

Приглашение для суперпользователя (root): root@имя_хоста:

ksh (Korn shell)

ksh (сокр. от «Korn shell») — это командная оболочка, разработанная Дэвидом Корном из AT&T Bell Labs в 1980-x годах.

Является расширением sh.

Имеет обратную совместимость с sh.

Имеет интерактивный функционал, сравнимый с csh.

Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений/функций, Си-подобный синтаксис скриптов и средства для работы со строками.

Работает быстрее, чем csh.

Может запускать скрипты, написанные для sh.

Характерные черты ksh:

Полный путь к интерпретатору: /bin/ksh.

Приглашение для обычного пользователя: $ .

Приглашение для суперпользователя (root): # .

csh (C shell)

csh (сокр. от «C shell») — это командная оболочка, созданная Биллом Джоем (автором редактора vi) с целью усовершенствования стандартного шелла Unix (sh).

Имеет встроенные функции для интерактивного использования, например, псевдонимы (aliases) и историю команд.

Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений и Cи-подобный синтаксис скриптов.

Характерные черты csh:

Полный путь к интерпретатору: /bin/csh.

Приглашение для обычного пользователя: % .

Приглашение для суперпользователя (root): # .

tcsh (TENEX C Shell)

tcsh (сокр. от «TENEX C shell») — это командная оболочка, созданная Кэном Гриром, которая позиционируется как улучшенная версия шелла csh.

Имеет полную совместимость csh.

Именно в данном шелле впервые появилась функция автодополнения команд и путей.

Удобна для интерактивной работы.

Поддерживает редактор командной строки в стиле vi или emacs.

Является стандартным шеллом во FreeBSD.

Характерные черты tcsh:

Полный путь к интерпретатору: /bin/tcsh.

Приглашение для обычного пользователя: имя_хоста:

Приглашение для суперпользователя (root): # .

zsh (Z Shell)

zsh (сокр. от «Z shell») — это командная оболочка, созданная Паулем Фалстадом во время его учебы в Принстонском университете, позиционируется как свободная современная sh-совместимая командная оболочка.

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

Встроенная поддержка программируемого автодополнения команд, имен файлов и пр.

Поддержка проверки орфографии и опечаток.

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

Характерные черты zsh:

Полный путь к интерпретатору: /bin/zsh.

Приглашение для обычного пользователя: имя_хоста% .

Приглашение для суперпользователя (root): root@имя_хоста:

Резюмируем

Краткая сводная таблица для 6 вышерассмотренных командных оболочек:

Командная оболочка Путь Приглашение (обычный пользователь) Приглашение (root)
sh (Bourne Shell) /bin/sh и /sbin/sh $ #
bash (Bourne-Again Shell) /bin/bash имя_пользователя@имя_хоста:

$ имя_пользователя@имя_хоста:

# ksh (Korn Shell) /bin/ksh $ # csh (C Shell) /bin/csh % # tcsh (TENEX C Shell) /bin/tcsh имя_хоста:

> # zsh (Z Shell) /bin/zsh % #

Примечание: Помимо представленных выше оболочек, есть еще и такие оболочки, как:

mksh — оболочка, основной упор в которой сделан на написание скриптов;

dash — более легковесная в сравнении с bash оболочка, но из-за этого обладающая ограниченной функциональностью;

fish — «новая» оболочка, написанная в 2005 году, отличительной чертой которой является упор на комфорт использования и упрощение командного языка;

Поделиться в социальных сетях:

Источник

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