Fish — интерактивная и дружественная оболочка для linux

Fish — дружелюбная интерактивная командная оболочка

Fish (от англ. friendly interactive shell) относительно новая командная оболочка для Unix-подобных операционных систем. К её отличительным качествам можно отнести подсветку синтаксиса и продвинутое автодополнение.

Синтаксис языка проще чем Bash, поддерживает 256 цветов и имеет автоматическую генерацию страниц помощи.
Командная оболочка fish подойдёт для тех пользователей, кто часто пользуется терминалом в системах Linux.
Некоторые особенности Fish: Интерактивный режим работы и дружественность пользователю.

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

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

История команд: Достаточно открыть окно оболочки fish и перемещаться посредством клавиши с стрелкой вверх по выполненным ранее командам, для поиска нужной.

Установка Fish в Ubuntu и производные

Fish есть в репозиториях большинства дистрибутивов Ubuntu и производных, но там версия 2.0.0. Чтобы установить версию 2.1.1, необходимо подключить репозиторий.

Откройте терминал, скопируйте и выполните следующие команды:

sudo apt-add-repository ppa:fish-shell/release-2 sudo apt-get update

sudo apt-get install fish

Оболочка Fish запускается из обычного системного терминала командой

fish

Но срок действия данной оболочки до закрытия окна терминала.

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

В окне Изменения профиля, вкладка Команда, активируйте пункт Запускать команду вместо моей оболочки и в поле Другая команда введите fish.
Теперь при открытии окна терминала будет использоваться командная оболочка fish.

Выполните команду help в оболочке fish чтобы ознакомиться с инструкциями к командной оболочке Fish, которые откроются в браузере.

Примечание. В окружении XFCE, в командной строке xfce4-terminal нет встраиваемой команды для постоянной работы в командной оболочке fish.
Если вы пользователь оболочки XFCE, откройте скрытый файл .bashrc в Домашней папке на редактирование. Когда откроется пустой файл .bashrc, введите fish, сохраните файл и закройте редактор.
После этого xfce4-terminal будет постоянно окрываться в командной оболочке fish.
Если вы дополнительно используете выпадающий терминал в окружении XFCE, то и он будет отображаться и работать в командной оболочке fish.Чтобы вновь вернуться к системной командной строке по умолчанию, отмените сделанные изменения.

Домашняя страница fishshell

Источник: http://compizomania.blogspot.com/2015/07/fish.html

Рыба — Смарт и Дружественный Интерактивная Shell для Linux

/fish-a-smart-and-user-friendly-interactive-shell-for-linux.html

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

Рыба предназначена для работы с любой другой оболочкой, как Баш или ЗШ.

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

Особенности

  • Это удобный и интерактивная оболочка
  • Она имеет так много мощных функций,
  • Встроено конфигурации веб-интерфейс
  • Она поддерживает Glorious VGA Color и 256 терминалов цветов
  • X Буфер обмена поддерживается
  • Возможности проверки ошибок
  • Справка команду для просмотра FISH документации
  • Выберите предложения, используя клавиши со стрелками

Установка FISH

Для установки рыбы, он должен требовать Свойства программного обеспечения Python, используйте следующую команду для установки Python —

$ Sudo APT-получить установку на Python программно-свойства

Пример вывода должен быть таким —

Чтение списков пакетов … Готово дерева зависимостей здания Чтение информации о состоянии … Готово Будут установлены следующие дополнительные пакеты: питон-pycurl Предлагаемые пакеты: libcurl4-GnuTLS-DEV питон-pycurl-DBG Будут установлены следующие НОВЫЕ пакеты: Python-pycurl питон-софт-свойства Обновлено 0, 2 установлено новых, 0 для удаления и 7 не обновлено. Необходимо получить 67,5 кБ архивов. После этой операции будет использоваться 358 кБ дополнительного дискового пространства. Вы хотите продолжить? [Y / N] у Получить: 1 http://in.archive.ubuntu.com/ubuntu/ испытанный / главный питон-pycurl amd64 7.19.3-0ubuntu3 [47.9 кБ] Получить: 2 http://in.archive.ubuntu.com/ubuntu/ испытанные-обновления / вселенские питон-софт-свойства всех 0.92.37.7 [19.6 кБ] Извлечена 67.5 кБ в 1s (45,9 Кбит / с) Выбор ранее невыбранный пакет Питона-pycurl. (Чтение базы данных … В настоящее время установлено 218616 файлов и каталогов.) Подготовка к распаковке … / питон-pycurl_7.19.3-0ubuntu3_amd64.deb … Распаковка питон-pycurl (7.19.3-0ubuntu3) … ………………………………………….. ..

Теперь, мы должны называть хранилище рыбы , как показано ценам ниже

$ Sudo добавить-apt-репозиторий PPA: рыба-оболочки / ночные-мастер

Вывод должен быть, как это —

Это хранилище содержит регулярные сборки самого последнего источника моллюсках, построенный из главного ствола Git на https://github.com/fish-shell/fish-shell/. Более подробную информацию: https://launchpad.net/~fish-shell/+archive/ubuntu/nightly-master Нажмите [ENTER], чтобы продолжить или Ctrl-C, чтобы отменить добавление его GPG: `/tmp/tmpzn3dsxqj/secring.gpg брелок 'создано GPG: `/tmp/tmpzn3dsxqj/pubring.gpg брелок 'создано GPG: запрос ключа 6DC33CA5 от HKp сервера keyserver.ubuntu.com GPG: /tmp/tmpzn3dsxqj/trustdb.gpg: создано базы данных доверия GPG: ключ 6DC33CA5: открытый ключ «Launchpad PPA для сопровождающими ракообразные» импортированы GPG: Всего обработано: 1 GPG: импортировано: 1 (RSA: 1) ОК

