sh
Комментарии в исходном файле sh.c :
Команд: 14
sh
usage: sh [-c command] [script]
Командная оболочка. Запускает сценарий оболочки или считывает ввод в интерактивном режиме.
и отвечает на него. Примерно совместим с "bash". Запустите «помощь» для
список встроенных команд.
-c командная строка для выполнения
-i интерактивного режима (по умолчанию, когда STDIN является tty)
-s не запускать скрипт (аргументы устанавливают $
Командные оболочки анализируют каждую строку ввода (запрашивая в интерактивном режиме), выполняют
расширение и перенаправление переменных, выполнение команд (порождение дочерних процессов
и фоновые задания) и выполнять управление потоком на основе кода возврата.
Разбор:
синтаксические ошибки
Интерактивные подсказки:
продолжение строки
Расширение переменной:
Примечание: может вызвать синтаксические ошибки во время выполнения.
Перенаправление:
ЗДЕСЬ документы (парсинг)
Конвейеры (управление потоком и управление заданиями)
Запуск команд:
состояние процесса
встроенные модули
CD [[ ]] (( ))
! : [ # TODO: помочь этим?
true false help echo kill printf pwd test
дочерние процессы
Контроль работы:
& Фоновый процесс
Ctrl-C убить процесс
Ctrl-Z приостановить процесс
bg fg рабочие места убить
Управление потоком:
; Оператор End (то же, что и новая строка)
& Фоновый процесс (возвращает true, если не возникает синтаксическая ошибка)
&& Если это не удается, следующая команда завершается с ошибкой без выполнения
|| Если это удается, следующая команда выполняется без запуска
| Трубопроводы! (Банка червей...)
for {name [in...]}|((;;)) do; ТЕЛО; сделанный
если ТЕСТ; затем ТЕЛО; фи
пока ТЕСТ; сделать ТЕЛО; сделанный
случай а в X);; эсак
[[ ТЕСТ ]]
((МАТЕМА))
Контроль работы:
& Фоновый процесс
Ctrl-C убить процесс
Ctrl-Z приостановить процесс
bg fg рабочие места убить
# Они здесь для текста справки, их нельзя выбрать и они ничего не контролируют
usage: sh [-c command] [script]
Command shell. Runs a shell script, or reads input interactively
and responds to it. Roughly compatible with "bash". Run "help" for
list of built-in commands.
-c command line to execute
-i interactive mode (default when STDIN is a tty)
-s don't run script (args set $
Command shells parse each line of input (prompting when interactive), perform
variable expansion and redirection, execute commands (spawning child processes
and background jobs), and perform flow control based on the return code.
Parsing:
syntax errors
Interactive prompts:
line continuation
Variable expansion:
Note: can cause syntax errors at runtime
Redirection:
HERE documents (parsing)
Pipelines (flow control and job control)
Running commands:
process state
builtins
cd [[ ]] (( ))
! : [ # TODO: help for these?
true false help echo kill printf pwd test
child processes
Job control:
& Background process
Ctrl-C kill process
Ctrl-Z suspend process
bg fg jobs kill
Flow control:
; End statement (same as newline)
& Background process (returns true unless syntax error)
&& If this fails, next command fails without running
|| If this succeeds, next command succeeds without running
| Pipelines! (Can of worms...)
for {name [in...]}|((;;)) do; BODY; done
if TEST; then BODY; fi
while TEST; do BODY; done
case a in X);; esac
[[ TEST ]]
((MATH))
Job control:
& Background process
Ctrl-C kill process
Ctrl-Z suspend process
bg fg jobs kill
# These are here for the help text, they're not selectable and control nothing
cd
usage: cd [-PL] [-] [path]
Изменить текущий каталог. Без аргументов идите $HOME. Устанавливает $OLDPWD в
предыдущий каталог: cd - вернуться в $OLDPWD.
-P Физический путь: разрешить символические ссылки в пути
-L Локальный путь: .. обрезать каталоги $PWD (по умолчанию)
usage: cd [-PL] [-] [path]
Change current directory. With no arguments, go $HOME. Sets $OLDPWD to
previous directory: cd - to return to $OLDPWD.
-P Physical path: resolve symlinks in path
-L Local path: .. trims directories off $PWD (default)
declare
usage: declare [-pAailunxr] [NAME...]
Установите или распечатайте атрибуты и значения переменных.
-p Печатать переменные вместо установки
-A Ассоциативный массив
-a Индексированный массив
-i Целое
-l Нижний регистр
-n Ссылка на имя (символическая ссылка)
-r Только для чтения
-u Верхний регистр
-x Экспорт
usage: declare [-pAailunxr] [NAME...]
Set or print variable attributes and values.
-p Print variables instead of setting
-A Associative array
-a Indexed array
-i Integer
-l Lower case
-n Name reference (symlink)
-r Readonly
-u Uppercase
-x Export
exit
usage: exit [status]
Выход из оболочки. Если в командной строке не указано возвращаемое значение, используйте значение
последней команды или 0, если нет.
usage: exit [status]
Exit shell. If no return value supplied on command line, use value
of most recent command, or 0 if none.
set
usage: set [+a] [+o OPTION] [VAR...]
Установите переменные и атрибуты оболочки. Используйте + для отключения и - для включения.
Аргументы ИМЯ=ЗНАЧЕНИЕ назначают переменной, любые остатки устанавливают $1, $2...
Без аргументов выводит текущие переменные.
-f ИМЯ — это функция.
-v ИМЯ — это переменная.
-n Не следуйте ссылке на имя.
Параметры:
история - включить историю команд
usage: set [+a] [+o OPTION] [VAR...]
Set variables and shell attributes. Use + to disable and - to enable.
NAME=VALUE arguments assign to the variable, any leftovers set $1, $2...
With no arguments, prints current variables.
-f NAME is a function
-v NAME is a variable
-n don't follow name reference
OPTIONs:
history - enable command history
unset
usage: unset [-fvn] NAME...
-f ИМЯ — это функция.
-v ИМЯ — переменная
-n , разыменовывающая ИМЯ.
usage: unset [-fvn] NAME...
-f NAME is a function
-v NAME is a variable
-n dereference NAME and unset that
eval
usage: eval COMMAND...
Выполнять (комбинированные) аргументы как команду оболочки.
usage: eval COMMAND...
Execute (combined) arguments as a shell command.
exec
usage: exec [-cl] [-a NAME] COMMAND...
-a установить argv[0] в NAME
-c очистить среду
-l перед argv[0]
usage: exec [-cl] [-a NAME] COMMAND...
-a set argv[0] to NAME
-c clear environment
-l prepend - to argv[0]
export
usage: export [-n] [NAME[=VALUE]...]
Сделайте переменные доступными для дочерних процессов. NAME экспортирует существующие локальные
переменные, ИМЯ=ЗНАЧЕНИЕ устанавливает и экспортирует.
-n Отменить экспорт. Превратите перечисленные переменные в локальные переменные.
Без списка аргументов экспортированные переменные/атрибуты как операторы «объявления».
usage: export [-n] [NAME[=VALUE]...]
Make variables available to child processes. NAME exports existing local
variable(s), NAME=VALUE sets and exports.
-n Unexport. Turn listed variable(s) into local variables.
With no arguments list exported variables/attributes as "declare" statements.
jobs
usage: jobs [-lnprs] [%JOB | -x COMMAND...]
Список запущенных/остановленных фоновых заданий.
-l Включить идентификатор процесса в список
-n Показать только новые/измененные процессы
-p Показать только идентификаторы процессов
-r Показать запущенные процессы
-s Показать остановленные процессы
usage: jobs [-lnprs] [%JOB | -x COMMAND...]
List running/stopped background jobs.
-l Include process ID in list
-n Show only new/changed processes
-p Show process IDs only
-r Show running processes
-s Show stopped processes
local
usage: local [NAME[=VALUE]...]
Создайте локальную переменную, которая существует до возврата из этой функции.
Без аргументов перечисляет локальные переменные в контексте текущей функции.
TODO: реализовать опции «объявить».
usage: local [NAME[=VALUE]...]
Create a local variable that lasts until return from this function.
With no arguments lists local variables in current function context.
TODO: implement "declare" options.
shift
usage: shift [N]
Пропустить N (по умолчанию 1) позиционных параметров, перемещая $1 и друзей по списку.
Не влияет на $0.
usage: shift [N]
Skip N (default 1) positional parameters, moving $1 and friends along the list.
Does not affect $0.
source
usage: source FILE [ARGS...]
Чтение ФАЙЛА и выполнение команд. Любые ARGS становятся позиционными параметрами.
usage: source FILE [ARGS...]
Read FILE and execute commands. Any ARGS become positional parameters.
wait
usage: wait [-n] [ID...]
Подождите, пока фоновые процессы завершатся, вернув код выхода.
Идентификатор может быть PID или заданием, без идентификаторов, ожидающих всех фоновых процессов.
-n Дождитесь завершения следующего процесса
usage: wait [-n] [ID...]
Wait for background processes to exit, returning its exit code.
ID can be PID or job, with no IDs waits for all backgrounded processes.
-n Wait for next process to exit