Это команда rcplan9, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
rc, cd, eval, exec, exit, flag, rfork, shift, wait, whatis,., ~ - язык команд
СИНТАКСИС
rc [ -srdiIlxepvV ] [ -c команду ] [ файл [ аргумент ... ]]
ОПИСАНИЕ
Rc это оболочка Plan 9. Он выполняет командные строки, прочитанные с терминала или файла, или, с
-c флаг, от rc's список аргументов.
Command Линии
Командная строка - это последовательность команд, разделенных амперсандами или точкой с запятой (& or ;),
заканчивается новой строкой. Команды выполняются последовательно слева направо. Rc
не ждет команды, за которой следует & завершить выполнение перед запуском
следующая команда. Всякий раз, когда за командой следует & выполняется, его идентификатор процесса
назначен на rc переменная $ apid. Всякий раз, когда команда последующей & выходит или есть
прекращено, rc переменная $ статус получает сообщение ожидания процесса (см. ждать(3)); Так и будет
быть пустой строкой, если команда была успешной.
Длинную командную строку можно продолжить в последующих строках, набрав обратную косую черту (\)
за которым следует новая строка. Эта последовательность обрабатывается так, как если бы она была пустой. Обратная косая черта
не иначе как специальный символ.
Знак числа (#) и любые последующие символы до (но не включая) следующей новой строки
игнорируются, за исключением кавычек.
Простой Команды
Простая команда - это последовательность аргументов, перемежающихся перенаправлениями ввода-вывода. Если
первый аргумент - это имя rc функции или одного из rc's встроенные команды, это
выполняется по rc. В противном случае, если имя начинается с косой черты (/), это должно быть имя пути
исполняемой программы. Имена, не содержащие начального слэша, ищутся в
список имен каталогов, хранящихся в $ путь. Первый исполняемый файл с заданным именем
найдено в каталоге в $ путь программа, которую нужно выполнить. Чтобы быть исполняемым, пользователь
должен иметь разрешение на выполнение (см. состояние(3)) и файл должен быть исполняемым
двоичный файл для текущего типа процессора машины или сценарий оболочки. Скрипты оболочки начинаются с символа
строка, содержащая полный путь к оболочке (обычно / bin / rc) с префиксом
Первое слово простой команды не может быть ключевым словом, если оно не заключено в кавычки или иначе.
замаскированный. Ключевые слова
на время, если не переключить fn ~! @
аргументы и Переменные показатели
Можно использовать ряд конструкций, где rc's синтаксис требует появления аргумента.
Во многих случаях значением конструкции будет список аргументов, а не один
строка.
Самый простой аргумент - это слово без кавычек: последовательность из одного или нескольких символов.
ни один из них не является пробелом, табуляцией, новой строкой или любым из следующего:
#; & | ^ $ = `'{} () <>
Слово без кавычек, содержащее любой из символов * ? [ это шаблон для сопоставления
против имен файлов. Персонаж * соответствует любой последовательности символов, ? соответствует любому
одиночный символ и [класс] соответствует любому символу в класс. Если первый символ
of класс is ~, класс дополняется. В класс также может содержать пары символов
разделены по -, обозначающие все символы между ними. Персонаж /
должен явным образом присутствовать в шаблоне, как и первый символ имени пути.
компоненты . и ... Шаблон заменяется списком аргументов, по одному для каждого пути.
совпадение имени, за исключением того, что шаблон, не соответствующий именам, не заменяется пустым списком,
а скорее стоит сам за себя. Сопоставление с образцом выполняется после всех остальных операций. Таким образом,
x=/ Tmp эхо $ x ^ / *. c
спички / tmp /* .c, а не сопоставление /*.с а затем префикс / Tmp.
Слово в кавычках - это последовательность символов, заключенная в одинарные кавычки ('). Одиночная цитата
представлен в цитируемом слове парой кавычек ('').
Каждое из следующих утверждений является аргументом.
(Аргументы)
Значение последовательности аргументов, заключенное в круглые скобки, представляет собой список, состоящий из
члены каждого элемента последовательности. Списки аргументов не имеют рекурсивных
структура, хотя их синтаксис может предполагать это. Следующие полностью
эквивалент:
эхо привет всем
((эхо) (привет) всем)
$аргумент
$аргумент(индекс)
The аргумент после $ это имя переменной, значение которой подставляется.
Возможны несколько уровней косвенного обращения, но их полезность сомнительна. Переменная
значения - это списки строк. Если аргумент это число n, значение - это nth
элемент $*если $* не имеет n элементы, и в этом случае значение пусто.
If аргумент за ним следует список индексов в скобках, значение
замещенный - это список, состоящий из запрошенных элементов (источник 1). В
круглые скобки должны следовать за именем переменной без пробелов. Индексы также могут принимать
форма m-n or m- для обозначения последовательности элементов. Присваивания переменным
описаны ниже.
$#аргумент
Значение - это количество элементов в названной переменной. Переменная никогда
присвоенное значение имеет нулевые элементы.
$"аргумент
Значение - это одна строка, содержащая компоненты названной переменной.
разделенные пробелами. Переменная с нулевыми элементами дает пустую строку.
`{команду}
rc выполняет команду и читает стандартный вывод, разбивая его на список
аргументы, используя символы в $ если как разделители. Если $ если иначе не установлено,
его ценность ' \ t \ n '.
<{команду}
>{команду}
The команду выполняется асинхронно со стандартным выводом или стандартным вводом
подключен к трубе. Значение аргумента - это имя файла, относящегося к
другой конец трубы. Это позволяет строить нелинейные трубопроводы.
Например, ниже выполняются две команды старый и новый и использует CMP сравнивать
их результаты
cmp <{старый} <{новый}
аргумент^аргумент
The ^ оператор объединяет два своих операнда. Если у двух операндов одинаковые
количество компонентов, они соединяются попарно. Если нет, то один операнд
должен иметь один компонент, а другой не должен быть пустым, а конкатенация
распределительный.
Бесплатный доступ Каретки
В большинстве случаев rc вставит ^ оператор автоматически между словами, которые
не разделены пробелом. Когда бы один из $ ' ` следует за цитируемым или некотируемым словом, или
слово без кавычек следует за словом в кавычках без пробелов и табуляции, ^ вставлен
между двумя. Если слово без кавычек следует сразу за $ и содержит символ
кроме буквенно-цифровых символов, подчеркивания или *, чтобы ^ вставляется перед первым таким
персонаж. Таким образом
cc - $ flags $ stem.c
эквивалентна
cc - ^ $ флаги $ стержень ^ .c
Ввода / вывода Перенаправления
Последовательность >файл перенаправляет стандартный выходной файл (файловый дескриптор 1, обычно
терминал) к названному файл; >>файл добавляет в файл стандартный вывод. Стандарт
входной файл (дескриптор файла 0, также обычно терминал) может быть перенаправлен из файла
по последовательности <файл, или из встроенного `здесь документа 'последовательностью <<эоф-маркер.
Содержимое документа здесь - это строки текста, взятые из потока ввода команд вверх
в строку, содержащую только эоф-маркер, которые могут быть цитируемыми или некотируемыми
слово. Если эоф-маркер не заключен в кавычки, имена переменных в форме $слово имеют свои ценности
заменен из rc's среда. Если $слово за ним следует каретка (^) каретка
удалено. Если эоф-маркер цитируется, подстановки не происходит.
Перенаправления могут применяться к файловому дескриптору, отличному от стандартного ввода или вывода, с помощью
уточнение оператора перенаправления числом в квадратных скобках. Например,
диагностический вывод (файловый дескриптор 2) можно перенаправить, написав cc барахло.c > [2] барахло.
Дескриптор файла может быть перенаправлен на уже открытый дескриптор, написав >[fd0=fd1] or
<[fd0=fd1]. Fd1 - это ранее открытый дескриптор файла и fd0 становится новой копией (в
Чувство дубликат(3)) из него. Дескриптор файла можно закрыть, написав >[fd0=] or <[fd0=].
Перенаправления выполняются слева направо. Следовательно, cc барахло.c > / dev / null > [2 = 1] и
cc барахло.c > [2 = 1] > / dev / null имеют разные эффекты: первый помещает стандартный вывод в
/ DEV / нуль а затем помещает диагностический вывод в то же место, где второй направляет
диагностический вывод на терминал и отправляет стандартный вывод на / DEV / нуль.
Соединение Команды
Пара команд, разделенных вертикальной чертой (|) - это команда. Стандартный вывод
левая команда отправляется через конвейер на стандартный ввод правой команды. В
Оператор pipe может быть оформлен для использования разных файловых дескрипторов. |[fd] соединяет
выходной конец канала в файловый дескриптор fd а не 1. |[fd0=fd1] подключает выход к
fd1 левой команды и ввод в fd0 правильной команды.
Пара команд, разделенных символом && or || это команда. В любом случае левая команда
выполняется и проверяется его статус выхода. Если оператор && правильная команда
выполняется, если статус левой команды равен нулю. || вызывает выполнение правильной команды
если статус левой команды не равен нулю.
Статус выхода команды может быть инвертирован (ненулевое значение изменяется на нулевое, нулевое значение изменяется
в ненулевое значение), поставив перед ним !.
The | оператор имеет наивысший приоритет и является левоассоциативным (т. е. более плотно привязан к
слева, чем справа). ! имеет промежуточный приоритет, и && и || иметь самый низкий
приоритет.
Унарный @ оператор с приоритетом, равным !, заставляет его операнд выполняться в
подоболочка.
Каждое из следующего - это команда.
if ( список ) команду
A список представляет собой последовательность команд, разделенных &, ;, или перевод строки. Выполнено
и если его статус выхода равен нулю, команду выполнен.
if команду
Непосредственно предыдущая команда должна была быть если(список) команду. Если это
условие было ненулевым, команду выполнен.
для(имя in Аргументы) команду
для(имя) команду
The команду выполняется один раз для каждого аргумент с этим аргументом, присвоенным имя.
Если список аргументов опущен, $* используется.
в то время как(список) команду
The список выполняется повторно, пока его статус выхода не станет ненулевым. Каждый раз это
возвращает нулевой статус, команду выполняется. Пустой список принимается равным нулю
Статус.
переключатель (аргумент){список}
The список ищутся простые команды, начинающиеся со слова , признали. (Поиск
находится только на "верхнем уровне" список, Это, кейсы во вложенных конструкциях
не найден.) Аргумент сопоставляется с каждым словом после , признали используя
алгоритм сопоставления с образцом, описанный выше, за исключением того, что / и первые персонажи
of . и .. не требует явного сопоставления. Когда совпадение найдено, команды в
список выполняется до следующего следующего , признали команда (на верхнем уровне) или
закрывающая скобка.
{список}
Фигурные скобки служат для изменения группировки команд, подразумеваемой приоритетами операторов. В
тело представляет собой последовательность команд, разделенных &, ;, или перевод строки.
fn имя{список}
fn имя
Первая форма определяет функцию с заданным имя. Впоследствии, когда
команда, первый аргумент которой имя встречается текущее значение
оставшаяся часть списка аргументов команды будет назначена $*, после сохранения
текущее значение и rc выполнит список. Вторая форма удаляет имя's
определение функции.
fn в своих размышлениях{список}
fn в своих размышлениях
Функция со специальным именем будет вызываться, когда rc получает соответствующий
Примечание; видеть уведомлять(3). Допустимые названия заметок (и соответствующие заметки): вздох
(повесить трубку), SIGINT (прерывать), сигалрм (Часы работы), а также расширение сигфпе (ловушка с плавающей запятой).
По умолчанию rc завершает работу при получении любого сигнала, кроме случаев, когда запускается в интерактивном режиме, в
в каком случае прерывает и завершает работу обычно вызывает rc прекратить все, что он делает, и
начать читать новую команду. Вторая форма вызывает rc обрабатывать сигнал в
по умолчанию. Rc распознает искусственную ноту, выход из положения, что происходит при rc is
собирается закончить выполнение.
имя=аргумент команду
Любой команде может предшествовать последовательность назначений с вкраплениями
перенаправления. Назначения остаются в силе до конца команды,
если только команда не пуста (т.е. присваивания стоят отдельно), в этом случае они
действуют до тех пор, пока не будут отменены более поздними назначениями.
Встроенный Команды
Эти команды выполняются внутри rc, обычно из-за того, что их исполнение меняется или
зависит от rcвнутреннее состояние.
. файл ...
Выполнять команды из файл. $* устанавливается на оставшуюся часть
список аргументов после файл. Файл ищется для использования $ путь.
встроенная команду ...
Выполнить команду как обычно, за исключением того, что любая функция с именем команду игнорируется в пользу
встроенного значения.
cd [директория]
Измените текущий каталог на директория. Аргумент по умолчанию - $ домой. директория is
искал в каждом из каталогов, упомянутых в $ cdpath.
Eval [аргумент ...]
Аргументы объединяются, разделенные пробелами, в одну строку, читаемую как
вход в rcи выполнен.
Exec [команду ...]
Этот экземпляр rc заменяет себя заданным (не встроенным) команду.
флажок f [+ -]
Либо установить (+), Чисто (-) или test (ни то, ни другое + ни -) флаг f, Где f - это
одиночный символ, один из флагов командной строки (см. Вызов ниже).
выход [статус]
Выйти с заданным статусом выхода. Если ничего не указано, текущее значение $ статус is
используемый.
вилка [nNeEsfFm]
Станьте новой группой процессов, используя rfork (Флаги) в котором Флаги состоит из
побитовое ИЛИ вилка флаги, указанные буквами опций (см. вилка(2)). Если нет
Флаги даны, они по умолчанию ENS, Флаги и их значения: n is
РФНАМЕГ; N is RFCNAMEG; e is РФЕНВГ; E is РФЦЕНВГ; s is РФНОТЕГ; f is РФФД; F is
РФЦФДГи m is РФНОМНТ.
сдвиг [n]
Удалить первый n (по умолчанию 1) элементы $*.
ждать [ПИД-регулятор]
Дождитесь процесса с заданным ПИД-регулятор выходить. Если нет ПИД-регулятор дано, все
ожидаются выдающиеся процессы.
что такое имя ...
Выведите значение каждого имя в форме, подходящей для ввода в rc. На выходе получается
присвоение любой переменной, определение любой функции, вызов встроенная для
любая встроенная команда или полный путь к любому исполняемому файлу.
~ предмет описания ...
The предмет сопоставляется с каждым описания в последовательности. Если он соответствует любому
шаблон, $ статус установлен на ноль. Иначе, $ статус установлен на единицу. Выкройки
то же, что и для сопоставления имен файлов, за исключением того, что / и первый персонаж . и
.. не требует явного сопоставления. В паттеранами не подчиняются имени файла
соответствие до ~ команда выполняется, поэтому их не нужно заключать в
кавычки.
Окружающая среда
The охрана окружающей среды это список строк, доступных для выполнения двоичных файлов ядром.
Rc создает запись среды для каждой переменной, значение которой непусто, и для каждой
функция. Строка для записи переменной содержит имя переменной, за которым следует = и ее
ценить. Если значение имеет более одного компонента, они разделяются SOH (001).
символы. Строка для функции - это просто rc ввод, определяющий функцию.
Имя функции в среде - это имя функции, которому предшествует
После появления rc начинает выполнение, он читает определения переменных и функций из своей среды.
Особый - Special Переменные показатели
Следующие переменные устанавливаются или используются rc.
$* Установить rcСписок аргументов во время инициализации. Всякий раз, когда . команда или
функция выполняется, текущее значение сохраняется и $* получает новый аргумент
список. Сохраненное значение восстанавливается по завершении . или функция.
$ apid Всякий раз, когда процесс запускается асинхронно с &, $ apid настроен на свой процесс
Я бы.
$ домой Каталог по умолчанию для cd.
$ если Разделители полей ввода, используемые при замене обратных кавычек. Если $ если не установлен
in rcокружение, оно инициализируется пустым значением, табуляцией и новой строкой.
$ путь Путь поиска, используемый для поиска команд и файлов ввода для . команда. Если не
установленный в среде, он инициализируется путем синтаксического анализа $ PATH переменная (как в
sh(1)) или путь = (. / бен). Переменные $ путь и $ PATH поддерживаются
вместе: изменения в одном будут отражены в другом.
$ pid Установите во время инициализации на rcидентификатор процесса.
$ подсказка После появления rc выполняется в интерактивном режиме, первый компонент $ подсказка печатается до
чтение каждой команды. Второй компонент печатается всякий раз, когда переводится строка
введено, и для завершения команды требуется больше строк. Если не установлено в
окружение, он инициализируется подсказка = ('% ' ' ').
$ статус Устанавливается на сообщение ожидания последней выполненной программы. (если не началось с &).
! и ~ также изменить $ статус. Его значение используется для управления выполнением в &&, ||,
if и в то время как команды. Когда rc завершается в конце файла ввода или при выполнении
an выход команда без аргументов, $ статус это его статус выхода.
Вызов
If rc запускается без аргументов, он читает команды со стандартного ввода. В противном случае его
первый аргумент без флага - это имя файла, из которого следует читать команды (но см. -c
ниже). Последующие аргументы становятся начальным значением $*. Rc принимает следующие
флаги командной строки.
-c string Команды читаются из string.
-s Распечатайте статус выхода после любой команды, где статус не равен нулю.
-e Выйти, если $ статус не равно нулю после выполнения простой команды.
-i If -i присутствует, или rc не задано никаких аргументов, и его стандартный ввод - это
терминал, он работает в интерактивном режиме. Команды запрашиваются для использования $ подсказка.
-I Убеждается rc не запускается в интерактивном режиме.
-l If -l задан или первый символ нулевого аргумента равен -, rc читает команды
от $ главная / библиотека / профиль, если он существует, перед чтением его обычного ввода.
-p Нет операции.
-d Нет операции.
-v Эхо-ввод в файловый дескриптор 2 при чтении.
-x Распечатайте каждую простую команду перед ее выполнением.
-r Распечатать отладочную информацию (внутренняя форма команд по мере их выполнения).
ИСТОЧНИК
/ SRC / cmd / RC
Используйте rcplan9 онлайн с помощью сервисов onworks.net