Обновление Linux пакеты с помощью следующей команды —

$ Sudo обновление APT-Get

Для установки рыбы, используйте следующую команду —

$ Sudo APT-получить установку рыбы

Вывод должен быть, как это —

Чтение списков пакетов … Готово дерева зависимостей здания Чтение информации о состоянии … Готово Следующие пакеты были установлены автоматически и не больше не требуются: Linux-Headers-4.2.0-27 Linux-Headers-4.2.0-27-родовой Linux-образ-4.2.0-27-родовой Linux-образ-экстра-4.2.0-27-родовой Linux-знаково-образ-4.2.0-27-родовой Используйте 'APT-получить autoremove', чтобы удалить их. Будут установлены следующие дополнительные пакеты: xsel Будут установлены следующие НОВЫЕ пакеты: рыба xsel Обновлено 0, 2 установлено новых, 0 для удаления, и 0 пакетов не обновлено. Необходимо получить 1187 кбайт архивов. После этой операции будет использоваться 6,568 кБ дополнительного дискового пространства. Вы хотите продолжить? [Y / N] у Получить: 1 http://ppa.launchpad.net/fish-shell/nightly-master/ubuntu/ испытанный / главная рыба amd64 2.2.0-680-ga701264-1 ~ испытанный [1166 кБ] Получить: 2 http://in.archive.ubuntu.com/ubuntu/ испытанный / Вселенная xsel amd64 1.2.0-2 [20.6 кБ] Извлечена 1187 кБ в 4s (284 Кб / с) ……………………………

Использование моллюсках

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

$ рыба

Пример вывода должен быть таким —

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

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

$ Эхо $ FISH_VERSION

Пример вывода должен быть таким —

2.2.0-680-ga701264

Чтобы получить автоматическое предложение, просто написать «Да», он покажет авто предложения, как показано ценам ниже

$ Да те

Вывод должен быть, как это —

Вт 15 марта 11:29:50 IST 2016

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

$ помощь

Пример вывода должен быть таким —

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

$ Эхо «Я люблю tutorialspoint»

Вывод должен быть, как это —

Я люблю tutorialspoint

Для того, чтобы рыбу в качестве defult оболочки, используйте следующую команду —

$ CHSH -s / USR / бен / рыба

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

$ CHSH -s / bin / баш

Поздравления! Теперь вы знаете, «Как использовать Fish — умный и удобном для пользователя интерактивной оболочки для Linux». Мы узнаем больше об этих типах команд в нашем следующем посте Linux. Продолжай читать!

Источник: http://ru.affdu.com/fish-a-smart-and-user-friendly-interactive-shell-for-linux.html

Fish — дружелюбная интерактивная командная оболочка

Fish (от англ. friendly interactive shell) относительно новая командная оболочка для Unix-подобных операционных систем. К её отличительным качествам можно отнести подсветку синтаксиса и продвинутое автодополнение.

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

Некоторые особенности Fish:

Интерактивный режим работы и дружественность пользователю. Это можно видеть из приветствия при входе в оболочку.

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

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

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

История команд: Достаточно открыть окно оболочки fish и перемещаться посредством клавиши с стрелкой вверх по выполненным ранее командам, для поиска нужной.

Установка Fish в Ubuntu и производные

Fish есть в репозиториях большинства дистрибутивов Ubuntu и производных, но там версия 2.0.0. Чтобы установитьверсию 2.1.1, необходимо подключить репозиторий.

Откройте терминал, скопируйте и выполните следующие команды:

sudo apt-add-repository ppa:fish-shell/release-2sudo apt-get update

sudo apt-get install fish

Оболочка Fish запускается из обычного системного терминала командой

fish

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

В окне Изменения профиля, вкладка Команда, активируйте пункт Запускать команду вместо моей оболочки и в полеДругая команда введите fish.

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

Выполните команду help в оболочке fish чтобы ознакомиться с инструкциями к командной оболочке Fish, которые откроются в браузере.

Чтобы вновь вернуться к системной командной строке, отмените в Параметры профиля сделанные изменения.

Домашняя страница fishshell

Источник: http://xpressdnepr.blogspot.com/2015/07/fish.html

Ура, fish!

Использование UNIX

Дружественный Интерактивный Командный Интерпретатор (Friendly Interactive Shell, fish) прекрасно подходит как для новичков, так и для экспертов.

Мартин Стрейчер (Martin Streicher)
Опубликовано 27.08.2010Следите за выходом новых статей этой серии.

Следите за выходом новых статей этой серии.

Английский — это язык, способный привести в недоумение. Рассмотрим, например, слова moon и good. Для непосвященного слова должны рифмоваться, но первое из них произносится /mun/ (в соответствии с Международным фонетическим алфавитом), а второй /good/. Очевидно, что единственным правилом в английском языке является исключение.

Командные интерпретаторы UNIX так же сложны. Например, в командном интерпретаторе Борна – Bourne shell – (и в большинстве командных интерпретаторов UNIX) фразы '$var', «$var», и `$var` выглядят одинаково, но производят к совершенно разным результатам. (Каждый CLI, показанный в примерах в этой статье, предваряется названием действующего командного интерпретатора и номером команды.)

bash-1) # выявляем разницу между одинарными, двойными и обратными кавычками
bash-2) var=ls
bash-3) echo '$var'
$var
bash-4) echo «$var» ls
bash-5) echo `$var`
Rakefile app bin components config db doc lib log patches public script src test tmp vendor

