Программа которая анализирует и выполняет команды вводимые с терминала называется

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

Чтобы начать запись нужно выполнить команду script. Если вызвать команду script без параметров, то запись будет вестись в файл с именем typescript.

Файл будет создан именно в той директории, в которой вы находитесь. Вывести название текущей директории можно командой pwd. Если файл уже существует, то он будет очищен.

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

script myterminal.log

После ввода команды будет создан файл, но данные в него будут записаны только после того, как вы введете команду exit или нажмете сочетание клавиш Ctrl+D. Пример:

Терминал и командная строка

В Linux нет отдельного объекта под именем «система». Система — она на то и система, чтобы состоять из многочисленных компонентов, взаимодействующих друг с другом. Главный из системных компонентов — пользователь . Это он командует машиной, а та его команды выполняет. В руководствах второго и третьего разделов описаны системные вызовы (функции ядра ) и библиотечные функции.

Команды bash: переменные, подстановки, параметры, спис

Они-то и есть непосредственные команды системе. Правда, воспользоваться ими можно только написав программу (чаще всего — на языке Си ), нередко — довольно сложную. Дело в том, что функции ядра реализуют низкоуровневые операции , и для решения даже самой простой задачи пользователя необходимо выполнить несколько таких операций, преобразуя результат работы одной для нужд другой. Возникает необходимость выдумать для пользователя другой — более высокоуровневый и более удобный- язык управления системой. Все команды, которые использовал Мефодий в работе, были частью именно этого языка.

Из этого несложно заключить, что обрабатывать эти команды, превращать их в последовательность системных и библиотечных вызовов должна тоже какая-нибудь специальная программа , и именно с ней непрерывно ведет диалог пользователь сразу после входа в систему. Так оно и оказалось — программа эта называется интерпретатор командной строки или командная оболочка (» shell «). «Оболочкой» она названа как раз потому, что все управление системой идет как бы «изнутри» нее: пользователь общается с нею на удобном ему языке (с помощью текстовой командной строки ), а она общается с другими частями системы на удобном им языке (вызывая запрограммированные функции).

Таким образом, упомянутые выше правила разбора командной строки — это правила, действующие именно в командном интерпретаторе : пользователь вводит с терминала строку, shell считывает ее, иногда — преобразует по определенным правилам, получившуюся строку разбивает на команду и параметры, а затем выполняет команду, передавая ей эти параметры. Команда , в свою очередь , анализирует параметры, выделяет среди них ключи и делает то, о чем ее попросили, попутно выводя на терминал данные для пользователя, после чего завершается. По завершении команды возобновляется работа «отступившего на задний план» командного интерпретатора — он снова считывает командную строку , разбирает ее, вызывает команду. Так продолжается до тех пор, пока пользователь не скомандует оболочке завершиться самой (с помощью logout или управляющего символа » ^D «, который для shell значит то же, что и для других программ: больше с терминала ввода не будет).

Читайте также:
Какая программа открывает mdx

Как писать скрипты в Clickermann | Пример решения реальной задачи с помощью кода

Конечно, командных интерпретаторов в Linux несколько. Самый простой из них, появившийся в ранних версиях UNIX , назывался sh , или «Bourne Shell » — по имени автора, Стивена Борна (Stephen Bourne). Со временем его везде, где только можно, заменили на более мощный, bash , «Bourne Again Shell » 6 Игра слов: «Bourne Again» вслух читается как «born again», т. е. «возрождённый». . bash превосходит sh во всем, особенно в возможностях редактирования командной строки . Помимо sh и bash в системе может быть установлен «The Z Shell «, zsh , самый мощный на сегодня командный интерпретатор (шутка ли, 22 тысячи строк документации!), или tcsh , обновленная и тоже очень мощная версия старой оболочки «C Shell «, синтаксис команд которой похож на язык программирования Си .

Когда Гуревич добавлял учетную запись Мефодия в систему, он не стал спрашивать, какой командный интерпретатор ему нужен, потому что знал: для новичка имя командного интерпретатора — пустой звук. Тем не менее имя оболочки, запускаемой для пользователя сразу после входа в систему — так называемый стартовый командный интерпретатор ( login shell ), — это часть пользовательской учетной записи, которую пользователь может изменить командой chsh ( change shell ).

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

Рис. 2.2. Интерфейс командной строки. Издание второе, переработанное и дополненное. Взаимодействие пользователя с компьютером посредством терминала и оболочки.

Команды и утилиты

2.18. Бессмысленная команда

Одного неудачного запуска apropos Мефодию было достаточно для того, чтобы понять: команд в Linux очень много. Ему пришло в голову, что никакая программа — пусть даже и оболочка — не может самостоятельно разбираться во всех задокументированных командах. Кроме того, Гуревич называл большинство команд утилитами , то есть полезными программами. Стало быть, командный интерпретатор не обязан уметь выполнять все, что вводит пользователь. Ему достаточно разобрать командную строку , выделить из нее команду и параметры, а затем запустить утилиту — программу, имя которой совпадает с именем команды.

