Shell linux ��� �� �������

Command-line shell (Русский)

Кома́ндная оболо́чка UNIX (англ. Unix shell, часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства UNIX, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в Unix Version 7.

Список оболочек

  • Bash — (от англ. Bourne again shell, каламбур «Born again» shell — «возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.

Bash — это командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом (или сценарием). Как и все Unix-оболочки, он поддерживает автодополнение имён файлов и директорий, подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления и цикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из sh. Другие функции, например, история, были скопированы из csh и ksh. Bash в основном удовлетворяет стандарту POSIX, но с рядом расширений. Кроме того, большинство сценариев SH можно запустить в Bash без изменений.

https://www.gnu.org/software/bash/ || bash

  • C shell — C shell (csh) — командная оболочка UNIX со встроенным скриптовым языком, разработанная Биллом Джоем, активным разработчиком BSD UNIX и создателем редактора vi, в 1979 году.

Базировался на коде командного интерпретатора шестой версии UNIX. Скриптовый язык не уступает шеллу Борна по мощности, но отличается синтаксисом. В то время как Борн скопировал все основные операторы с языка Алгол 68, Билл Джой использовал в качестве макета язык Си, вероятно, руководствуясь своими предпочтениями и предпочтениями других пользователей BSD UNIX. В начале 1990-х C shell подвергся большой критике за свою двусмысленность и немногословность интерпретатора, останавливающего выполнение скрипта, но не сообщающего никаких подробностей о том, что же всё-таки произошло. Порой скрипты csh работали совсем не так, как этого ожидал пользователь. Также встречались ситуации, когда интерпретатор отбраковывал, казалось бы, непротиворечивые строки кода. C shell вошёл в поставку 4.1BSD и до сих пор остаётся базовой частью всех её потомков, в том числе FreeBSD и OpenBSD.

https://www.tcsh.org || tcsh

  • DASH — POSIX-совместимая реализация /bin/sh стремящаяся быть более компактной. Dash делает это без ущерба для быстродействия, где это возможно.

На самом деле, он значительно быстрее, чем Bash (the GNU Bourne-Again SHell) для большинства задач.

herbert/dash/ || dash

  • fish — Умная и удобная коммандная оболочка (развивающаяся как более дружественная к пользователю альтернатива bash и zsh). Fish делает полную цветную подсветку синтаксиса командной строки, а также подсветку завершения команд и их аргументов, существующих файлов, и истории. С автоматическим выявлением ошибок ввода, предложеним возможных вариантов ввода на основе истории прошлых операций, автодополнение ввода опций и команд с использованием их описания в man-руководствах, комфортнаю работу из коробки без необходимости дополнительной настройки, упрощённый язык написания сценариев, поддержку буфера обмена X11, удобные средства поиска в истории выполненных операций. Легкий просмотр последних команд может быть сделан с помощью Alt-Up. Демон Fish (fishd) облегчает синхронизирование истории во всех случаях использовнаия fish, а также универсальных и постоянных переменных сред.

https://fishshell.com/ || fish

  • Korn shell — Командная оболочка UNIX. Имеет полную обратную совместимость с Bourne shell и включает в себя возможности C shell. Язык KornShell представляет собой полный, мощный язык программирования высокого уровня, для написания приложений. Зачастую легче и быстрее, чем на других языках высокого уровня. Это делает его особенно подходящим для прототипирования. Ksh имеет лучшие черты оболочки Bourne и C, плюс множество самостоятельных возможностей. Таким образом Ksh может сделать многое, чтобы повысить производительность и качество вашей работы в взаимодействии с системой и в программировании. Ksh программы легче писать, они более кратки и читабельны, чем программы написанные на языке нижнего уровня, такого как C.
Читайте также:  Windows datacenter 64 bit server core

http://www.kornshell.com || Смотрите Ksh#Installation

  • Oh — Unix оболочка, написанная на Go. Это оболочка в духе Unix, но отличается различными деталями. Oh расширяет возможности языка программирования оболочки без ущерба интерактивных функций оболочки.

https://github.com/michaelmacinnis/oh || oh-gitAUR

  • rc — Командный интерпретатор для Plan 9, который предоставляет анологичные средства оболочки Bourne для UNIX. С небольшими дополнениями и менее своеобразным синтаксисом.

http://plan9.bell-labs.com/sys/doc/rc.html [устаревшая ссылка 2020-08-02] || 9base-gitAUR

  • Zsh — Оболочка предназначена для интерактивного использования, хотя это такойже мощный скриптовый язык. Многие из полезных особенностей Bash, Ksh и Tcsh были включены в Zsh; были добавлены многие оригинальные черты. Страничка вводный документ перечислены некоторые из уникальных особенностей Zsh

https://www.zsh.org/ || zsh

из Wikipedia Zsh Это одна из современных командных оболочек UNIX, может использоваться как интерактивная оболочка, либо как мощный скриптовой интерпретатор. Zsh является расширенным bourne shell с большим количеством улучшений. Первая версия zsh была написана Паулем Фалстадом (Paul Falstad) в 1990 году, когда он был студентом Принстонского университета. Название ZSH произошло от университетского ассистента по имени Чжун Шао (Zhong Shao). Пол подумал, что учётная запись Чжуна, «zsh», будет хорошим названием для командной оболочки[1]. Сейчас развивается энтузиастами, под руководством Петера Стефенсона (Peter Stephenson) в рамках свободного проекта. Некоторые полезные особенности:

  1. Программируемое автодополнение, которое помогает пользователям вводить как команды, так и их аргументы, со встроенной поддержкой нескольких сотен команд;
  2. Разделяет историю команд между всеми запущенными экземплярами оболочки;
  3. Расширенное дополнение названий файлов, что позволяет указать файл без необходимости запускать внешние программы, наподобие find;
  4. Расширенная поддержка переменных и массивов;
  5. Редактирование многострочных команд в едином буфере;
  6. Коррекция опечаток;
  7. Имеет различные режимы совместимости (то есть, вы можете использовать zsh вместо bourne shell при запуске, как /bin/sh);
  8. Модифицируемые приглашения (prompts), включающие возможность расположить приглашение справа и настроить автоскрытие при наборе длинных команд;

Выбор оболочки по умолчанию

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

Посмотрите все установленные оболочки:

И установить одну по умолчанию для вашего пользователя (убедитесь, что вы используете полный путь, какой выдала команда chsh -l ):

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

Источник

What is Linux Shell

Computers understand the language of zeros and ones known as binary language. In the early days of computing, instructions were provided using binary language, which is difficult for all of us to read and write. Therefore, in an operating system there is a special program called the shell. The shell accepts human readable commands and translates them into something the kernel can read and process.

Contents

What Is a Shell?

  • The shell is a user program or it is an environment provided for user interaction.
  • It is a command language interpreter that executes commands read from the standard input device such as keyboard or from a file.
  • The shell gets started when you log in or open a console (terminal).
  • Quick and dirty way to execute utilities.
  • The shell is not part of system kernel, but uses the system kernel to execute programs, create files etc.
  • Several shells are available for Linux including:
    • BASH ( Bourne-Again SHell ) — Most common shell in Linux. It’s Open Source.
    • CSH (C SHell) — The C shell’s syntax and usage are very similar to the C programming language.
    • KSH (Korn SHell) — Created by David Korn at AT & T Bell Labs. The Korn Shell also was the base for the POSIX Shell standard specifications.
    • TCSH — It is an enhanced but completely compatible version of the Berkeley UNIXC shell (CSH).
Читайте также:  Installer winsxs уменьшить windows 10

Please note that each shell does the same job, but each understands different command syntax and provides different built-in functions. Under MS-DOS, the shell name is COMMAND.COM which is also used for the same purpose, but it is by far not as powerful as our Linux Shells are!

Shell Prompt

There are various ways to get shell access:

  • Terminal — Linux desktop provide a GUI based login system. Once logged in you can gain access to a shell by running X Terminal (XTerm), Gnome Terminal (GTerm), or KDE Terminal (KTerm) application.
  • Connect via secure shell (SSH) — You will get a shell prompt as soon as you log in into remote server or workstation.
  • Use the console — A few Linux system also provides a text-based login system. Generally you get a shell prompt as soon as you log in to the system.

How do I find out my current shell name?

To find all of the available shells in your system, type the following command:

In case the /etc/shells file has more than one shell listed under it, then it means that more than one shell is supported by your platform.

Command Line Interface (CLI)

The shell provides an interface to Linux where you can type or enter commands using the keyboard. It is known as the command line interface (CLI). To find out your current shell type following command [1] .:

The following sample output indicate that I am using bash shell:

Basic Command Line Editing

You can use the following key combinations to edit and recall commands:

  • CTRL + L : Clear the screen.
  • CTRL + W : Delete the word starting at cursor.
  • CTRL + U : Clear the line i.e. Delete all words from command line.
  • Up and Down arrow keys : Recall commands (see command history).
  • Tab : Auto-complete files, directory, command names and much more.
  • CTRL + R : Search through previously used commands (see command history)
  • CTRL + C : Cancel currently running commands.
  • CTRL + T : Swap the last two characters before the cursor.
  • ESC + T : Swap the last two words before the cursor.
  • CTRL + H : Delete the letter starting at cursor.

Executing A Command

Type your command, and press enter key. Try this the date command which will display current date and time:

Command And File Completion

The Bash shell will auto complete file and command names, when possible and/or when you tell them to. For example, if you type sle and pressing Tab key will make the shell automatically complete your command name. Another example, if you type ls /e and pressing Tab key will make the shell automatically complete your word to /etc as it sees that /etc/ is a directory which starts with /e.

Источник

Что такое Shell

Если вы пользуетесь Linux, то рано или поздно, поиски решения какой-либо задачи приводили вас к терминалу. Это очень эффективное средство взаимодействия с операционной системой. Вы можете быстро выполнять нужные команды, получать результат и объединять несколько команд в цепочку. Один из самых основных компонентов терминала — это командная оболочка или Shell.

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

Что такое Shell

Shell или командная оболочка — это программа, которая организовывает среду для выполнения других программ и команд Командная оболочка имеет свои встроенные команды, арифметические операторы и другие синтаксические выражения, но основная её задача упрощать запуск других программ. Именно командная оболочка занимается поиском программ в текущем каталоге и в путях, указанных в переменной среды PATH, управляет сменой текущего каталога и переменными окружения. Таким образом, основная задача оболочки — интерпретировать команды пользователя и выполнять их не зависимо от того внешние ли это программы или внутренние команды.

Читайте также:  Автозапуск приложений windows 10 где находится

Чтобы понять с чем вы имеете дело, командой оболочки или внешней программой можно воспользоваться командой whereis. Например команда cd, это не программа, а встроенная команда оболочки, как и bg и fg:

А вот команда ls — уже внешняя программа, исполняемый файл которой расположен в файловой системе.

Командная оболочка — это традиционный способ ввода данных в Unix подобных операционных системах. Командные оболочки появились почти сразу же после появления Unix и привычных нам интерфейсов взаимодействия с компьютером. Первой командной оболочкой была Thompson Shell, разработанная Кеном Томсоном в Bell Labs в 1971 году. Уже тогда поддерживалось перенаправление ввода-вывода команд с помощью туннелей, а также поддерживались простые условные операторы.

Циклы while в командных оболочках появились чуть позже, в оболочке PWB Shell, разработанной Джоном Машеу на основе Thompson Shell. Но современный вид командная оболочка приобрела только с выходом оболочки Борна (Bourne Shell) в 1979 году. В ней было уже автодополнение имен файлов и команд, стандартные переменные окружения и привычные управляющие структуры. Исполняемый файл этой оболочки имел такой путь в системе — /bin/sh. В современных системах это обычно ссылка на используемую оболочку.

Именно вдохновляясь идеями этой оболочки потом была разработана оболочка Bash (Bourne Again Shell) используемая сейчас по умолчанию в большинстве дистрибутивов Linux. Она уже была разработана Браеном Фоксом в рамках проекта GNU в 1989 году. С тех пор прошло много времени и эта оболочка сильно устарела. Поэтому были разработаны и другие более современные командные оболочки, такие как ZSH и Fish.

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

Поддерживается автодополнение для параметров команд, например, для git можно вывести доступные команды вместе со справкой:

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

Ещё более современная оболочка fish (Friendly Interactive Shell), появившаяся в 2005 году. Она поддерживает все стандартные возможности командной оболочки, но кроме того имеет удобную подсветку синтаксиса команд во время введения, удобный поиск команд, как Ctrl+R только по умолчанию, но самое удобное здесь это скрипты. Они намного проще для начинающих пользователей.

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

Ещё один способ узнать текущую оболочку — воспользоваться командной ps. Если ей передать опцию -p и идентификатор процесса, то она покажет информацию о нём. Вывести идентификатор процесса текущей оболочки можно с помощью символов $$. Поэтому выполните:

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

Все эти оболочки можно использовать выполнения команд от пользователей. Оболочка настраивается в файле /etc/passwd, для каждого пользователя отдельно. Поэтому посмотреть какая оболочка настроена для того или иного пользователя можно в этом файле. Например, для текущего пользователя команда будет выглядеть так:

grep «^$USER» /etc/passwd | awk -F: ‘< print $7>‘

Выводы

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

Источник

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