В этой последовательности команд переменной var присвоено строковое значение из двух символов ls. В начальной команде echo апострофы предотвращают интерпретацию переменной, вместо этого выдавая точную копию текста, заключенного в апострофы, то есть строку, состоящую из четырех символов $var.

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

Таким образом, `$var` возвращает промежуточный результат — строку ls, которая выполняется как команда интерпретатора для получения содержимого локальной директории.

Конечно, все три оператора — одиночные, двойные и обратные кавычки — служат правильной цели, но, как и в случае исключений в английском языке, их запоминание и овладение вариантами может свести с ума. Вот еще доказательство: какая разница между $var и «$var»? (Подсказка: предположим, что значение $var содержит пробел.)

bash-1) # создайте три файла и попробуйте удалить два
bash-2) touch three two one
bash-3) var=»one two»
bash-4) rm «$var»
rm: one two: No such file or directory
bash-5) rm $var
bash-6) ls
three

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

Да уж действительно! Синтаксис командного интерпретатора может сводить с ума. И это очень печально, так как в итоге интерфейс командной строки — одна из самых мощных возможностей UNIX — становится очень сложным для изучения. В действительности, противоречия, описанные выше, нервируют даже закаленных ветеранов.

К счастью, fish (Friendly Interactive Shell, Дружественный Интерактивный Командный Интерпретатор) плывет, преодолевая мутное течение и обеспечивая стройный синтаксис и улучшенное восприятие для пользователя.

Читайте также:  Релиз qmmp 1.1.8/0.10.8 для ubuntu/linux mint и подобных

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

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

Кроме того, fish разумно обеспечивает только один способ выполнения задачи. Если какая-то утилита UNIX выполняет отдельную задачу, то fish не повторяет эту возможность как встроенную команду. Например, для завершения процессов fish использует системную утилиту /bin/kill.

(Для сравнения, bourne shell реализует свою версию утилиты kill в виде встроенного приложения. Чтобы его использовать, нужно ввести /bin/kill в командной строке bash.) Везде, где это возможно, fish предпочитает простоту гибкости, делая использование более предсказуемым.

Давайте установим эту программу, закинем удочку и опробуем некоторые из многочисленных возможностей fish.

Ловим рыбу

Fish— это проект с открытым исходным кодом, созданный Акселем Лиленкранцем (Axel Liljencrantz), на который распространяется лицензия GNU General Public License, версии 2. На момент написания статьи самой свежей версией является fish 1.23.0, выпущенная 13 января 2008.

Если вы используете UNIX или UNIX-подобную систему, такую, как Linux® или Mac OS X, то в вашей системе fish должен собраться из исходного кода быстро и просто. Необходимые для этого шаги (см. Листинг 1:

  1. Скачайте самый свежий архив tar с исходным кодом программы.
  2. Распакуйте его.
  3. Перейдите в директорию с исходным кодом.
  4. Настройте сборку.
  5. Запустите make.

Сборка fish из исходных кодов

bash-1) wget http://www.fishshell.org/files/1.23.0/fish-1.23.0.tar.gz
bash-2) tar xzvf fish-1.23.0.tar.gz
bash-3) cd fish-1.23.0
bash-4) ./configure —without-xsel
checking if autoconf needs to be run… no
checking if autoheader needs to be run… no
checking for /usr/pkg/include include directory… no

bash-5) make
gcc -c -o function.

o function.c

bash-6) sudo make install

To use fish as your login shell:
* add the line '/usr/bin/fish' to the file '/etc/shells'.
* use the command 'chsh -s /usr/bin/fish'.

Если вы используете UNIX-подобную систему, то скрипт configure не требует обязательных дополнительных параметров.

Тем не менее, чтобы сократить зависимости и разместить fish в тех же директориях, что и обычные командные интерпретаторы, вы можете добавить опции —without-xsel и —prefix=/usr, соответственно. (В Mac OS X версии 10.4 Leopard, также нужно добавить флаг LDFLAGS=-liconv.

Если опустить эту опцию в Mac OS X, то служебные утилиты fish не будут собраны из-за ошибки.)

Если вы используете популярный вариант UNIX, то скорей всего сможете найти уже собранные двоичные файлы, готовые к установке на ваш дистрибутив. Например, если вы используете Debian Linux, вы можете тотчас установить fish по команде sudo apt-get install fish. Проверьте на домашней странице проекта доступность fish для вашей системы.

Учимся на примерах

