Что является интерпретатором linux

Что является интерпретатором linux

Все, что необходимо начинающему и опытному программисту


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс — подробно
Линукс — новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей

Отобразить справку и завершить работу.

Отобразить информацию о лицензировании dselect и завершить работу. Написание —licence также считается

верным и приводит к тому же результату.

Отобразить информацию о версии dselect и завершить работу.

Обзор
командных интерпретаторов Linux

Командный интерпретатор является программой, которая представляет собой прослойку между пользователем и операционной системой. В качестве такой прослойки интерпретатор должен быть практически незаметен пользователю. Но его также можно применять для простого программирования.
В данной главе представлены три интерпретатора, часто встречающиеся в системах Linux — усовершенствованный интерпретатор Борна (bash, или Войте-Again Shell), интерпретатор С shell (csh) и его расширенная версия tcsh, а также рассмотрены их основные отличия. Подробнее интерпретаторы описаны в главе 7 «bash: командный интерпретатор Борна» и главе 8 «Интерпретаторы csh и tcsh». (В некоторых дистрибутивах встречается также интерпретатор Корна, ksh — еще одна популярная версия интерпретатора Борна с аналогичными возможностями.)
В этой главе представлены следующие темы:
• Назначение командного интерпретатора
Разновидности командных интерпретаторов
Общие возможности
Различия

Назначение командного интерпретатора
Интерпретаторы позволяют:
Работать в диалоговом режиме
Настраивать параметры сеанса работы с Linux
Программировать

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

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

Программирование
Последовательность отдельных команд (команд интерпретатора или других команд Linux, доступных в системе), объединенных в одну программу, называется сценарием командного интерпретатора. По схожему механизму работают командные файлы в системе MS-DOS. bash считается интерпретатором с мощной поддержкой программирования, в то время как, по слухам, программирование в csh может оказаться опасным для здоровья.

Разновидности интерпретаторов команд
Существует много различных командных интерпретаторов для Linux. Здесь мы опишем лишь три самых популярных интерпретатора:
• Новый интерпретатор команд Борна (bash), основанный на стандартном интерпретаторе Борна, является стандартным для системы Linux.
• С shell (csh), который использует синтаксис языка С и обладает многочисленными удобствами для работы.
• Интерпретатор tcsh является расширенным вариантом csh и заменяет его
во многих дистрибутивах Linux.
На подавляющем числе систем доступно более одного интерпретатора, и зачастую для написания сценариев применяется один интерпретатор, а для
диалоговой работы — другой.
Когда пользователь входит в систему, запускается командный интерпрета-
тор, определенный для него в файле /etc/passwd. Последнее поле каждой за-
писи файла представляет собой команду для запуска интерпретатора. На-
пример: |

Читайте также:  Драйвер веб камеры для ноутбука msi windows 10

Источник

Интерпретаторы и их сценарии Linux

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

В этом случае сценарий является простейшей интерпретируемой программой на языке соответствующего командного интерпретатора.

[На текущий момент времени существует достаточное количество диалектов языка командного интерпретатора: POSIX-совместимые ash и dash, авторские диалекты W:[Korn shell] ksh и W:[Bourne shell] bash, диалекты с синтаксисом, подобным «языку программирования Си csh и tcsh и прочие. Ультрасовременные zsh или fish хороши для интерактивной работы в системе, но для пакет-Bpeft обработки команд не имеют особенного смысла.

Кроме языка командного интерпретатора, языки W:[Perl], W:[Python] или W:[Tcl] так [же имеют свои интерпретаторы и практически всегда используются в пакетном режиме обработки своих сценариев.

Для запуска нужного интерпретатора используют универсальный комментарий W:[shebang], записываемый в первую строчку сценария и указывающий полный путь к программе интерпретатора, которая вызывается для интерпретации запускаемого сценария.

Интерпретаторы и sha-bang

which: POSIX shell script, ASCII text executable

[email protected]: $ head -1 /bin/which

$ file /bin/gunzip

/bin/gunzip: Bourne-Again shell script, ASCII text executable

$ head -1 bin/gunzip

$ file /usr/sbin/iotop

/usr/sbin/iotop: a /usr/bin/python script, ASCII text executable

$ head -1 /usr/sbin/iotop #!/usr/bin/python

$ file /usr/bin/lsdev

/usr/bin/lsdev: a /usr/bin/perl script, ASCII text executable

$ head -1 /usr/bin/lsdev #!/usr/bin/perl

$ file /usr/bin/netwag

/usr/bin/netwag: a /usr/bin/wish script, ASCII text executable, with CRLF, LF line terminators, with overstriking

$ head -1 /usr/bin/netwag ‘

Сами сценарии представляют собой обычные текстовые файлы, подготавливаемые в любом текстовом редакторе, однако размещаются в каталогах и имеют права подобно «обычным» исполняемым W:[ELF]-nporpaммaм.

Сценарии интерпретаторов

$ cat hello.sh

echo «Hello, World!“

$ hello.sh

hello.sh: команда не найдена

$ env

PATH=/home/bender/bin: /usr/lib/lightdm/lightdm: /usr/local/sbin: /usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin: /usr/games

$ pwd

$ mkdir bin

$ mv hello.sh /home/bender/bin

$ hello.sh

bash: /home/bender/bin/hello.sh: Отказано в доступе

$ ls -la bin/hello, sh

-rw-rw-r— 1 bender bender 32 янв. 17 15:23 bin/hello.sh

$ chmod a+x bin/hello.sh

$ Is -la bin/hello.sh

-rwxrwxr-x 1 bender bender 32 янв, 17 15:23 bin/hello.sh

$ hello, sh

Встроенные и внешние команды

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

Например, команда cd, изменяющая текущий каталог, является встроенной (и по-другому реализована быть не может, потому что должна изменить атрибут CWD процесса самого интерпретатора).

Команда pwd, наоборот, может быть внешней а доказывать при запуске атрибут CWD-своего процесса, унаследованного в момент запуска от командного интерпретатора), но для интерпретаторов Bourne/Korn shell зачастую имеет и встроенную реализацию.

Читайте также:  Get windows version numbers

Встроенные и внешние команды

$ which -a cd

$ type -a cd

cd встроена в оболочку,

$ which -a pwd

$ type -a pwd

pwd встроена в оболочку

pwd является /bin/pwd

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

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

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

Основной вид профессиональной деятельности такого пользователя не имеет особого значения. Фотографы и дизайнеры, аудио- и видеоинженеры, ЗD-моделеры и инженеры САПР, типографские работники и прочие профессионалы находят свою прелесть в написании и использовании сценариев пакетной обработки своих фотографий, аудио- и видеоматериалов, моделей, чертежей и массы другой информации.

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

Источник

Что такое bash / shell

И то, и другое — интерпретаторы командной строки в линуксе. То есть если вы откроете командную строку и введете любую команду, да хоть:

То именно интерпретатор ее расшифрует и скажет компьютеру «он хочет перейти в директорию /home». Компьютер ведь не понимает команды на русском / английском языке. Ему нужны байтики. Этим и занимается интерпретатор — переводом с «нашего» на «компьютерный» язык.

Так что «cd /home» — это shell-команда! Или bash. Смотря какой интерпретатор установлен в вашей системе. В каждой операционной системе установлен интерпретатор по умолчанию. У них есть какие-то различия, но есть и набор базовых команд, которые понимают все: cd, mv, cp, ls… (в винде эти команды немного другие)

А что такое shell-скрипт тогда? Это просто текстовый документ, внутри которого написан набор команд! Это не обязательно должны быть «сложные» команды, которые делают что-то супер-навороченное. Это любые команды, которые вы выполняете в консоли.

Например, создадим скриптик, который создаст директорию и в ней файлик:

Так, команды записали, осталось сохранить их в файлик. Скрипты хранят в файлах с расширением .sh, поэтому назовем файл first_script.sh. Но есть нюанс — линуксу плевать на ваше расширение файла. Его может вообще не быть, и все равно скрипт останется скриптом. Почему? Потому что у любого скрипта в первой строке должен содержаться путь к интерпретатору. Например:

Весь файл целиком:

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

Читайте также:  Как скопировать файлы при установке windows 10

Расширение .sh ставится для понимания человеком. Зашел в директорию:

— Ага, что тут у нас? Файлы sh, скрипты какие-то лежат.

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

Переподложить war-файл с приложением (лежат они в директории /opt)

Сервиса два, допустим это test и cloud. Так что шагов уже 6.

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

Собираешь приложение, подкладываешь к скриптику и запускаешь 1 команду вместо 6. Удобно! Это называется «автоматизация рутины» =)

Другой пример с того же проекта — мы делали серверное приложение. И во время установки приложения на сервере linux нужно выполнить пункты по настройке самой системы. Например, увеличить параметр max_map_count — сколько максимум памяти может использовать процесс.

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

Вообще, если вы отдаете установку приложения на откуп «чужим» админам, лучше потом проверять — а всё ли настроено верно? Конечно, обычно на production (машина, с которой работают реальные пользователи) настраивают всё внимательно, это на тестовых стендах могут что-то пропустить. Но лучше перебдеть!

Мы написали скрипт по проверке настройки окружения (символ «#» в начале строки означает, что это комментарий):

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

Видим, что все проверки провалились, статус failed. Если и от админов приходит похожая картина, направляем их в документацию по настройке системы. Если к нам приходят с проблемой падения из-за нехватки памяти, снова просим выполнить скрипт. Так проще локализовать ошибку: это в приложении косяк, или окружение настроено плохо?

Просить других людей выполнить 10 команд не очень хорошо. Потому что часть команд может «потеряться» при выполнении — плохо скопировал, забыл выполнить проверку, которую дали сообщением позже. Гораздо проще сделать 1 скрипт и попросить выполнить именно его.

Когда надо писать скрипт?

Когда надо выполнить больше 3 команд за раз — проще выполнить одну, запустить скрипт.

Когда одну и ту же команду надо выполнять чаще 3 раз — лучше автоматизировать эту работу.

По сути своей, bash-скрипты — это та же автоматизация. А когда нужна автоматизация? Когда мы хотим избавиться от рутины, от постоянного выполнения одного и того же действия вручную. Повторяете одно и то же каждый день / неделю? Напишите скрипт. Даже если он на 2-3 строчки будет, это правда удобнее. Поверьте, сама делала небольшие скрипты =)

См также по bash:

Основы BASH. Часть 1 (Хабр) — цикл статей о том, как писать скрипты

См также другие статьи из цикла «Что такое. »:

Источник

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