Це команда posh, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.
ПРОГРАМА:
ІМ'Я
posh - Звичайна оболонка, що відповідає правилам
СИНТАКСИС
шикарний [+-aCefilnuvx] [+-o варіант]
[[-c командний рядок [ім'я команди] | -s | файл ] [аргумент...]]
ОПИС
шикарний є перереалізацією оболонки Борна, інтерпретатора команд для обох інтерактивних
і використання сценарію.
Склад Введення в експлуатацію
Наступні параметри можна вказати лише в командному рядку:
-c командний рядок
оболонка виконує команду(и), що міститься в командний рядок
-i
інтерактивний режим — див. нижче
-l
оболонка входу — див. нижче інтерактивний режим — див. нижче
-s
оболонка зчитує команди зі стандартного введення; всі аргументи без варіантів є позиційними
параметри
Крім перерахованого вище, варіанти, описані в комплект вбудована команда також може бути
використовується в командному рядку.
Якщо ні -c ні -s параметри вказані, перший аргумент без параметрів
вказує ім'я файлу, з якого оболонка читає команди; якщо немає варіантів
аргументів оболонка зчитує команди зі стандартного введення. Назва оболонки (тобто,
зміст $0) параметр визначається наступним чином: якщо -c Опція використовується і там
є аргументом без параметрів, він використовується як ім'я; якщо команди читаються з файлу,
файл використовується як ім'я; інакше ім'я, яким було викликано оболонку (тобто, argv[0])
використовується.
Оболонка є інтерактивний якщо -i використовується параметр або якщо і стандартний вхід, і стандартний
помилка додається до tty. Інтерактивна оболонка має увімкнений контроль завдань (якщо доступний),
ігнорує сигнали INT, QUIT і TERM і друкує підказки перед читанням введених даних (див. PS1
та PS2 параметри).
Оболонка є привілейовані якщо -p використовується параметр, або якщо реальний ідентифікатор користувача або ідентифікатор групи ні
відповідати ефективному ідентифікатору користувача або ідентифікатору групи (див getuid(2) getgid(2)). Привілейована оболонка
не обробляє $HOME/.profile. Замість цього обробляється файл /etc/suid_profile. Очищення
привілейований параметр змушує оболонку встановити свій ефективний ідентифікатор користувача (ідентифікатор групи) на його реальний
ID користувача (ідентифікатор групи).
Якщо базова назва імені, оболонка викликається за допомогою (тобто, argv[0]) починається з - або якщо
-l використовується параметр, оболонка вважається оболонкою входу, а оболонка читає і
виконує вміст / тощо / профіль і $HOME/.profile, якщо вони існують і читабельні.
Статус завершення оболонки дорівнює 127, якщо файл команди вказано в командному рядку
не може бути відкритий, або відмінний від нуля, якщо під час виконання сталася фатальна синтаксична помилка
сценарій. За відсутності фатальних помилок статус виходу є статусом останньої команди
виконується або нуль, якщо жодна команда не виконується.
Command синтаксис
Оболонка починає аналізувати введені дані, розбиваючи їх на слова. Слова, які є послідовностями
символів, розділені пробілами без лапок (пробілом, табуляцією та новим рядком)
або метасимволи (<, >, |, ;, &, ( і )). Окрім розмежування слів, пробілів та табуляції
ігноруються, тоді як символи нового рядка зазвичай розмежовують команди. Метасимволи використовуються в
створення таких маркерів: <, <&, <<, >, >&, >> тощо використовуються для визначення перенаправлень
(див. Перенаправлення введення/виводу нижче); | використовується для створення трубопроводів; ; використовується для відокремлення
команди; & використовується для створення асинхронних конвеєрів; && та || використовуються для вказівки
умовне виконання; ;; використовується в заявах про справи; і, нарешті, ( ... ) звикли
створювати підоболонки.
Пробіли та метасимволи можна вводити в лапки окремо за допомогою зворотної косої риски (), або в
групи, які використовують подвійний (") або одиночний (') цитати. Зверніть увагу, що наступні символи також є
оброблені оболонкою спеціально і повинні бути процитовані, якщо вони хочуть представляти себе: ,
", ', #, $, `, ~, {, }, *, ? та [. Перші три з них - це вищезазначені
символи цитування (див. Цитування нижче); #, якщо вживається на початку слова, вводить
коментар — усе після # до найближчого нового рядка ігнорується; $ використовується
ввести параметри, команди та арифметичні заміни (див. Підстановка нижче); `
вводить заміну команд старого стилю (див. Підстановка нижче); ~ починається а
розширення каталогу (див. Розширення Tilde нижче); { та } розмежувати CSH(1) чергування стилів
(див. Розширення брекетів нижче); і, нарешті, *, ? та [ використовуються при генерації імен файлів
(див. Шаблони імен файлів нижче).
Коли слова та лексеми аналізуються, оболонка створює команди, з яких є дві основні
типи: прості команди, як правило, програми, які виконуються, і складені-команди, такий
as та цінності та if висловлювання, групування конструкцій та визначення функцій.
Проста команда складається з деякої комбінації призначень параметрів (див. Параметри
нижче), переспрямування введення/виводу (див. Перенаправлення введення/виводу нижче) та команди
слова; єдине обмеження полягає в тому, що призначення параметрів стоїть перед будь-якими командними словами.
Командні слова, якщо такі є, визначають команду, яку потрібно виконати, та її аргументи.
Команда може бути вбудованою командою оболонки, функцією або командою зовнішній команда, тобто, то
окремий виконуваний файл, розташований за допомогою PATH параметр (див. Виконання команди
нижче). Зауважте, що всі командні конструкції мають вихід статус: для зовнішніх команд це
пов’язано зі статусом, який повертає чекати(2) (якщо команду не вдалося знайти, вихід
статус 127, якщо його не вдалося виконати, статус виходу 126); статус виходу
інші командні конструкції (вбудовані команди, функції, складені команди, конвеєри,
списки, і т.п.) всі чітко визначені та описані там, де описана конструкція. The
Статус виходу команди, що складається лише з призначень параметрів, є останньою
підстановка команд, що виконується під час призначення параметра, або нуль, якщо їх немає
заміни команд.
Команди можна об’єднати разом за допомогою | токен для формування трубопроводи, в якій
стандартний вихід кожної команди, але остання передається по каналу (див труба(2)) до стандартного введення
наступної команди. Статус виходу конвеєра є статусом його останньої команди. А
конвеєр може мати префікс ! зарезервовано слово, яке викликає статус виходу
конвеєр, який має бути логічно доповненим: якщо початковий статус був 0, то доповнений
статус буде 1, а якщо початковий статус був не 0, то доповнений статус буде
бути 0.
списки команд можна створити, розділивши конвеєри будь-яким із наступних маркерів:
&&, ||, &, |& та ;. Перші два призначені для умовного виконання: cmd1 && cmd2 виконує
cmd2 тільки за умови виходу статусу cmd1 дорівнює нулю; || є навпаки - cmd2 виконується тільки
якщо статус виходу з cmd1 дорівнює нулю. && та || мають рівний пріоритет, який вищий
ніж цей &, |& та ;, які також мають рівний пріоритет. The & маркер викликає
попередня команда повинна виконуватися асинхронно, тобто оболонка запускає команду,
але не чекає його завершення (оболонка відстежує стан
асинхронні команди — див. Керування завданнями нижче). Коли запускається асинхронна команда
коли контроль роботи вимкнено (тобто, у більшості скриптів), команда запускається з сигналів
INT і QUIT ігноруються, а вхід перенаправляється з /dev/null (однак переспрямування
зазначені в асинхронній команді мають пріоритет). Зауважте, що має слідувати команда
&& та || операторів, тоді як команда не обов'язково повинна виконуватися &, |& та ;. Вихідний статус a
list — це команда, виконана останньою, за винятком асинхронних списків, for
статус виходу якого дорівнює 0.
Складені команди створюються за допомогою наступних зарезервованих слів — лише ці слова
розпізнається, якщо вони не в лапках і якщо вони використовуються як перше слово команди (тобто,
їм не можуть передувати призначення параметрів або перенаправлення):
випадок ще
зробити esac, якщо час [[
виконано до {
elif для select while }
Примітка: Деякі оболонки (але не ця) виконують команди структури керування в підоболонці, коли
один або кілька їхніх файлових дескрипторів перенаправляються, тому будь-яке середовище змінюється всередині
вони можуть вийти з ладу. Щоб бути портативним, Exec замість цього слід використовувати оператор для перенаправлення файлу
дескриптори перед структурою керування.
У наступних описах складених команд списки команд (позначаються як список) які
після яких зарезервовані слова мають закінчуватися крапкою з комою, новим рядком або (синтаксично
правильне) заповідне слово. Наприклад,
{ нудьгувати foo; нудьгувати бар; }
{ нудьгувати foo; нудьгувати бар }
{ { нудьгувати foo; нудьгувати бар; } } всі дійсні, але
{ нудьгувати foo; нудьгувати бар } не.
( список )
Виконати список у підоболонці. Не існує неявного способу передачі змін середовища
підоболонку назад до її батьківського.
{ список }
Складена конструкція; список виконується, але не в підоболонці. Зауважте, що { та } він має
зарезервовані слова, а не метасимволи.
випадок слово in [ [(] модель [| модель] ... ) список ;; ] ... що С
Команда випадок висловлювання намагається відповідати слово проти зазначеного модельs; в список
пов’язаний з першим успішно збіганим шаблоном, виконується. Візерунки, використані в
випадок оператори такі ж, як і для шаблонів імен файлів, за винятком того, що
обмеження щодо . та / скидаються. Зауважте, що будь-який пробіл без лапок перед і
після того, як візерунок знятий; будь-який простір із візерунком необхідно вводити в лапки. Обидва слова
і шаблони підлягають підстановці параметрів, команд та арифметики як
а також заміна тильди. З історичних причин можна використовувати відкриті та закриті дужки
замість in та що С (наприклад, випадок $foo { *) нудьгувати бар; }). Вихідний статус a випадок
заява є те, що виконано список; якщо ні список виконується, статус виходу є
нуль.
та цінності ім'я [ in слово ... термін ] do список зроблений
де термін є або новим рядком, або a ;. Для кожного слово у зазначеному списку слів, the
параметр ім'я встановлюється на слово і список виконується. Якщо in не використовується для визначення a
список слів, позиційні параметри ("$1", "$2", і т.п.) використовуються замість них. Для
з історичних причин замість них можна використовувати відкриті та закриті дужки do та зроблений (наприклад,
та цінності i; { нудьгувати $i; }). Вихідний статус a та цінності оператор є останнім статусом виходу
список; якщо список ніколи не виконується, статус виходу дорівнює нулю.
if список потім список [Еліф список потім список] ... [ще список] fi
Якщо статус виходу перший список дорівнює нулю, другий список виконується; інакше
список після Еліф, якщо такий є, виконується з подібними наслідками. Якщо всі
списки, наступні за if та Еліфневдача (тобто, вихід із ненульовим статусом), the список
після ще виконується. Вихідний статус an if твердження є те, що
безумовний список що виконується; якщо немає безумовного список виконується,
статус виходу дорівнює нулю.
до список do список зроблений
Це працює так в той час як, за винятком того, що тіло виконується лише під час статусу виходу
перший список дорівнює нулю.
в той час як список do список зроблений
A в той час як є попередньо перевіреним циклом. Його тіло виконується так само часто, як і вихідний статус
перший список дорівнює нулю. Вихідний статус a в той час як оператор є останнім статусом виходу
список в тілі петлі; якщо тіло не виконується, статус виходу є
нуль.
ім'я () команда
Визначає функцію ім'я. Дивіться функції нижче. Зауважте, що переспрямування вказані після
визначення функції виконується щоразу, коли функція виконується, а не коли
Виконується визначення функції.
час [ -p ] [ трубопровід ]
Команда час зарезервоване слово описано в розділі Виконання команд.
Цитувати
Цитати використовуються для запобігання тому, щоб оболонка спеціально обробляла символи або слова. Там
є три методи цитування: по-перше, цитує наступний символ, якщо він не знаходиться в
кінець рядка, у цьому випадку обидва і новий рядок видаляються. По-друге, одиночний
цитата (') бере все в лапки до наступної одинарної лапки (це може охоплювати рядки). По-третє, а
подвійні лапки (") містить у лапках усі символи, крім $, ` та , до наступного подвійного без лапок
цитата. $ та ` усередині подвійні лапки мають своє звичайне значення (тобто, параметр, команда або
арифметична підстановка), за винятком того, що за результатами не виконується розщеплення поля
заміни в подвійних лапках. Якщо всередині рядка в подвійних лапках слідує , $, `
or ", він замінюється другим символом; якщо після нього йде новий рядок, обидва
і новий рядок видаляються; інакше обидва і наступний персонаж
незмінний.
Примітка: дивіться нижче режим POSIX для спеціального правила щодо послідовностей форми
"...`...\"...`..".
Заміна
Перший крок, який виконує оболонка під час виконання простої команди, — це виконання замін
за словами наказу. Існує три види заміни: параметр, команда та
арифметика. Підстановки параметрів, які детально описані в наступному розділі,
прийняти форму $name or ${...}; командні заміни мають вигляд $(команда) or
`команда`; а арифметичні заміни набувають вигляду $((вираз)).
Якщо заміна з’являється за межами подвійних лапок, результати заміни є такими
зазвичай підлягає поділу слів або полів відповідно до поточного значення IFS
параметр. The IFS Параметр визначає список символів, які використовуються для розриву a
укласти в кілька слів; будь-які символи із встановленого пробілу, табуляції та нового рядка
з'являються в IFS символи викликаються IFS білий простір. Послідовності одного або кількох IFS
пробіли в поєднанні з нулем або одним пробілом, що не відповідає стандарту IFS
розмежувати поле. Як особливий випадок, початковий і кінцевий пробіл IFS видаляється
(тобто, не створюється початкове або кінцеве порожнє поле); лідируючі або завершуючі не IFS
пробіл створює порожнє поле. Приклад: якщо IFS встановлено на ` :', послідовність
символів ` А : B::D містить чотири поля: `A', `B', `' та
`D'. Зауважте, що якщо IFS для параметра встановлено нульовий рядок, розділення поля не виконується;
якщо параметр не встановлено, використовується стандартне значення пробілу, табуляції та нового рядка.
Результати заміни, якщо не зазначено інше, також підлягають підвіски
розширення та розширення імені файлу (див. відповідні розділи нижче).
Підстановка команди замінюється результатом, згенерованим зазначеною командою, яка
виконується у підоболонці. Для $(команда) заміни, звичайні правила цитування використовуються, коли
команда однак аналізується для `команда` форма, а слідує будь-який з $, ` or is
роздягнений (а за яким слідує будь-який інший символ, не змінюється). Як особливий випадок у команді
заміни, команда форми < файл інтерпретується як заміна вмісту
of файл ($(< foo) має той же ефект, що і $(cat foo), але виконується більше
ефективно, оскільки процес не запускається).
ПРИМІТКА: $(команда) вирази зараз аналізуються шляхом пошуку відповідних дужок,
незалежно від цитування. Сподіваємось, це буде виправлено найближчим часом.
Арифметичні підстановки замінюються значенням зазначеного виразу. Для
наприклад, команда нудьгувати $((2+3*4)) друкує 14. Див. арифметичні вирази для a
опис an вираз.
параметри
Параметри є змінними оболонки; їм можуть бути присвоєні значення, і їх значення можуть бути
доступ за допомогою підстановки параметрів. Ім'я параметра є одним із спеціальних
параметри одиничного пунктуації чи цифри, описані нижче, або літера, за якою слід
нуль або більше літер або цифр (`_' вважається літерою). Пізнішу форму можна розглядати як
масиви шляхом додавання індексу масиву у формі: [експр] де експр це арифметика
вираз. Наразі індекси масиву обмежені діапазоном від 0 до 1023 включно.
Підстановки параметрів мають вигляд $ім'я, ${ім'я} or ${ім'я[експр]}, Де ім'я це
ім'я параметра. Якщо підстановка виконується для параметра (або параметра масиву
елемент), який не встановлено, нульовий рядок замінюється, якщо не іменник опція (комплект -o
іменник or комплект -u) встановлено, у цьому випадку виникає помилка.
Параметрам можна присвоювати значення кількома способами. По-перше, оболонка неявно встановлюється
деякі параметри, як #, PWD, тощо; це єдиний спосіб спеціальний одиночний символ
параметри встановлюються. По-друге, параметри імпортуються з середовища оболонки за адресою
стартап. По-третє, параметрам можна призначати значення в командному рядку, наприклад,
`FOO=бар' встановлює для параметра FOO значення bar; для a
єдиний командний рядок, і за ними може слідувати проста команда, у цьому випадку
призначення діють лише на час виконання команди (такі призначення також
експортовано, про наслідки цього див. нижче). Зауважте, що і ім’я параметра, і ім’я параметра =
має бути не в лапках, щоб оболонка розпізнала призначення параметрів. Четвертий спосіб
встановлення параметра здійснюється за допомогою експорт та лише для читання команди; дивіться їхні описи в
розділ Виконання команд. по-п'яте, та цінності та вибрати цикли задають параметри, а також параметри
getopts, зчитування та комплект -A команди. Нарешті, параметрам можна призначати значення за допомогою
оператори присвоєння всередині арифметичних виразів (див. арифметичні вирази нижче) або
використання ${ім'я=значення} форма підстановки параметрів (див. нижче).
Параметри з атрибутом експорту (встановлюються за допомогою експорт командою або за параметром
призначення, за якими слідують прості команди) поміщаються в середовище (див про(5)) з
команди, що запускаються оболонкою як ім'я=значення пари. Порядок, у якому параметри відображаються в
середовище команди не вказано. Коли оболонка запускається, вона витягує параметри
та їх значення зі свого середовища та автоматично встановлює атрибут експорту для
ці параметри.
Модифікатори можна застосувати до ${ім'я} форма заміни параметра:
${ім'я:-слово}
if ім'я встановлюється і не є нульовим, він замінюється, інакше слово замінюється.
${ім'я:+слово}
if ім'я встановлено і не є нульовим, слово замінюється, інакше нічого не замінюється.
${ім'я:=слово}
if ім'я встановлюється і не має значення null, він замінюється, інакше він призначається слово і
результуюче значення ім'я замінюється.
${ім'я:?слово}
if ім'я встановлюється і не є нульовим, він замінюється, інакше слово друкується за стандартом
помилка (перед ім'я:) і виникає помилка (зазвичай спричиняє завершення роботи оболонки
сценарій, функція або .-скрипт). Якщо слово опущено, рядок `параметр нульовий чи ні
замість нього використовується set'.
У наведених вище модифікаторах, : можна опустити, і в цьому випадку умови залежать лише від
ім'я встановлюється (на відміну від set, а не null). Якщо слово необхідний параметр, команда,
на ньому виконуються арифметика та підстановка тильди; якщо слово не потрібен, це не так
оцінюється.
Також можна використовувати такі форми підстановки параметрів:
${#ім'я}
Кількість позиційних параметрів якщо ім'я is *, @ або не вказано, або довжина
рядкового значення параметра ім'я.
${#ім'я[*]}, ${#ім'я[@]}
Кількість елементів у масиві ім'я.
${ім'я#модель}, ${ім'я##модель}
If модель відповідає початку значення параметра ім'я, відповідний текст є
видалено з результату заміни. Одинокий # результати в найкоротшому матчі, два
#Результати 's у найдовшому матчі.
${ім'я%модель}, ${ім'я%%модель}
Люблю ${..#..} заміна, але вона видаляє з кінця значення.
Наступні спеціальні параметри неявно встановлюються оболонкою і не можуть бути встановлені
безпосередньо використовуючи завдання:
!
Ідентифікатор процесу останнього запущеного фонового процесу. Якщо немає фонових процесів
запущено, параметр не встановлено.
#
Кількість позиційних параметрів (тобто, $1, $2, і т.п.).
$
Ідентифікатор процесу оболонки або PID вихідної оболонки, якщо вона є підоболонкою.
-
Конкатенація поточних варіантів однієї літери (див комплект команда нижче для списку
варіантів).
?
Статус виходу останньої виконаної неасинхронної команди. Якби остання команда була
вбитий сигналом, $? встановлено на 128 плюс номер сигналу.
0
Ім'я, з яким було викликано оболонку (тобто, argv [0]), або ім'я команди якщо це було
викликається з -c варіант і ім'я команди було поставлено, або файл аргумент, якщо
воно було надано. Якщо posix параметр не встановлено, $0 це назва поточної
функція або сценарій.
1 ... 9
Перші дев'ять позиційних параметрів, які були передані в оболонку, функцію або
.- сценарій. Доступ до інших параметрів позиції можна отримати за допомогою ${число}.
*
Усі параметри позиції (крім параметра 0), тобто, $1 $2 $3.... Якщо використовується поза
подвійні лапки, параметри – окремі слова (які піддаються розщепленню слів);
якщо використовуються в подвійних лапках, параметри відокремлюються першим символом
IFS параметр (або порожній рядок if IFS є нульовим).
@
Такий же, як $*, якщо він не використовується в подвійних лапках, у цьому випадку окреме слово
генерується для кожного параметра позиції – якщо параметрів позицій немає, ні
генерується слово ("$@" можна використовувати для доступу до аргументів, дослівно, без втрати
нульові аргументи або розділення аргументів пробілами).
Наступні параметри встановлюються та/або використовуються оболонкою:
"CDPATH"
Шлях пошуку для cd вбудована команда. Працює так само, як PATH для тих
каталоги, які не починаються з / in cd команди. Зауважте, що якщо CDPATH встановлено і робить
не містять . ні порожній шлях, поточний каталог не шукається.
КОЛОНИ
Установіть кількість стовпців у терміналі або вікні. Наразі встановлено на нашийники
вартість згідно з повідомленням stty(1), якщо це значення відмінне від нуля. Цей параметр використовується
інтерактивні режими редагування рядків, а також за вибрати, комплект -o та вбивати -l команди для форматування
інформація в колонках.
ERRNO
Ціле значення змінної errno оболонки — вказує причину останньої системи
виклик не вдалося.
Ще не реалізовано.
EXECSHELL
Якщо встановлено, передбачається, що цей параметр містить оболонку, яка буде використовуватися для виконання
наказує це execve(2) не виконується і які не починаються з `#! оболонка'
послідовність.
FCEDIT
Редактор, яким користується fc команду (див. нижче).
FPATH
Люблю PATH, але використовується, коли виконується невизначена функція, щоб знайти файл, що визначає
функція. Він також шукається, коли команду не можна знайти за допомогою PATH, Побачити
Функції нижче для отримання додаткової інформації.
ГОЛОВНА
Каталог за замовчуванням для cd команда та значення, замінене на некваліфікований
~ (див. Розширення Tilde нижче).
IFS
Внутрішній роздільник полів, що використовується під час заміни та зчитування командувати, розколювати
значення на окремі аргументи; зазвичай встановлюється пробіл, табуляція та новий рядок. Подивитися
Заміна вище для деталей.
Примітка: цей параметр не імпортується із середовища під час запуску оболонки.
POSH_VERSION
Версія posh (лише для читання).
LINENO
Номер рядка функції або сценарію оболонки, який зараз виконується.
ЛІНІЇ
Установіть кількість рядків на терміналі або вікні.
Ще не реалізовано.
OLDPWD
Попередній робочий каталог. Скасувати, якщо cd не успішно змінив каталоги
з моменту запуску оболонки, або якщо оболонка не знає, де вона знаходиться.
OPTARG
При використанні getopts, він містить аргумент для розібраного параметра, якщо він потребує.
OPTIND
Індекс останнього аргументу, обробленого під час використання getopts. Присвоїти цьому 1
Параметр причини getopts щоб обробити аргументи з початку наступного разу
викликається.
PATH
Список каталогів, розділених двокрапкою, які шукають під час пошуку команд і
.'d файли. Порожній рядок, що є результатом передньої або кінцевої двокрапки, або двох сусідніх
двокрапки розглядається як `.', поточний каталог.
PPID
Ідентифікатор процесу батьківської оболонки (лише читання).
PS1
Основна підказка для інтерактивних оболонок. Підказка друкується дослівно (тобтоВ
заміни проводяться). За замовчуванням для користувачів, які не мають права root, є '$ '# ' для root..
PS2
Додатковий рядок підказки, за замовчуванням `> ', використовується, коли для завершення a
команда
PS4
Використовується для префікса команд, які друкуються під час трасування виконання (див комплект -x команда
нижче). Підказка друкується дослівно (тобто, заміни не проводяться). За замовчуванням є
`+ '.
PWD
Поточний робочий каталог. Можливо, unset або null, якщо оболонка не знає, де вона знаходиться.
ВІДПОВІДЬ
Параметр за замовчуванням для зчитування команду, якщо назви не вказано. Також використовується в вибрати
цикли для збереження значення, зчитованого зі стандартного введення.
TMPDIR
У оболонці каталогу створюються тимчасові файли. Якщо цей параметр не встановлено, або
не містить абсолютного шляху до каталогу, доступного для запису, тимчасові файли
створено в /tmp.
тильда Розширення
Розгортання тильди, яке виконується паралельно із заміною параметрів, виконується на словах
починаючи з нецитованого ~. Символи, що йдуть за тильдою, аж до першого /, Якщо
any, вважається ім’ям для входу. Якщо ім’я для входу порожнє, + or -, значення
ГОЛОВНА, PWDабо OLDPWD параметр замінюється відповідно. В іншому випадку файл паролів
виконується пошук імені входу, а вираз тильди замінюється на ім’я користувача
домашній каталог. Якщо ім'я для входу не знайдено у файлі паролів або якщо в цитатах або
Підміна параметра відбувається в імені входу, заміна не виконується.
У призначеннях параметрів (тих, що передують простій команді або тих, що зустрічаються в
аргументи псевдонім, експорт та лише для читання, розгортання тильди виконується після будь-якого двокрапки без лапок
(:), а імена для входу також розділяються двокрапками.
Домашній каталог з раніше розширеними іменами входу кешуються та повторно використовуються. The псевдонім -d
команду можна використовувати для відображення, зміни та додавання до цього кешу (наприклад, `псевдонім -d
fac=/usr/local/facilities; cd ~fac/bin').
Файл ІМ'Я Шаблони
Шаблон назви файлу — це слово, яке містить одне або кілька без лапок ? or * символи або [..]
послідовності. Після розширення дужки оболонка замінює шаблони імен файлів
із відсортованими іменами всіх файлів, які відповідають шаблону (якщо жоден файл не відповідає, слово
залишається без змін). Елементи візерунка мають таке значення:
"?"
відповідає будь-якому окремому символу.
*
відповідає будь-якій послідовності символів.
[..]
відповідає будь-якому з символів у дужках. Діапазони символів можуть бути
визначається розділенням двох символів символом a -, наприклад, [a0-9] відповідає букві a or
будь-яка цифра. Щоб представити себе, а - має бути цитований або перший або
останній символ у списку символів. Так само, а ] має бути процитований або перший
символ у списку, якщо він представляє себе замість кінця списку. також,
a ! що з'являється на початку списку, має особливе значення (див. нижче), тому до
представляти себе, його необхідно процитувати або з'явитися пізніше в списку.
[!..]
як [..], за винятком того, що він відповідає будь-якому символу, який не міститься в дужках.
Зауважте, що наразі posh ніколи не відповідає . і .., але оригінальні ksh, Bourne sh і bash
зробити, тому це, можливо, доведеться змінити (надто погано).
Зауважте, що жоден із наведених вище елементів шаблону не відповідає ні крапці (.) на початку a
ім'я файлу або косу риску (/), навіть якщо вони явно використовуються в a [..] послідовність; також,
імена . і .. ніколи не збігаються, навіть за зразком .*.
Класи символів POSIX (тобто, [:ім'я класу:] всередині а [..] вираз) ще немає
здійснено.
Введення-виведення Redirection
Коли команда виконується, її стандартний введення, стандартний висновок і стандартна помилка (файл
дескриптори 0, 1 і 2 відповідно) зазвичай успадковуються від оболонки. Три
винятком з цього є команди в конвеєрах, для яких стандартний введення та/або стандарт
вихід — це ті, які налаштовані конвеєром, асинхронні команди, створені під час керування завданнями
вимкнено, для якого стандартне введення спочатку встановлено як /dev/null, а команди для
для якого вказано будь-яке з наступних перенаправлень:
"> файл"
стандартний вихід перенаправляється на файл. Якщо файл не існує, воно створюється; якщо це
існує, є звичайним файлом і noclobber встановлено, виникає помилка,
інакше файл обрізається. Зауважте, що це означає команду CMD < Foo > Foo волі
відкрити Foo для читання, а потім обрізати його, коли він відкриває його для запису, раніше CMD
отримує можливість насправді читати Foo.
">| файл"
так само, як >, за винятком того, що файл обрізається, навіть якщо noclobber опція встановлена.
">> файл"
так само, як >, за винятком файлу, до якого додається наявний файл замість того, щоб його обрізати.
Крім того, файл відкривається в режимі додавання, тому запис завжди йде в кінець файлу
(Див. відкрити(2)).
"< файл"
стандартний вхід перенаправляється з файл, яка відкрита для читання.
"<> файл"
так само, як <, за винятком того, що файл відкривається для читання та запису.
"<< маркер"
після прочитання командного рядка, що містить таке переспрямування (тут називається a
document), оболонка копіює рядки з джерела команди у тимчасовий файл доки
відповідність рядка маркер читається. Коли команда виконується, стандартний вхід
перенаправлено з тимчасового файлу. Якщо маркер не містить символів у лапках,
вміст тимчасового файлу щоразу обробляється так, ніби він береться в подвійні лапки
команда виконується, тому параметри, команда та арифметичні заміни є
виконується разом із зворотною косою рискою () втікає за $, `, та \новий рядок. Якщо тут кілька
документи використовуються в одному командному рядку, вони зберігаються в порядку.
"<<- маркер"
так само, як <<, за винятком того, що провідні вкладки вилучаються з рядків у документі тут.
"<& fd"
стандартний вхід дублюється з дескриптора файлу fd. fd може бути одноцифровим,
вказує номер існуючого дескриптора файлу, букву p, вказуючи на
дескриптор файлу, пов'язаний з виводом поточного спільного процесу, або символом
-, що вказує, що стандартний вхід потрібно закрити.
">& fd"
так само, як <&, за винятком того, що операція виконується на стандартному виводі.
У будь-якому з наведених вище перенаправлень переспрямовується дескриптор файлу (тобто, стандарт
введення або стандартний висновок) може бути вказано явно, передуючи перенаправленню за допомогою a
однозначне число. Параметри, команди та арифметичні заміни, заміни тильди та (якщо
оболонка є інтерактивною) генерування імен файлів виконується на файл, маркер та
fd аргументи перенаправлень. Однак зауважте, що результати генерації будь-якого імені файлу
використовуються лише за умови збігу одного файлу; якщо збігається декілька файлів, слово з
Використовуються нерозгорнуті символи генерації імені файлу.
Для простих команд переспрямування можуть з’являтися в будь-якому місці команди, for
складені команди (if заяви, і т.п.), будь-які переспрямування мають відображатися в кінці.
Перенаправлення обробляються після створення конвеєрів і в тому порядку, в якому вони задані
як /foo/bar 2> & 1 > / dev / null | як -n надрукує помилку з номером рядка перед
його.
Арифметика Вирази
Всередині можна використовувати цілочисельні арифметичні вирази $((..)) вирази, внутрішній масив
посилання (наприклад, ім'я[експр]), як числові аргументи для тест команди та як значення
присвоєння цілого параметра.
Вираз може містити буквено-цифрові ідентифікатори параметрів, посилання на масиви та ціле число
константи і можуть поєднуватися з наступними операторами C (перераховані та згруповані в
збільшення порядку пріоритету).
Унарні оператори:
+ - ! ~ ++ --
Двійкові оператори:
,
= *= /= %= += -= << = >> = &= ^= |=
||
&&
|
^
&
== !=
< <= >= >
<< >>
+ -
* / %
Тернарний оператор:
?: (пріоритет одразу вище, ніж присвоєння)
Оператори групування:
( )
Цілі константи можуть бути задані з довільними основами за допомогою позначення база#номер,
де база це десяткове ціле число, що вказує основу, і номер є числом у
зазначена база.
Оператори оцінюються наступним чином:
«унарний +"
результатом є аргумент (включений для повноти).
«унарний -"
заперечення.
"!"
логічно ні; результат дорівнює 1, якщо аргумент дорівнює нулю, 0, якщо ні.
"~"
арифметика (порозрядна) ні.
"++"
приріст; необхідно застосувати до параметра (не літералу чи іншого виразу) - the
Параметр збільшується на 1. Якщо використовується як оператор префікса, результатом є
збільшене значення параметра, якщо використовується як постфіксний оператор, результатом є
вихідне значення параметра.
"++"
схожий на ++, за винятком того, що параметр зменшується на 1.
","
розділяє два арифметичні вирази; спочатку оцінюється ліва частина, а потім
правильно. Результатом є значення виразу з правого боку.
"="
доручення; змінної зліва встановлюється значення праворуч.
"*= /= %= += -= << = >> = &= ^= |="
оператори присвоєння; = те саме, що = ( ).
"||"
логічний або; результат дорівнює 1, якщо будь-який з аргументів відмінний від нуля, 0, якщо ні. Право
аргумент оцінюється, тільки якщо лівий аргумент дорівнює нулю.
"&&"
логічний і; результат дорівнює 1, якщо обидва аргументи відмінні від нуля, 0, якщо ні. Право
Аргумент оцінюється, тільки якщо лівий аргумент відмінний від нуля.
"|"
арифметика (порозрядна) або.
"^"
арифметичний (розрядний) виключний-або.
"&"
арифметика (порозрядна) і.
"=="
рівний; результат дорівнює 1, якщо обидва аргументи рівні, 0, якщо ні.
"!="
нерівні; результат дорівнює 0, якщо обидва аргументи рівні, 1, якщо ні.
"<"
менше ніж; результат дорівнює 1, якщо лівий аргумент менший за правий, 0, якщо ні.
"<= >= >"
менше або дорівнює, більше або дорівнює, більше ніж. Дивіться <.
"<< >>"
зсув вліво (вправо); результатом є лівий аргумент зі зміщеними бітами вліво (вправо)
на суму, зазначену в правильному аргументі.
"+ - * /"
додавання, віднімання, множення та ділення.
"%"
залишок; результатом є залишок від ділення лівого аргументу на
правильно. Знак результату не вказано, якщо будь-який з аргументів негативний.
" ? : "
if відмінний від нуля, результат такий В іншому випадку .
Функції
Функції визначаються за допомогою оболонки Bourne/POSIX ім'я() синтаксису. Функції схожі
.-скрипти в тому, що вони виконуються в поточному середовищі, однак, на відміну від .-скриптів,
аргументи оболонки (тобто, позиційні параметри, $1, і т.п.) ніколи не видно всередині них.
Коли оболонка визначає розташування команди, виконується пошук функцій
спеціальні вбудовані команди, і перед звичайними і нерегулярними вбудованими, і перед
PATH обшукується.
Існуючу функцію можна видалити за допомогою скасовано -f ім'я функції.
Оскільки функції виконуються в поточному середовищі оболонки, параметри призначаються
внутрішні функції відображаються після завершення функції.
Статус завершення функції — це статус останньої команди, виконаної у функції. А
можна зробити так, щоб функція завершилася негайно, використовуючи повертати команда; це також можна використовувати
щоб явно вказати статус виходу.
Command Виконання
Після оцінки аргументів командного рядка, перенаправлень і призначення параметрів,
Визначається тип команди: спеціальна вбудована, функція, звичайна вбудована або
ім'я файлу для виконання, знайденого за допомогою PATH параметр. Перевірки проводяться вище
замовлення. Спеціальні вбудовані команди відрізняються від інших команд тим, що PATH параметр є
не використовується для їх пошуку, помилка під час їх виконання може спричинити неінтерактивну оболонку
для виходу, а призначення параметрів, які вказані перед командою, зберігаються після
команда завершується. Щоб заплутати речі, якщо параметр posix вимкнено (див комплект
команди нижче) деякі спеціальні команди є дуже особливими, оскільки немає розділення поля, файл
globbing, розширення дужки або розширення тильди виконується для аргументів, які виглядають так
завдання. Звичайні вбудовані команди відрізняються лише тим, що PATH параметр є
не звик їх знаходити.
робота Контроль
Керування завданнями відноситься до здатності оболонки контролювати й контролювати роботи, які є процесами
або групи процесів, створених для команд або конвеєрів. Як мінімум, оболонка тримається
відстеження стану фону (тобто, асинхронні) завдання, які існують на даний момент; це
інформацію можна відобразити за допомогою роботи команда. Якщо контроль завдань повністю увімкнено
(З використанням комплект -m or комплект -o контролювати), як і для інтерактивних оболонок, процесів завдання
розміщуються у власній групі процесів, завдання на передньому плані можна зупинити, ввівши
призупинити символ із терміналу (зазвичай ^Z), завдання можна перезапустити в будь-якому файлі
переднього або заднього плану, використовуючи fg та bg команд, відповідно, і стан
термінал зберігається або відновлюється, коли завдання переднього плану зупиняється або перезапускається відповідно.
Зауважте, що лише команди, які створюють процеси (наприклад, асинхронні команди, підоболонка
команди, а також невбудовані, нефункціональні команди) можна зупинити; команди, як зчитування
не може бути.
Коли завдання створюється, йому присвоюється номер завдання. Для інтерактивних оболонок це число
надрукований всередині [..], за яким слідують ідентифікатори процесів процесів у роботі, коли an
виконується асинхронна команда. На роботу можна посилатися в bg, fg, роботи, вбивати та чекати
команди або за ідентифікатором процесу останнього процесу в конвеєрі команд (як збережено
в $! параметр) або додавши до номера завдання знак відсотка (%). Інший
Відсоткові послідовності також можна використовувати для позначення робочих місць:
%+ %+ Команда найбільш нещодавно зупинений робота, або, if
там він має немає зупинений робочі місця, найстаріший
біг роботу.
%%, % %%, % Такий же, як %+.
%- %- Робота, яка б
бути %+ робота, якщо
пізніший не зробив
існувати
%n %n Робота з
номер роботи n.
%?рядок %?рядок Робота, що містить
рядок рядок
(помилка виникає, якщо
кілька робочих місць
він має
збігаються).
%рядок %рядок Робота починається з
рядок рядок (помилка
виникає при кількох роботах
він має
збігаються).
Коли робота змінює стан (наприклад, фонове завдання закінчено або завдання переднього плану зупинено),
оболонка друкує таку інформацію про стан: [номер] прапор статус команда де
" номер"
– номер роботи.
" прапор"
is + or - якщо робота є %+ or %- робота, відповідно, або місце, якщо ні.
" статус"
вказує на поточний стан завдання і може бути
"Робота"
завдання не зупинилося або не вийшло (зауважте, що виконання не обов’язково означає
витрачає час процесора — процес може бути заблокований в очікуванні певної події).
"Зроблений [(номер)]"
робота вийшла. номер - це статус завершення завдання, який опускається, якщо статус
дорівнює нулю.
"Зупинено [(сигналізувати)]"
роботу було зупинено зазначеним сигналізувати (якщо сигнал не подано, робота була
зупинено SIGTSTP).
"сигнал-опис [(ядро скинули)]"
роботу вбив сигнал (наприклад, Несправність пам'яті, Відбій, і т.п. — використовувати вбивати -l для
список описів сигналів). The (ядро скинули) повідомлення вказує на створений процес
основний файл.
" команда"
це команда, яка створила процес. Якщо в роботі є кілька процесів,
тоді кожен процес матиме рядок, що показує його команда і, можливо, його статус, якщо це
відрізняється від статусу попереднього процесу.
Коли робиться спроба вийти з оболонки, коли є завдання в зупиненому стані, то
shell попереджає користувача про зупинені завдання і не виходить. Якщо буде ще одна спроба
негайно зроблено для виходу з оболонки, зупинені завдання надсилаються a HUP сигнал і снаряд
виходи. Аналогічно, якщо nohup параметр не встановлений, і є запущені завдання, коли an
робиться спроба вийти з оболонки входу, оболонка попереджає користувача і не виходить. Якщо
ще одна спроба негайно вийти з оболонки, запущені завдання надсилаються a HUP
сигнал і снаряд виходить.
Вбудований УТИЛІТИ
posh реалізує такі вбудовані утиліти:
·.
·:
· [
· перерву
· вбудований
· продовжувати
· оцінити
· викон
· вихід
· помилковий
· повернення
· комплект
· зміна
· рази
· пастка
· чекати
· читати
· тест
· правда
· умаска
· вимкнено
· кд
· команда
· відлуння
· експорт
· гетоптс
· вбити
· місцеві
· особа
· лише для читання
Використовуйте шикарний онлайн за допомогою служб onworks.net