Перед погружением в более сложные темы, давайте взглянем, как обычные задачи командного интерпретатора решаются в fish:

  • Чтобы перенаправить стандартный ввод и стандартный вывод, используются операторы соответственно. Чтобы перенаправить стандартный вывод ошибок, используется символ карет (^), как показано на рисунке 1. Чтобы дописать стандартный вывод ошибок к файлу, используется ^^.Кликните, чтобы увидеть увеличенное изображениеВ команде 3 сообщения об ошибках, выведенные командой rm, помещаются в файл с именем errors. Команда 4 отображает содержимое этого файла. Командный интерпретатор fish имеет отличную поддержку перенаправления, например, для объединения дескрипторов в один поток и для закрытия дескрипторов.Кстати, цветной и подчеркнутый текст — это не типографская правка. Командный интерпретатор подсвечивает текст в интерфейсе командной строки по мере ввода. В строке зеленый цвет показывает, что имя команды введено правильно; неправильное имя команды окрашивается красным. Подчеркивание — это подсказка, говорящая, что заданный файл существует. (В следующем разделе ответные реакции оболочки описаны более подробно.)
  • Чтобы запустить подоболочку (новый интерпретатор), используйте скобки (()), , как показано на рисунке 2. Текст, заключенный в скобки, интерпретируется как список команд и заменяется результатом их исполнения.Кликните, чтобы увидеть увеличенное изображение
  • Чтобы создать псевдоним или быстрый вызов, создайте функцию fish.Функция может содержать одну или более команд и специальную переменную $argv, автоматически расширяемую в список аргументов, переданных в изначальной командной строке.Список всех определенных функций можно вывести командой functions. Чтобы стереть функцию, используйте functions —erase имя, как в functions —erase ll.Также возможно немедленно сохранить любую функцию, написанную в командной строке. Написав код, введите funcsave имя, как funcsave ll. Эта функция немедленно станет доступной для всех работающих в настоящий момент командных интерпретаторов и для тех, что будут запущены в будущем. Команда funced имя изменяет существующую функцию в интерактивном режиме. Команда funced обеспечивает полную подсветку синтаксиса, автодополнение по клавише Tab и автоматическую расстановку отступов; funcsave и funced упрощают настройку командного интерпретатора.
  • Чтобы задать переменную, введите set переменная имязначение. Как и для встроенной переменной functions bвведите set —erase переменная имя, чтобы удалить значение переменной или удалить переменную. Чтобы получить значение переменной, введите знак ($) и последующее имя переменной, как показано на рисунке 3.Кликните, чтобы увидеть увеличенное изображениеfish предоставляет разумную опцию —query для проверки того, определена ли переменная. Если да, то set —query возвращает код 0, показывающий что ошибок не произошло; иначе — возвращается 1. Оператор 6 объединяет две команды оператором or: вторая команда (echo) выполняется, только если первая завершится с ошибкой.

Так как же fish обрабатывает все эти вселяющие ужас $var, '$var', «$var» и `$var`? Как и ожидалось, работают следующие простые правила:

  • Если значение переменной содержит пробел, то пробел всегда сохраняется и переменная всегда вычисляется в один аргумент (см. рисунок 4.Кликните, чтобы увидеть увеличенное изображение
  • Если двойные кавычки являются наружными, то все переменные раскрываются.
  • Если одиночные кавычки являются наружными, то переменные не раскрываются.

Давайте рассмотрим эти правила на практике.

Команда 1 создает четыре файла, где последний файл содержит пробел в имени. Команды 3 и 4 удаляют файл, имя которого содержится в переменной file.

Команды 6 и 7 удаляют два файла, имена которых содержатся в переменной twofilesРассмотрим подробнее команду 6: поскольку значение не помещено в кавычки (ни одиночные, ни двойные), то пробел не защищен.

Отсюда, команда 7 раскрывается на два аргумента и удаляет оба файла. Команды 9 и 10 повторяют сценарий команд 6 и 7.

Команды 11 и 12 демонстрируют правило пробела. Хотя в команде 12 переменная не заключена в двойные кавычки, fish сохраняет пробел, установленный в команде 11. Очень хорошо.

Команды с 14 по 16 демонстрируют правила fish, касающиеся вложенных кавычек. Снова взглянем на команды 11, 15 и 16.

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

Последняя команда подчеркнула имя файла, показывая, что файл существует. Отсутствие подчеркивания в команде 9 — это серьёзный намёк на то, что вы сделали что-то не так.

Дружественность— второе имя fish.

Отличная функция для сухопутных крыс

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

Если вы не уверены в имени команды, то нажимайте клавишу Tab после того, как введете несколько символов, чтобы увидеть список возможных вариантов (см. рисунок 5). (Список в вашей системе может отличаться от списка, показанного здесь. Список зависит одновременно от значения переменной PATH и состава вашего UNIX.)

Рисунок 5 Нажмите Tab чтобы дополнить имя команды

Кликните, чтобы увидеть увеличенное изображение

Обратите внимание на красный текст в интерфейсе командной строки. Если fish не распознает имя команды, то отображает его красным.

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

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

Если вы хотите знать, какие опции доступны для команды, то нажмите Tab после тире (-) или двойного тире (—), как показано на рисунке 6.

Рисунок 6 Для дополнения опции также можно нажать Tab

Кликните, чтобы увидеть увеличенное изображение

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

После ввода нескольких начальных букв опции также можно нажать Tab, что показано на рисунке 7. Командный интерпретатор покажет все возможные сочетания.

Рисунок 7 Также можно ввести только часть опции

Кликните, чтобы увидеть увеличенное изображение

Если вы не знаете, каким видом операндов оперирует команда, fish может помочь во многих случаях, но не во всех.

Например, если ввести set (или vared, редактор переменных fish), пробел, и затем нажать Tab, то fish предоставит список доступных переменных. Аргумент является операндом для set.

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

В целом все встроенные утилиты и функции, включенные в fish, имеют контекстно-зависимое завершение операндов. Попробуйте, например, команду cd, как показано на рисунке 8.

Рисунок 8 Многие команды являются контекстно-зависимыми и представляют соответствующие аргументы

Кликните, чтобы увидеть увеличенное изображение

Функция cd— это функция fish, которая знает, что ее операнд — это существующая директория. Если после ввода cd нажать Tab, то fish покажет все существующие поддиректории, располагающиеся в каждой директории, указанной в переменной CDPATH.

Ещё одно «умное» дополнение связано с ssh. Введите ssh с последующим пробелом, и затем нажмите Tab, чтобы увидеть список всех известных имен хостов, которые будут взяты из файла известных хостов вашего Secure Shell (обычно находящегося в ~/.ssh/known_hosts):

fish-1) ssh
login.example.com (Hostname)
host1.example.com (Hostname)

fish также дополняет имена файлов и имена директорий. Опять же, по мере ввода имён, составляющих путь, выделяются правильные элементы.

Одно значительное отличие между fish и другими командными интерпретаторами состоит в отсутствии коротких вызовов в истории команд, таких как !, !! и !$.

Ловись, рыбка!

Если вам нравится fish и вы хотите использовать его в качестве исходной оболочки, добавьте путь к fish в официальный список командных интерпретаторов, /etc/shells, и запустите команду chsh:

bash-1) type fish
fish is /usr/bin/fish
bash-2) sudo vi /etc/shells
bash-3) cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/bin/fish
bash-4) chsh -s /usr/bin/fish
Changing shell for strike
Password: ********
bash-5) login strike
Password: ********
Last login: Wed Oct 8 15:02:21 on ttys000
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
fish-1) echo $SHELL
/usr/bin/fish

В fish. есть множество функций, которые можно узнать и оценить. Осмелюсь ли я сказать, что «в fish много C»?

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

А самое замечательное — огромное количество документации, полностью доступной из самого fish. Если вам нужна помощь, то просто напечатайте help в любой командной строке.

Доктора правы: fish очень полезен!

Ресурсы для скачивания

Источник: https://www.ibm.com/developerworks/ru/library/au-spunix_fish/

Как переключиться с Bash на Fish Shell на Linux

sudo apt install fish

Debian

sudo apt-get install fish

Arch Linux

sudo pacman -S fish

Fedora

sudo dnf install fish

OpenSUSE

sudo zypper install fish

Другие Linux

Fish Shell существует давно, несмотря на то, что она довольно современна. Из-за своего возраста довольно легко получить её практически для любого дистрибутива Linux. Чтобы установить её, откройте терминал и проверьте свой менеджер пакетов на «Fish » или «Fish Shell». Кроме того, ознакомьтесь с официальной страницей Github.

Читайте также:  Установить xfce в ubuntu 16.04/16.10

Переключить Bash на Fish Shell

Использование Fish в качестве основной оболочки может занять некоторое время, поскольку оно сильно отличается от Bash. В отличие от многих других альтернатив (например, Zsh, Ksh и т. д.), Fish не использует систему Bash в качестве базы.

Поскольку у Fish есть этот дизайн, некоторые команды могут отказаться от работы из-за другого синтаксиса, и вам, вероятно, придется изменить некоторые привычки при использовании терминала.

К счастью для вас, есть отличная страница, в которой описываются все тонкости Fish Shell. Он описывает Синтаксис 

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

После того, как вы посмотрите на шпаргалку, безопасно откройте терминал и измените оболочку вашего пользователя по умолчанию от Bash до Fish Shell. В терминале запустите команду chsh. Однако не запускайте её с помощью sudo, иначе вы можете обменять оболочку корневого пользователя на Fish, а не на свою собственную.

chsh -s /usr/bin/fish

Запуск команды chsh назначит вашему пользователю новую оболочку. Чтобы получить мгновенный доступ к Fish с вашим пользователем, напишите Fish в терминал. В противном случае перезагрузите ПК с Linux, чтобы завершить работу коммутатора. После перезагрузки войдите в систему и снова откройте терминал. Если все пойдет правильно, Fish станет новым дефолтом, и вас встретит Fish Shell, а не Bash.

Настройка Fish

Хотя вы перешли на Fish Shell, он не полностью готов к использованию. Следующий шаг — настроить его. В терминале создайте новую папку конфигурации.

mkdir -p ~ /.config/fish

Затем создайте новый файл конфигурации внутри новой папки конфигурации Fish:

touch ~ /.config/fish/config.fish

Использование touch создает пустой конфигурационный файл Fish Shell, в котором ничего нет. На этом этапе безопасно добавлять в оболочку любые пользовательские конфигурации. Для большинства пользователей единственной необходимой модификацией является необходимость постоянного отключения приветственного сообщения. Добавьте изменения в конфигурацию Fish, выполнив следующую команду:

echo 'set fish_greeting «»' >> ~/.config/fish/config.fish

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

cp ~/.config/fish/config.fish ~/Documents/

Чтобы восстановить конфигурацию, переместите файл на новый компьютер, поместите его в папку «Документы» и запустите:

mkdir -p ~/.config/fishcp 

~/Documents/config.fish ~/.config/fish/config.fish

Настройка


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

fish_configЗапуск этой команды автоматически откроет новую вкладку в вашем веб-браузере, так как это возможные аспекты Fish.

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

Источник: http://www.technodor.info/2018/06/bash-fish-shell-linux.html