В действительности собственных команд в командном интерпретаторе немного. В основном это операторы языка программирования и прочие средства управления самим интерпретатором . Все знакомые Мефодию команды, даже echo , существуют в Linux в виде отдельных утилит . shell занимается только тем, что подготавливает набор параметров в командной строке (например, раскрывая шаблоны ), запускает программы и обрабатывает результаты их работы:

2.19. Определение типа команды

В bash тип команды можно определить с помощью команды type . Собственные команды bash называются builtin (встроенная команда) , а для утилит выводится путь , содержащий название каталога, в котором лежит файл с соответствующей программой, и имя этой программы. Некоторые — самые нужные — команды встроены в bash , даже несмотря на то, что они имеются в виде утилит (например, echo ). Работает встроенная команда так же, но так как времени на ее выполнение уходит существенно меньше, командный интерпретатор выберет именно ее, если будет такая возможность. Ключ » -a » («all», конечно), заставляет type вывести все возможные варианты интерпретации команды, а ключ » -t » — вывести тип команды вместо пути .

Читайте также:
Программа чтобы удалить подписчиков в инстаграме

По совету Гуревича Мефодий сгруппировал ключи , написав » -at » вместо » -a -t «. Многие утилиты позволяют уменьшать длину командной строки подобным образом. Если встречается параметрический ключ , он должен быть последним в группе, а его значение — следовать, как и полагается, после. Группировать можно только однобуквенные ключи .

Слова и разделители

При разборе командной строки shell использует понятие разделитель (delimiter). Разделитель — это символ, разделяющий слова; таким образом, командная строка — это последовательность слов (которые имеют значение) и разделителей (которые значения не имеют). Для shell разделителями являются символ пробела, символ табуляции и символ перевода строки (который все-таки может попасть между словами способом, описанным в лекциях 6 и 7). Количество разделителей между двумя соседними словами значения не имеет.

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

2.20. Закавычивание в командной строке

В первом случае команде echo было передано три параметра — » One «, » Two » и » Three «. Она их и вывела, разделяя пробелом. Во втором случае параметров было два: » One » и » Two Three «. В результате эти два параметра были также выведены через пробел. В третьем случае параметр был всего один — от открывающего апострофа » ‘One ‘» до закрывающего . забыл!’ «. Все время ввода bash услужливо выдавал Мефодию подсказку » > » — в знак того, что набор командной строки продолжается, но в режиме ввода содержимого кавычек.

Источник: intuit.ru

Часть 2. Использование unix Терминал и командная строка

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

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

Терминал

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

Читайте также:
Процесс формирования тех или иных программ

Прототипом такого устройства был телетайп, который стал использоваться в качестве средства обмена данными с компьютером еще в 1950-е годы. В современных компьютерах для организации интерфейса командной строки используется клавиатура и экран монитора, работающий в текстовом режиме. Терминалом может быть и отдельное внешнее устройство, подключаемое к компьютеру через порт последовательной передачи данных («COM-порт»).

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

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

Управляющие символы

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

Часть управляющих символов вводится специальными клавишами, предусмотренными для управления вводом текста, такими как Backspace и Enter. Управляющих символов может быть больше, чем нетекстовых клавиш на клавиатуре, в этом случае их необходимо извлекать с помощью какого-либо клавиатурного модификатора, например, Ctrl.

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

Специальные управляющие символы могут быть также зарезервированы для команд межпроцессного взаимодействия (передачи сигналов). В частности, для завершения командной оболочки можно использовать символ конца ввода Ctrl-D. Эту команду интерпретирует при вводе с терминала система. Она же превращает некоторые другие управляющие символы (например, Ctrl-C — «прерывание» или Ctrl-Z — «засыпание») в соответствующие сигналы.

Одной из полезных особенностей терминала является возможность его «прокрутки» с помощью клавиш Shift-PgUp и Shift-PgDn. Это может быть полезно, если вывод программы занимает больший объём, чем размер экрана.

Каждое устройство или программа, выполняющие функции терминала, имеет свои возможности по вводу и выводу информации. Примерами таких возможностей являются: число цветов отображения, способность перемещать курсор и изменять размер экрана, набор управляющих символов и т. п. При этом для операционной системы важна возможность работать с любыми терминалами одинаковым способом. Для этого в операционных системах семейства UNIX вводится понятие тип терминала: каждый тип сводится к набору возможностей, регламентированных в специальном конфигурационном файле. Информация о всех существующих типах терминалов хранится в специализированной базе данных (terminfo или termcap). Примерами типов являются: tty (телетайп) или xterm (графический терминал).

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru