- Работа с командной оболочкой Linux
- Настройка среды окружения
- Использование командной оболочки для поиска и навигации
- Командный режим ОС Linux
- Что такое командная оболочка (shell) в Linux?
- Что такое shell?
- Внутренние и внешние команды оболочки
- Как узнать какая оболочка у меня установлена?
- Типы командных оболочек
- sh (Bourne shell)
- bash (Bourne-Again shell)
- ksh (Korn shell)
- csh (C shell)
- tcsh (TENEX C Shell)
- zsh (Z Shell)
- Резюмируем
Работа с командной оболочкой Linux
Командная оболочка Линукс — это командный интерпретатор, который выдает пользователю интерактивное приглашение к вводу команд (командную строку) и предлагает массу разнообразных возможностей:
- Перенаправление входных и выходных потоков данных;
- Работа в фоновом режиме;
- Управление отложенными заданиями;
- Просмотр истории введенных команд;
- Встроенная справочная система;
- Дополнение командной строки;
- Режим командной строки (так называемый консольный режим).
В Red Hat Linux командная оболочка воспринимает команды с клавиатуры и обычно используется для запуска других команд и программ с помощью сценариев, написанных на языке командного интерпретатора.
Командная оболочка, которая предоставляется пользователю при входе в систему, назначается в последнем поле записи системного файла /etc/passwd. Так, в следующем примере некоему злосчастному пользователю winky в его учетной записи назначен командный интерпретатор bash:
В ОС Red Hat Linux no умолчанию используется командный интерпретатор GNU под названием bash (интерпретатор Борна); однако доступны и другие интерпретаторы: tcsh, ksh и zsh.
Чтобы использовать другую оболочку, введите ее название в командной строке. Пользователь root, при создании пользователя, может назначить ему свой интерпретатор.
Изменить командную оболочку можно воспользовавшись командой chsh (change shall); но вначале убедитесь, что этот интерпретатор установлен в вашей системе. Например, чтобы использовать командный интерпретатор tcsh, сначала с помощью команды which проверьте, что он действительно установлен в системе:
Из данного примера видно, что оболочка tcsh установлена и находится в каталоге /bin. Кроме того, tcsh должен присутствовать в списке разрешенных командных интерпретаторов (/etc/shells). Проверьте и это:
Можно выполнить chsh с параметром -l, чтобы вывести список действительных командных оболочек, чтобы убедиться в том, что оболочка tcsh разрешена. Поскольку tcsh установлен и присутствует в списке /etc/shells, можно командой chsh изменить командный интерпретатор:
Легко можно убедиться, что если ввести имя командного интерпретатора, не установленного в системе, то «chsh» выдаст сообщение об ошибке. А теперь попробуем изменить интерпретатор на существующий в системе:
Если теперь вы поинтересуетесь своей записью в файле /etc/passwd, то увидите, что вашим интерпретатором, используемым по умолчанию, является /bin/tcsh. После очередного входа в Линукс, будет работать tcsh.
Настройка среды окружения
Когда пользователь регистрируется и входит в систему, в оперативную память загружаются ряд переменных и им присваиваются значения. Эти переменные называются «переменными окружения» командного интерпретатора; они могут использоваться различными командами для получения информации о программной среде (например, о типе операционной системы, о домашнем каталоге пользователя и о его командной оболочке).
В Red Hat Linux переменные окружения помогают настроить вычислительную среду операционной системы и включают полезные спецификации и настройки; если вы начнете писать сценарии оболочки, то в них, скорее всего, вы захотите применять эти многочисленные переменные. Следующий список содержит ряд переменных окружения вместе с их описанием:
PWD — имя актуального рабочего каталога, используемого командой pwd, например, /home/winky/foo;
USER — имя пользователя, например winky;
LANG — язык, используемый по умолчанию, например English;
SHELL — название и местоположение актуальной командной оболочки, используемого в данный момент;
PATH — используемое по умолчанию местоположение исполняемых файлов, например, /bin, /usr/bin и т.д.;
LD_LIBRARY_PATH — местоположение важных программных библиотек;
TERM — переменная указывает какой терминал используется, например, vt100, это необходимо для экранных программ, например, для текстовых редакторов;
MACHINE — тип системы, архитектура системы и так далее.
У каждой оболочки может быть свой собственный набор функциональных возможностей и синтаксис языка, а также особый набор переменных окружения, используемых по умолчанию. Чтобы отобразить на экране эти среды, введем на терминале env или printenv. Например:
$env
PWD=/home/bball
HOSTNAME=thinkpad.home.org
USER=bball
MACHTYPE=i386-redhat-linux-gnu
MAIL=/var/spool/mail/bball
BASH_ENV=/nome/bball/.bashrc
LANG=en_US
DISPLAY=titanium:0
LOGNAME=bball
SHLVL=1
PATH=/usr/bin: \
SHELL=/bin/bash
HOSTTYPE=i586
HOME=/home/bball
В этом сокращенном списке показаны несколько распространенных переменных. Установка их производится при помощи файлов конфигурации, находящихся в каталогах /etc, /etc/skel или в домашнем каталоге пользователей /home. Так, используемые по умолчанию параметры оболочки bash можно найти в файлах /etc/profile и /etc/bashrc, а также в .bashrc или .bash_profile, хранящихся в домашнем каталоге.
Одной из наиболее важных переменных является «SPATH», которая определяет местоположение исполняемых файлов. Например, если вы, будучи обычным пользователем, попытаетесь выполнить команду, которая не содержится в вашей переменной $РАТН, например, команду ifconfig, то увидите что-то вроде следующего:
Однако, если вам наверняка известно, что ifconfig точно есть в вашей системе, то это легко проверить с помощью whereis:
В этом примере видим, что ifconfig действительно установлен. Дело в том, что для операционной системы Red Hat Linux каталог /sbin по умолчанию не включен в $РАТН.
Одна из причин этого заключается в том, команды из каталога /sbin обычно предназначены только для пользователя root. Редактируя файл .bash_profile в своем домашнем каталоге, можно добавить каталог /sbin в свою переменную $РАТН.
Найдите в этом файле такую строку:
Можно следующим образом отредактировать этот документ (например, с помощью редактора vi) и добавить каталог s/bin:
PATH=$PATH:/sbin:$HOME/bin
Сохраните этот файл. Когда в следующий раз вы зарегистрируетесь и войдете в систему, каталог /sbin будет включен в переменную $РАТН. Чтобы пользоваться этим изменением сразу же, можно считать новые параметры из файла .bash_profile с помощью source:
$ souce .bash_profile
Теперь введем «ifconfig», не задавая полное имя пути. Некоторые команды Linux используют другие переменные среды, например, для получения информации о конфигурации системы. В частности программам связи требуется такая переменная, как BAUD_RATE, которая указывает скорость передачи данных модемом.
В качестве эксперимента с переменными среды можно модифицировать «PS1» и изменить вид приглашения. Если вы работаете с bash, то для изменения приглашения можно воспользоваться встроенной командой export.
Допустим, что используемое по умолчанию параметры ввода оболочки выглядят так:
[winky@shuttle2
]$
Изменим ее вид с помощью PS1 следующим образом:
Нажимаем на клавишу Enter, скорее всего, видим:
Использование командной оболочки для поиска и навигации
В ОС Линукс для навигации предназначена специальная утилита cd. Чтобы перейти в домашний каталог, достаточно ввести:
Для достижения того же самого результата можно использовать переменную среды $НОМЕ:
В Linux включены несколько команд из проекта GNU, которые можно использовать для проведения поиска в файловой системе:
whereis commands – возвращает местоположение команды и ее справочной страницы;
whatis commands – возвращает однострочное резюме из справочной страницы команды;
locate file – возвращает местоположение всех файлов, удовлетворяющих условиям поиска (можно применять метасимволы);
apropos subject – возвращает список команд относящихся к данной теме.
Источник
Командный режим ОС Linux
В Linux, следует напомнить, графический режим вывода информации на монитор не является основным, Поэтому так или иначе пользователю придется столкнуться с выводом информации в текстовом режиме и вводом команд в командной строке. Во времена MS DOS такой режим работы был не в диковинку, но сегодня об этом знают только опытные пользователи. Правда, если раскрыть секрет программистов и администраторов, настраивать систему лучше с использованием командной строки, причем это справедливо как для Linux, так и для Windows.
Повседневная работа в Linux существенно отличается от работы в Windows, особенно в части использования кнопки Reset и комбинации клавши Ctrl+Alt+Del, которыми регулярно пользуется большинство пользователей Windows. В Linux перезапуск компьютера является действительно чрезвычайной ситуацией, Приводящей к проблемам в работе системы, поэтому надо сразу научиться правильно входить в систему и, в особенности, правильно завершать работу. После загрузки операционной системы Linux вам надо обязательно получить разрешение для входа в систему. Поэтому первый диалог, который ведет с вами Linux, − это запрос вашего имени и пароля:
Вам надо ввести свое имя и пароль, которые должны быть ранее зарегистрированы в системе администратором. Только после авторизации в системе вы сможете выполнять какие-либо действия. В операционной системе Linux всегда имеется пользователь − root, который регистрирует всех остальных пользователей и определяет их права в системе. Пароль системного администратора определяется при установке Linux, а для дистрибутивов типа Live CD он задается разработчиками.
При входе в систему с правами администратора диалог на экране монитора будет выглядеть так:
По окончании сеанса работы в Linux из операционной системы надо правильно выйти, чтобы не возникло проблем при следующем запуске. Закончить свой сеанс работы только с помощью команды:
Источник
Что такое командная оболочка (shell) в Linux?
Обновл. 27 Июл 2021 |
В этой статье мы разберемся, что такое shell и зачем это нужно, а также рассмотрим наиболее часто используемые командные оболочки в Linux и Unix.
Что такое shell?
Shell (или «шелл», «командная оболочка») — это не только командный интерпретатор, который обеспечивает интерфейс взаимодействия между пользователем и ядром операционной системы, но и своеобразный язык программирования, в котором присутствуют такие конструкции, как операторы условного ветвления, циклы, переменные и многое другое.
Операционная система (ОС) запускает командную оболочку для каждого пользователя, когда тот входит в систему или открывает окно терминала. Первым что пользователь увидит в окне терминала, будет приглашение оболочки — оно, как правило, состоит из имени пользователя и имени хоста, отделенные друг от друга символом @ , следом за ними идет путь текущей рабочей директории и один из двух символов: $ или # .
Если пользователь не наделен особыми правами, то в качестве приглашения к вводу команд в терминале будет отображаться символ $ . Если же был выполнен вход под учетной записью привилегированного (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), обычно, является псевдонимом для запуска текущей, более новой оболочки.
Характерные черты 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 | имя_пользователя@имя_хоста: |
$
#
>
Примечание: Помимо представленных выше оболочек, есть еще и такие оболочки, как:
mksh — оболочка, основной упор в которой сделан на написание скриптов;
dash — более легковесная в сравнении с bash оболочка, но из-за этого обладающая ограниченной функциональностью;
fish — «новая» оболочка, написанная в 2005 году, отличительной чертой которой является упор на комфорт использования и упрощение командного языка;
Поделиться в социальных сетях:
Источник