Аналоги и похожие программы для замены fish

  • Bash — это интерпретатор командной строки или интерпретатор команд, который будет отображаться в операционной системе GNU. Bash — это sh-совместимая оболочка, которая включает полезные функции из оболочки Korn (ksh) и оболочки C (csh). Он предназначен для соответствия стандарту IEEE POSIX P1003.2 / ISO 9945.2 Shell и Tools. Он предлагает функциональные улучшения по сравнению с программированием и интерактивным использованиемИнтерфейс командной строки  
  • Zsh — интерпретатор командной строки UNIX (shell), который из стандартных оболочек больше всего похож на оболочку Korn (ksh); его совместимость с оболочкой Korn 1988 года постепенно возрастала. Он включает в себя усовершенствования многих типов, в частности, в редакторе командной строки, параметры настройки его поведения, флешинг имен файлов, функции, позволяющие пользователям C-shell (csh) чувствовать себя как дома, и дополнительные функции, созданные из tcsh (другой «пользовательской» оболочки )Интерфейс командной строки  
  • Язык KornShell был разработан и разработан Дэвидом Г. Корном в AT & T Bell Laboratories. Это интерактивный командный язык, который обеспечивает доступ к системе UNIX и ко многим другим системам на многих компьютерах и рабочих станциях, на которых он реализован. Язык KornShell также является полным, мощным, высокоуровневым языком программирования для написания приложений, часто более легко и быстро, чем с другими языками высокого уровняИнтерфейс командной строки  
  • DASH — это POSIX-совместимая реализация / bin / sh, которая должна быть как можно меньше. Он делает это, не жертвуя скоростью, где это возможно. Фактически, это значительно быстрее, чем bash (GNU Bourne-Again SHell) для большинства задач. DASH означает Debian Almquist Shell.Интерфейс командной строки  
  • Xiki делает командную строку более дружественной и мощной. Xiki Shell (xsh) позволяет использовать Xiki из командной строки таким образом, чтобы увеличить текущую любимую оболочку (bash или zsh).Интерфейс командной строки  
  • Это повторная реализация для Unix, Byron Rakitzis, оболочки Plan 9. rc предлагает те же возможности, что и традиционная оболочка Bourne, но с гораздо более сильным синтаксисом.Интерфейс командной строки  
  • Xonsh — это кросс-платформенный, основанный на Python язык командной оболочки и командная строка. Язык — это надмножество Python 3.4+ с дополнительными примитивами оболочки, к которым вы привыкли, от Bash и IPython. Он работает на всех основных системах, включая Linux, Mac OSX и Windows. Xonsh предназначен для ежедневного использования экспертов и новичковНе требует инсталяции  Поддержка скриптов  

Источник: https://RuProgi.ru/software/fish

Оболочки (командные интерпретаторы)

Argbash — это генератор кода, который поможет вам в написании скриптов, которые воспринимают аргументы.

  • отзывы (0)
  • оценка: 0
  • подробнее »

Оболочка Альмквиста (известная также как A Shell или ash) — быстрый, компактный, POSIX-совместимый командный интерпретатор Unix, разработанный в качестве смены для оболочки Борна в поздних версиях BSD.

  • отзывы (0)
  • оценка: 0
  • подробнее »

bashstyle-ng — это графическая утилита для настройки внешнего вида командной строки.

  • отзывы (0)
  • оценка: 0
  • подробнее »

Busybox — набор UNIX-утилит командной строки и статически слинкованый полноценный shell (Busybox-static), который включает в себя весь набор утилит, доступных в BusyBox. Этот пакет может использовать в качестве консоли восстановления, в случае если вы повредили систему.

  • отзывы (0)
  • оценка: 0
  • подробнее »

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

  • отзывы (0)
  • оценка: 0
  • подробнее »

dash: Debian Almquist Shell (dash) — POSIX-совместимый командный интерпретатор Unix гораздо меньшего размера, чем bash.

  • отзывы (0)
  • оценка: 0
  • подробнее »

Elvish — дружественная оболочка (интерпретатор команд) для Linux, macOS и BSD.

  • отзывы (0)
  • оценка: 0
  • подробнее »

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

  • отзывы (0)
  • оценка: 0
  • подробнее »

Утилита для организации параллельного запуска заданий (локально или используя удаленный компьютер).

  • отзывы (0)
  • оценка: 0
  • подробнее »

Korn shell (ksh) — командная оболочка UNIX, разработана Дэвидом Корном (AT&T) в 1980-x годах. Имеет полную обратную совместимость с Bourne shell и включает в себя возможности C shell.

  • отзывы (0)
  • оценка: 0
  • подробнее »

Limited shell (lshell) позволяет ограничить права пользователя при работе с консолью, например уменьшить набор доступных команд, отключить или включить любую команду через SSH (например SCP, SFTP,

  • отзывы (0)
  • оценка: 0
  • подробнее »

MirBSD Korn Shell (mksh) — активно разрабатываемый проект, цель которого — предоставить хорошую командную оболочку для интерактивного использования, но с основным упором на написание скриптов.

  • отзывы (0)
  • оценка: 0
  • подробнее »

sash служит как интерактивная замена /bin/sh, для использования в тех случаях, когда /bin/sh недоступна. Она скомпилирована статически и содержит многие стандартные утилиты как встроенные.

  • отзывы (0)
  • оценка: 0
  • подробнее »

TENEX C Shell или tcsh — одна из командных оболочек UNIX, созданная Кэном Григом. Tcsh является расширенной, но полностью совместимой версией оболочки Berkeley Unix C (csh).

  • отзывы (0)
  • оценка: 0
  • подробнее »

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

  • отзывы (0)
  • оценка: 0
  • подробнее »

Z shell, zsh — одна из современных командных оболочек UNIX, может использоваться как интерактивная оболочка, либо как мощный скриптовой интерпретатор.

  • отзывы (0)
  • оценка: 0
  • подробнее »

Источник: http://LinSoft.info/soft/category/12

Обзор Friendly interactive shell (fish) и почему она лучше bash

Недавно админ в компании, в которой я работаю, посоветовал попробовать заменить стандартный bash на zsh или fish. Я начал искать информацию по обоим оболочкам, перед тем как попробовать их.

Тут следует пояснить, почему мне не нравится bash. Основное неудобство для меня — это bash script. Когда надо что-то простенькое реализовать, то синтаксис довольно понятен. Но как только тебе надо сделать какую-то сложную логику (хотя бы несколько команд подряд), становится очень сложно разобраться в коде, особенно когда смотришь чужой скрипт.

Следующее, что меня расстраивало — это сложности в автокомплите и поиске команд. Конечно, спасало сочетание Ctrl + r, но хотелось, чтобы такой поиск был по умолчанию. Ну и оставалось чисто индивидуальное недовольство настройкой цветов в баше.

Единственное, что мне удалось настроить, это подсказка, и то без онлайн генератора PS1 мне было бы очень сложно и это сделать.

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

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

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

Если вас заинтересовала оболочка fish, прошу под кат.

Единственный рускоязычный мануал по fish я нашел тут.

Краткий список плюсов

  • Интерактивный режим работы и дружественность пользователю;
  • Подробная и доступная информация о командах делает их поиск значительно проще, чем в man-страницах оболочки bash. И даже если fish не сможет подключиться к X-серверу, для показа справки будет задействован браузер links;
  • Подсветка синтаксиса: при вводе команды буквы выделяются красным цветом, и меняют его на зелёный, если имя команды написано правильно;
  • Названия существующих папок подчёркиваются;
  • Eсть вкладки и история;
  • Fish использует специфические конструкции скриптов, которые проще для начинающих пользователей;
  • Автодополнение здесь лучше, чем в bash, так как fish умеет дописывать опции;
  • Легко читаемый вид функций;
  • Легко настраивать в браузере используя команду fish_config.

Это только основные достоинства fish.

Так же хотелось бы написать и про различия между этими двумя оболочками

  • Алиасы заменены и дополнены функциями, что делает fish очень гибкой и легко настраиваемой, в отличие от bash;
  • Файлы конфигурации располагаются в папке .config/fish и разделяются на типы. Например функция, отвечающая за отображение подсказки находится в файле ~/.config/fish/functions/fish_prompt.fish, свои функции можно писать отдельными файлами в папке functions или все в одном файле ~/.config/fish/config.fish (я использую последний вариант, так как проще переносить один файл, например на рабочую машину).

Установка

Источник: http://www.pvsm.ru/bash/80718

fish shell

Оболочек для unix-like систем расплодилось много: sh, bash, dash, zsh. Выбрать тот самый из всего зверинца очень сложно. В этой маленькой блогозаписи я хочу осветить один прекрасный продукт, который развивается около 8 лет.

fish — это не просто yet another shell, за 8 лет они сделали действительно удобный и гибкий шелл. У них в документации есть фраза «unlike other shells» под которой подписаны функции, уникальные для этой оболочки. Сначала я напишу о них, а уже потом выскажу свое мнение.

Читайте также:  Установить firefox dev. в ubuntu/linux mint

Встроенная документация

В fish есть встроенная документация, достаточно ввести комманду:

И в браузере откроется отформатированный документ со всеми описаниями его внутренностей.

Перенаправление вывода

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

$ grep fish < /etc/shells > ~/output.txt ^ ~/errors.txt

Переменные

В fish нет синтаксиса для установки значений переменным, для этого сделали команду set:

$ set name 'Mister Noodle'
$ echo $name
Mister Noodle

Статус завершения

Статус завершения программы хранится в переменной $status, а не в $?:

Переменные окружения

Команды для установки переменных окружения export нет, вместо этого можно использовать set с аргументом -x или —export:

$ set -x MyVariable SomeValue
$ env | grep MyVariable
MyVariable=SomeValue

Вы так-же можете очищать эти переменные:

$ set -e MyVariable
$ env | grep MyVariable
(no output)

Подстановка

В других оболочках, для подстановки в команду, выражение оборачивают в кавычки; в fish вы можете использовать для этого круглые скобки:

$ echo In (pwd), running (uname)
In /home/tutorial, running FreeBSD
$ set os (uname)
$ echo $os
Linux
$ touch «testing_»(date +%s)».txt»
$ ls *.txt
testing_1360099791.txt

Комбинаторы

Вместо && и || в fish есть and, or и not:

$ cp file1.txt file1_bak.txt; and echo «Backup successful»; or echo «Backup failed»
Backup failed

Функции

Для доступа к аргументам функций используется переменная $argv, вместо $1, $2, $3 и т.д.

$ function say_hello echo Hello $argv end
$ say_hello
Hello
$ say_hello everybody!
Hello everybody!
$ function my_name_is echo $argv[1] end
$ my_name_is Yuri Artemev
Yuri

Prompt

В fish нет переменных для установки prompt, таких как PS1. Для этого есть функция fish_prompt, которую вы можете переопределить:

$ function fish_prompt echo «New Prompt % » end
New Prompt % _

А теперь немного отсебятины

Первое, что мне не понравилось – это установка переменных. В fish нельзя написать так:

$ RAILS_ENV=test rake db:migrate

Вместо этого приходится устанавливать переменные с помощью команды set или делать это после самой команды:

$ rake db:migrate RAILS_ENV=test

Забудьте о Ctrl + R, в этой оболочке нет привычного поиска, в fish все круче – вы просто пишете команду и тут же серым подставляется первое совпадение, если не подошло – бродим по истории с помощью стрелок вверх и вниз, все очень просто.

Массивы – они мощные:

$ set ary 1 2 3 4 5 6 7 8 9 hello
$ echo $ary[1]
1
$ echo $ary[-1]
hello
$ echo $ary[1..5]
1 2 3 4 5
$ echo $ary[-1..-3]
hello 9 8
$ echo $ary[-1..1]
hello 9 8 7 6 5 4 3 2 1
$ count $ary
10
$ set ary[5] 50
$ echo $ary
1 2 3 4 50 6 7 8 9 hello
$ for v in $ary echo $v end 1
2
3
4
50
6
7
8
9
hello

Есть подсветка синтаксиса, есть команды prevd и nextd для путешествия туда и обратно по директориям, а еще можно делать крутые темы.

Источник: http://artemeff.com/2013/09/12/fish-shell.html

Оболочка пользователя ( shell ) в Linux

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

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

Такой программный уровень получил название «оболочка» или, на английском языке — shell.

Командная оболочка ( shell ) обеспечивает взаимотействие между пользователем и средой операционной системы Linux.

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

Примером оболочки может быть, например, интерпретатор команд command.com операционной системы MS DOS, или оболочка bash операционных систем Unix / Linux.

Все оболочки имеют схожие функции и свойства, в соответствием с их основным предназначением — выполнять команды пользователя и отображать результаты их выполнения: — Интерпретация командной строки. — Доступ к командам и результатам их выполнения. — Поддержка переменных , специальных символов и зарезервированных слов.

— Обработка файлов, операций стандартного ввода и вывода. — Реализация специального языка программирования оболочки.     Для операционных систем семейства Unix / Linux возможно использование нескольких различных оболочек, отличающихся свойствами и методами взаимодействия с системой.

Наиболее распространенными оболочками являются

sh — оболочка Bourne , классическая оболочка для ОС Unix

bash оболочка Bourne Again (GNU Bourne-Again SHell). Пожалуй, наиболее распространенная на данный момент, оболочка в среде ОС семейства Linux.

ksh — оболочка Korn, разработанная в качестве развития оболочки Bourne с историей командной строки и возможностью редактирования команд.

csh — оболочка C, использующая синтаксис популярного языка программирования C

tcsh — версия оболочки C с интерактивным редактированием командной строки.

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

    В процессе загрузки операционных систем семейства Linux, после загрузки ядра системы выполняется переход в интерактивный режим – режим взаимодействия пользователя и операционной системы.

В ОС Linux, первым запускаемым в ходе загрузки процессом, является программа инициализации init, которая считывает содержимое конфигурационного файла /etc/inittab, определяет перечень и характеристики терминалов, имеющихся в системе, и вызывает программу интерактивного входа getty, отображающую приглашение для ввода имени пользователя. После ввода имени пользователя и пароля, программа getty вызывает программу login, которая проверяет достоверность учетной записи, выполняет переход в домашний каталог пользователя и передает управление программе начального запуска сеанса, в качестве которой обычно используется программа оболочки пользователя, конкретная разновидность которой определяется содержимым файла /etc/passwd для данной учетной записи. Например:

Как видно из содержимого файла /etc/passwd, для пользователя user1 будет запущена оболочка sh ( оболочка Bourne ), для пользователя interbase — оболочка csh (оболочка C ) и для пользователя apb — оболочка bash ( Bourne Again ).

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

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

— посредством команды exit выполненной пользователем

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

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

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

Например, командная строка

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

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

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

Кроме встроенных команд, возможно использование программных модулей, представляющих собой отдельные исполняемые файлы, или файлов скриптов или сценариев — обычных текстовых файлов, содержащих последовательно выполняемые строки с командами оболочки. Некоторые скрипты (сценарии) могут выполняться процессами Linux, как например, планировщиком задач cron.

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

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

Для устранения данной проблемы, в ОС семейства Linux принято в первой строке скрипта указывать разновидность оболочки, необходимой для его выполнения, в виде:

— для оболочки bash

— для оболочки sh

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

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

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

При выполнении команд или сценариев используются переменные окружения (на английском языке — environment , значения которых характеризуют программную среду, в которой происходит выполнение команд.

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

Для установки переменных окружения на уровне системы используется содержимое файлов:

/etc/profile — устанавливает переменные только для командных оболочек. Может запускать любые скрипты в оболочках, совместимых с Bourne shell.

/etc/bash.bashrc — устанавливает переменные только для интерактивных оболочек. Он также запускает bash-скрипты.

/etc/environment — используется модулем PAM-env. В этом файле можно указывать только пары имя=значение.

Каждый из этих файлов имеет свои особенности применения, поэтому следует внимательно выбирать тот, который подходит для ваших целей. Например, если нужно добавить пользовательский каталог ~/bin в переменную PATH для всех пользователей, поместите следующий код в один из системных файлов инициализации окружения (/etc/profile или /etc/bash.bashrc):

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

Если же нужно изменить среду окружения для конкретного пользователя, используется модификация содержимого среды окружения пользователя:

~/.bash_profile, ~/.bash_login и т.п. — файлы инициализации командной оболочки из домашнего каталога пользователя.

~/.profile — файл инициализации профиля пользователя. Используется многими оболочками для определения переменных среды.

~/.pam_environment — пользовательский аналог файла /etc/environment, который используется модулем PAM-env.

Например, чтобы добавить каталог пользователя ~/bin в пути поиска исполняемых файлов, заданных переменной PATH, можно например, в файл ~/.profile поместить строку:

export PATH=»${PATH}:/home/пользователь/bin»

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

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

export PATH=~/bin:$PATH

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

Для просмотра значения переменной можно использовать команду echo $переменная, например:

echo $PATH

В настоящее время, самой распространенной оболочкой, как уже упоминалось выше, является bash. Вызвано это, в первую очередь тем, что оболочка bash является sh — совместимой командной оболочкой, в которую добавлены полезные возможности из оболочек Korn shell (ksh) и C shell (csh).

Оболочка bash может без какой-либо модификации выполнять большинство скриптов, написанных под язык программирования оболочки sh и в максимальной степени пытается приблизиться к стандарту POSIX, что привело к появлению множества улучшений, причем как для программирования, так и использования в интерактивном режиме.

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

В целом, bash в наибольшей степени соответствует потребностям среднестатистического пользователя, что и сделало ее наиболее используемой в среде Linux.

При запуске bash без параметров командной строки, оболочка запускается в интерактивном режиме, отображая на экране приглашение к вводу команд.

Интерактивная оболочка обычно читает данные из терминала пользователя и пишет данные в этот же терминал, стандартным устройством ввода является клавиатура, а стандартным устройством вывода – дисплей.

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

Источник: https://white55.ru/shells.html

Ссылка на основную публикацию