Це команда yash, яку можна запустити в безкоштовному хостинг-провайдері OnWorks за допомогою однієї з наших безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
yash - POSIX-сумісна оболонка командного рядка
СИНТАКСИС
Яш [варіанти...] [--] [операнди...]
ВСТУП
Все-таки пильовик оболонка (yash) — оболонка командного рядка для UNIX-подібних операційних систем. Оболонка
відповідає стандарту POSIX.1-2008 (для більшості частин), і насправді більше
відповідає, ніж інші POSIX-сумісні оболонки. Крім того, він має багато особливостей, які є
використовується для інтерактивного використання, наприклад історії команд і редагування командного рядка.
Цю програму можна вільно модифікувати та поширювати згідно з умовами GNU General
Публічна ліцензія (Версія 2). Скористайтеся кнопкою of це більшість квитків вже розпродано! is всі at ваш власний ризик. Там is немає
гарантія та автор is НЕ відповідальний та цінності будь-який Наслідки викликаний by використання of це
програми.
Цей посібник можна вільно змінювати та поширювати згідно з умовами Creative Commons
Attribution-ShareAlike 2.1 Японія.
Yash розробляє та підтримує 渡邊裕貴 (WATANABE Yuki), він же Magicant. Яш
Проект розробки та домашня сторінка Yash розміщені на OSDN.
ІНВОКАЦІЯ
Коли yash викликається як програма, виконує попередньо визначені кроки ініціалізації та
багаторазово читає та виконує команди. Аргументи командного рядка, надані під час виклику
визначає, як оболонка ініціалізується та виконує команди.
Command лінія аргументація
Синтаксис аргументів командного рядка для yash відповідає POSIX. Як визначено в POSIX,
аргументи розділені на опції та операнди. Для більш детального пояснення про
опції та операнди, див. Синтаксис аргументів команди. Усі параметри мають бути перед операндами.
Інтерпретація операндів залежить від вказаних параметрів.
Коли ви вказуєте -c (--cmdline), ви повинні вказати принаймні один операнд. Оболонка
інтерпретує та виконує перший операнд як командний рядок. Другий операнд, якщо такий є,
використовується для ініціалізації 0 спеціальний параметр. Інші операнди, якщо такі є, використовуються
ініціалізувати позиційні параметри. Коли -c (--cmdline) вказано варіант, the
оболонка не читає жодного файлу або стандартного введення (якщо не використовується вбудована крапка).
Якщо ви вказали -s (--stdin), оболонка читає стандартний вхід, інтерпретує
вводити як команди та виконувати їх. Усі надані операнди використовуються для ініціалізації
позиційні параметри. The 0 спеціальний параметр ініціалізується назвою оболонки
викликається як.
Якщо ви не вкажете жодного -c (--cmdline) ні -s (--stdin), оболонка читає файл,
інтерпретує вміст файлу як команди та виконує їх. Перший операнд визначає
шлях до файлу. Решта операндів використовуються для ініціалізації позиційного
параметри. Якщо ви не вказуєте жодних операндів, оболонка читає стандартний вхідний текст так, ніби це
-s (--stdin) вказано параметр.
Ви не можете використовувати обидва -c (--cmdline) і -s (--stdin) варіантів за раз.
Якщо ви вкажете будь-який з --допомога or -- версія варіант, оболонка ніколи не виконує звичайні дії
ініціалізація або виконання команди. Замість цього він друкує лише коротке використання (для --допомога) Або
інформація про версію (для -- версія). Якщо -- версія опція супроводжується -v
(-багатослівний), оболонка також друкує список доступних додаткових функцій.
Якщо ви вказали -i (--інтерактивні) оболонка переходить в інтерактивний режим. Якщо
ви вказуєте +i (++інтерактивний) варіант, навпаки, оболонка ніколи не потрапляє в
інтерактивний режим.
Якщо ви вказали -l (--увійти), оболонка поводиться як оболонка входу.
Команда --непрофільний, --norcfile, --профіль та --rcfile Параметри визначають, як виглядає оболонка
ініціалізовано (подробиці див. нижче).
Окрім описаних вище параметрів, ви можете вказати параметри, які можна вказати
до набору вбудован.
Якщо перший операнд є - і параметри та операнди не розділені --,
перший операнд ігнорується.
Ініціалізація of Яш
Yash ініціалізується таким чином:
1. Yash спочатку аналізує ім'я, яке було викликано. Якщо назва починається з -, оболонка
поводиться як оболонка входу. Якщо ім'я є sh (включаючи такі імена, як / Бен / ш)
оболонка переходить у POSIXly-коректний режим.
2. Якщо не задано жодного операнда, а стандартний ввід і стандартна помилка пов’язані між собою
до терміналу, оболонка перейде в інтерактивний режим, якщо тільки +i (++інтерактивний)
опція вказана.
3. Керування завданнями автоматично вмикається в інтерактивній оболонці, якщо не +m (++монітор)
опція вказана.
4. Yash читає та виконує команди з наступних файлів (за винятком справжнього and
ефективні ідентифікатори користувачів процесу оболонки відрізняються або реальна та ефективна група
Ідентифікатори процесу оболонки різні):
1. Якщо він поводиться як оболонка входу, оболонка читає файл, указаний у
--профіль=ім'я файлу варіант, якщо не --непрофільний вказано параметр або оболонку
знаходиться в режимі POSIXly-correct.
Якщо --профіль=ім'я файлу параметр не вказано, оболонка читає ~/.yash_profile
за замовчуванням.
2. Якщо в інтерактивному режимі, оболонка читає файл, указаний у
--rcfile=ім'я файлу варіант, якщо не --norcfile опція вказана.
Якщо --rcfile=ім'я файлу варіант не вказано, оболонка
· читає ~/.yashrc за замовчуванням, якщо не в режимі POSIXly-correct; або
· виконує розкладання параметрів за значенням ENV змінна середовища і
обробляє результат розширення як назву файлу для читання, якщо в
POSIX-коректний режим.
Примітка:
Яш ніколи не читає автоматично / тощо / профіль, /etc/yashrc, ні ~ / .profile.
СИНТАКС
Оболонка читає, аналізує та виконує команди рядок за рядком. Якщо їх більше одного
команду в рядку, усі команди аналізуються перед виконанням. Якщо команда продовжується
до наступних рядків, оболонка читає більше рядків, достатню для завершення команди. Про синтаксис
помилка, оболонка більше не читає та не виконує жодних команд.
Жетони та ключові слова
Команда складається з одного або кількох токенів. У синтаксисі оболонки a знак це слово, яке
є частиною команди. Зазвичай маркери розділяються пробілами, тобто пробілом або
символ табуляції. Пробіли всередині заміни команди або розширення параметра,
однак не розділяйте жетони.
Наступні символи мають спеціальні значення в синтаксисі оболонки та в більшості випадків окремі
лексеми:
; & | < > ( ) [новий рядок]
Наступні символи не розділяють лексеми, але мають синтаксичні значення:
$ ` \ " ' * ? [ # ~ = %
Наступні токени розглядаються як ключові слова залежно від контексту, в якому вони
з'являються:
! { } case do done elif else esac fi
для функції якщо в тоді до поки
Маркер розглядається як ключове слово, коли:
· це перша лексема команди,
· воно слідує за іншим ключовим словом (окрім випадок, та цінності та in), або
· це не перша лексема команди і має бути ключовим словом для створення a
складена команда.
Якщо лексема починається з #, А потім # і будь-які наступні символи до кінця
лінії розглядаються як a коментар, який повністю ігнорується під час аналізу синтаксису.
Котирування
Якщо ви хочете, щоб пробіли, символи-роздільники або ключові слова, описані вище, оброблялися
як і звичайні символи, ви повинні взяти їх у відповідні лапки.
Лапки не розглядаються як звичайні символи, якщо вони самі не взяті в лапки.
Ви можете використовувати такі три лапки:
· Зворотна коса риска (\) цитує символ, який йде відразу за ним.
Єдиним винятком щодо зворотної косої риски є випадок, коли за зворотною косою рискою стоїть a
новий рядок. У цьому випадку два символи розглядаються як a лінія продовження швидше
ніж новий рядок у лапках. Два символи видаляються з вхідних даних і два
лінії, що оточують продовження рядка, об’єднані в один рядок.
· Пара одинарних лапок (') цитувати будь-які символи між ними, крім іншого
одинарне цитування. Зверніть увагу, що новий рядок можна взяти в одинарні лапки.
· Подвійні лапки (") схожі на одинарні лапки, але мають кілька винятків:
Розширення параметрів, підстановка команд і арифметичне розширення інтерпретуються як
звичайно навіть між подвійними лапками. Зворотний слеш між подвійними лапками обробляється
як лапки лише тоді, коли за ним стоїть $, `, ", \, або новий рядок; інший
зворотні косі риски розглядаються як звичайні символи.
псевдонімами
Підлягають маркери, які складають команду псевдонім заміна. Маркер, який відповідає
ім'я псевдоніма, яке вже було визначено, замінюється значенням псевдоніма
перед розбором команди.
Токени, які містять лапки, не замінюються псевдонімами, оскільки ім’я псевдоніма не може замінити це
містять лапки. Ключові слова та символи-роздільники команд не є
замінений на псевдонім.
Існує два типи псевдонімів: звичайні псевдоніми та глобальні псевдоніми. А нормальний псевдонім може тільки
замініть перший маркер команди, а a в цілому псевдонім може замінити будь-яку частину a
команда. Глобальні псевдоніми є розширенням yash, яке не визначено в POSIX.
Якщо маркер замінено на псевдонім значенням звичайного псевдоніма, який закінчується на a
пробіл, наступна лексема винятково підлягає заміні псевдоніма на звичайний
псевдоніми.
Результати заміни псевдоніма знову підлягають заміні псевдоніма на інший
псевдоніми (але не для псевдонімів, які вже були застосовані).
Ви можете визначити псевдоніми за допомогою вбудованого псевдоніма та видалити за допомогою вбудованого unalias.
простий Команди
Команда, яка не починається з маркера ключового слова, є a простий команда. Прості команди
виконуються, як визначено у розділі Виконання простих команд.
Якщо перший і будь-яка наступна кількість маркерів простої команди мають вигляд
ім'я=значення, вони інтерпретуються як призначення змінних. Ім'я змінної має складатися з
один або більше алфавітів, цифр та/або підкреслень (_) і не має починатися з цифри. The
перша лексема, яка не є призначенням змінної, розглядається як ім’я команди та все
наступні лексеми (незалежно від того, мають вони форму ім'я=значення) як аргументи команди.
Присвоєння змінній форми було=(лексеми) інтерпретується як присвоєння масиву.
Ви можете записати будь-яку кількість токенів між парою дужок. Жетони можна розділяти
не лише за допомогою пробілів і табуляції, а й символів нового рядка.
Трубопроводи
A трубопровід це послідовність однієї або кількох простих команд, складених команд та/або
визначення функцій, які розділені |.
Конвеєр, який має більше ніж одну підкоманду, виконується шляхом виконання кожної підкоманди
трубопровід у підоболонці одночасно. Стандартний вихід кожної підкоманди, крім
останній перенаправляється на стандартний вхід наступної підкоманди. Стандарт
вхід першої підкоманди та стандартний вихід останньої підкоманди не є
перенаправлено. Статус виходу з конвеєра відповідає статусу останньої підкоманди.
Конвеєр може мати префікс !, у цьому випадку вихідний статус конвеєра
зворотний: стан виходу з конвеєра дорівнює 1, якщо останньою підкомандою дорівнює 0, і 0
інакше.
Примітка:
Коли завершується виконання конвеєра, принаймні виконання останнього
підкоманда завершилася, оскільки статус виходу останньої підкоманди визначає статус of
весь трубопровід. Однак виконання інших підкоманд може бути не завершено
потім. З іншого боку, будівництво трубопроводу може завершитися невдовзі після цього
останньої підкоманди завершено, оскільки оболонка може зачекати на виконання
інших підкоманд для завершення.
Примітка:
Стандарт POSIX дозволяє виконувати будь-яку з підкоманд у поточній оболонці
ніж підоболонки, хоча yash цього не робить.
Та / або списки
An та / або список це послідовність одного або кількох конвеєрів, розділених && or ||.
Список та/або виконується шляхом умовного виконання деяких конвеєрів. Перший
конвеєр завжди виконується. Інші конвеєри або виконуються, або не виконуються
відповідно до статусу виходу попередніх трубопроводів.
· Якщо два трубопроводи розділені && і статус виходу першого трубопроводу
нуль, виконується другий конвеєр.
· Якщо два трубопроводи розділені || а статус виходу першого трубопроводу – ні
нуль, виконується другий конвеєр.
· В інших випадках виконання списку та/або завершується: другим і будь-яким, що залишився
трубопроводи не виконані.
Статус виходу списку та/або є статусом останнього виконаного конвеєра.
Зазвичай список і/або має закінчуватися крапкою з комою, амперсандом або новим рядком. Побачити
Роздільники команд і асинхронні команди.
Command сепаратори та асинхронний Команди
Весь вхід до оболонки повинен складатися з будь-якої кількості та/або списків, розділених символом a
крапка з комою або амперсанд. Кінцеву крапку з комою можна опустити, якщо за нею стоїть ;;, ),
або новий рядок. В іншому випадку список і/або має закінчуватися крапкою з комою або амперсандом.
Якщо список і/або завершується крапкою з комою, він виконується синхронно: оболонка
очікує завершення списку та/або перед виконанням наступного списку та/або. Якщо і/або
список закінчується амперсандом, він виконується асинхронно: після виконання
і/або список починається, наступний і/або список виконується негайно. Асинхронний
і/або список завжди виконується у підоболонці, і його статус виходу дорівнює нулю.
Якщо оболонка не виконує керування завданнями, стандартний вхід асинхронного та/або списку
автоматично перенаправляється до /dev/null. Обробники сигналів і/або списку для
Сигнали SIGINT і SIGQUIT налаштовані на «ігнорування» сигналу, щоб виконання
і/або список не може бути зупинений цими сигналами. (У POSIXly-коректному режимі стандартний
введення перенаправляється тоді і тільки тоді, коли оболонка є інтерактивною, незалежно від того, чи є завдання
контроль включений. Крім того, сигнали SIGINT і SIGQUIT ігноруються, навіть якщо керування завданням є
увімкнено.)
Коли починається виконання асинхронного списку та/або списку, оболонка запам’ятовує його
ID процесу. Ви можете отримати ідентифікатор, посилаючись на ! спеціальний параметр. Ви можете отримати
поточний стан і статус виходу з асинхронного списку, а також за допомогою завдань і очікування
вбудовані.
З'єднання Команди
Складені команди забезпечують програмне керування виконанням команд оболонки.
Групування
Групування — це список команд, який розглядається як проста команда.
Звичайний синтаксис групування
{ команда...; }
Синтаксис групування підоболонки
(команда...)
Команда { та } токени - це ключові слова, які необхідно відокремити від інших лексем. The ( та
) однак лексеми є спеціальними роздільниками, які не потрібно розділяти.
У звичайному синтаксисі групування команди в групуванні виконуються в поточному
оболонка. У синтаксисі групування підоболонки команди виконуються в новій підоболонці.
У POSIXly-коректному режимі групування має містити принаймні одну команду. Якщо
оболонка не перебуває в POSIXly-коректному режимі, групування може не містити жодних команд.
Статус виходу з угруповання – це статус останньої команди в угрупованні. Якщо
групування не містить команд, його статус виходу – це стан останньої виконаної команди
перед групуванням.
If команда
Команда if виконує умовне розгалуження.
Базовий синтаксис команди if
if стан...; потім тіло...; fi
Синтаксис із реченням else
if стан...; потім тіло...; ще тіло...; fi
Синтаксис із пропозицією elif
if стан...; потім тіло...; Еліф стан...; потім тіло...; fi
Синтаксис із пропозицією elif
if стан...; потім тіло...; Еліф стан...; потім тіло...; ще тіло...; fi
Для всіх синтаксисів виконання команди if починається з виконання
стан команди, які слідують за if жетон. Якщо статус виходу з умови
команд дорівнює нулю, умова вважається «істинним». У цьому випадку тіло
команди, які слідують за потім виконується маркер і виконання команди if
закінчується. Якщо статус виходу команд умови відмінний від нуля, умова є
вважається «хибним». У цьому випадку стан команди для наступного речення elif
виконуються, і статус виходу перевіряється так само, як описано вище. Якщо немає
речення elif, the тіло команди, які слідують за ще токени виконуються і
виконання команди if завершується. Якщо інше положення також немає, виконання
команди if просто завершується.
Команда if може мати більше одного пункту elif-then.
Статус виходу для команди if є статусом для тіло команди, які були виконані. The
статус виходу нульовий, якщо ні тіло були виконані команди, тобто всі умови
були хибними, і інше положення не було.
У той час як та до петлі
Цикли while і until є простими циклами з умовою.
Синтаксис циклу while
в той час як стан...; do тіло...; зроблений
Синтаксис циклу Until
до стан...; do тіло...; зроблений
Якщо оболонка не в POSIXly-коректному режимі, ви можете пропустити стан та / або
тіло команди циклу while/until.
Виконання циклу while починається виконанням стан команди. Якщо
статус виходу стан команд дорівнює нулю, оболонка виконує тіло Команди
і повертається до виконання стан команди. The стан та тіло
команди виконуються повторно до стану виходу з стан команди є
відмінний від нуля.
Примітка:
Команда тіло команди не виконуються взагалі, якщо перше виконання стан
команди дають ненульовий статус виходу.
Цикл until виконується так само, як і цикл while, за винятком умови
для повторення цикл виворітний: в тіло команди виконуються, коли статус виходу з
стан команд не нуль.
Статус виходу з циклу while/until є статусом останнього виконаного тіло командування. The
статус виходу дорівнює нулю, якщо тіло команди порожні або не виконувалися взагалі.
для петля
Цикл for повторює команди зі змінною, якій присвоєно одне із заданих значень у кожній
круглий.
Синтаксис циклу For
та цінності ім'я вар in слово...; do команда...; зроблено для ім'я вар do команда...; зроблений
Команда слово список після in маркер може бути порожнім, але крапка з комою (або новий рядок) перед ним
do маркер потрібен навіть у цьому випадку. The словоs не розглядаються як ключові слова, але
вам потрібно взяти роздільні символи в лапки (наприклад & та |), щоб включити їх як частину a
слово. Якщо ви опустите in маркер і наступне словоs, ви також повинні опустити
крапка з комою перед do жетон. Втім, оболонка не нарікає
наявність крапки з комою, якщо не в POSIXly-коректному режимі. The команда список може бути
пустий, якщо не в POSIXly-правильному режимі.
Команда ім'я вар має бути переносним (лише ASCII) ім’ям у POSIXly-коректному режимі.
Виконання циклу for починається з розширення словоs таким же чином, як і в
виконання простої команди. Якщо in та слово лексеми пропущені, оболонка
припускає слово жетони бути "$@". Далі для кожного слова виконуються такі дії
розгорнуто (у порядку розкладання слів):
1. Призначте слово змінній, ім'я якої є ім'я вар.
2. Виконати командаs.
Кожне слово призначається як локальна змінна, за винятком POSIXly-коректного режиму. Якщо
розширення словоs не дали слів у результаті, the командаs не виконуються на
все.
Статус виходу з циклу for — це останній виконаний цикл команда. Статус виходу є
нуль, якщо командаs не порожні і не виконуються взагалі. Якщо командаs порожні,
статус виходу — це стан останньої виконаної команди перед циклом for.
випадок команда
Команда case виконує зіставлення шаблону для вибору команд для виконання.
Синтаксис команди case
випадок слово in caseitem... що С
Синтаксис елемента регістру
(моделі) команда...;;
Команда слово між випадок та in лексеми повинні бути рівно одним словом. The слово НЕ
розглядається як ключове слово, але вам потрібно взяти роздільні символи (наприклад, & та |), Щоб
включити їх до складу слово. Між in та що С жетони можна ставити будь-які
кількість речей (може бути жодної). Ви можете опустити перше ( токен предмета справи і
останній ;; маркер перед що С жетон. Якщо останній команда предмета справи є
закінчується крапкою з комою, крапку з комою також можна опустити. The командаs у футлярі
елемент може бути порожнім.
Команда моделі у case item є одна або більше лексем, кожен розділений символом a | лексема.
Виконання команди case починається з підпорядкування слово до чотирьох
розширення. Далі наступні кроки виконуються для кожного пункту справи (у порядку
зовнішній вигляд):
1. Для кожного слова в моделі, розширити слово так само, як і слово та
перевірити, чи відповідає розгорнутий шаблон розгорнутому слову. (Якщо шаблон знайдено
що збігається зі словом, решта шаблонів не розширюється і не перевіряється, тому деякі
в моделі не можна розширювати. Yash розширює та перевіряє шаблони в
порядок появи, але це може бути не так для інших оболонок.)
2. Якщо один із моделі було встановлено, що відповідає слово на попередньому кроці,
командаs у цьому випадку виконується елемент і виконується весь елемент справи
закінчується. В іншому випадку перейдіть до наступного пункту справи.
Статус завершення команди case є таким командаs виконано. Статус виходу є
нуль, якщо ні командаs були виконані, тобто не було жодних регістрів, жодних відповідностей
шаблон знайдено, або жодна команда не була пов’язана з відповідним шаблоном.
У режимі POSIXly-correct перший шаблон в елементі case не може бути що С (навіть якщо
ви не пропускаєте ( ).
функція визначення
Команда визначення функції визначає функцію.
Синтаксис визначення функції
функція ( ) складена_командафункція функція складена_командафункція функція ( )
складена_команда
У першому синтаксисі без функція ключове слово, функція не може містити жодних особливих
такі символи, як крапка з комою та лапки. У другому і третьому синтаксисі, які
не можна використовувати в POSIXly-коректному режимі, функція піддається чотирьом розширенням
при виконанні. У POSIXly-правильному режимі, функція обмежено портативним (лише ASCII)
ім'я.
Коли виконується команда визначення функції, функція, ім'я якої є функція is
визначається своїм тілом складена_команда.
Команда визначення функції не може бути напряму перенаправлена. Будь-які наступні перенаправлення
визначення функції пов’язано з складена_команда а не всю функцію
команда визначення. в func () { кішка; } > / dev / null, наприклад, це не так func () { кішка; }
але { кішка; } який перенаправляється.
Статус виходу визначення функції дорівнює нулю, якщо функцію було визначено без
помилки та відмінні від нуля в іншому випадку.
ПАРАМЕТРИ І ЗМІННІ
Параметри це рядкові значення, які розгортаються в розширенні параметрів. Є три
типи параметрів: позиційні параметри, спеціальні параметри та змінні.
Позиційний параметри
Позиційний параметри це параметри, які ідентифікуються натуральними числами. Якщо є
три позиційні параметри, наприклад, вони ідентифікуються як 1, 2 та 3. Ви можете
отримати кількість позиційних параметрів за допомогою # спеціальний параметр. The * та @ спеціальний
параметри розширюються до всіх позиційних параметрів.
Позиційні параметри ініціалізуються з аргументів командного рядка оболонки, коли
запускається оболонка (див. Аргументи командного рядка). При ініціалізації порядок
операнди зберігаються як порядок позиційних параметрів.
Коли оболонка виконує виклик функції, позиційні параметри змінюються на
аргументи виклику функції, щоб ви могли отримати доступ до аргументів, поки функція працює
виконується. Позиційні параметри відновлюються до вихідних значень, коли
виконання функції закінчено.
Позиційними параметрами можна керувати за допомогою вбудованих команд, таких як set і shift.
Зверніть увагу, що 0 є не позиційним параметром, а спеціальним параметром.
спеціальний параметри
спеціальний параметри це параметри, кожен з яких ідентифікується одним символом. Вони не можуть бути
безпосередньо призначений користувачем.
Yash надає такі спеціальні параметри:
0
Ім'я виконуваного файлу оболонки або файлу сценарію, указаного в
виклик оболонки.
#
Кількість поточних позиційних параметрів. Значення є цілим невід’ємним числом.
$
Ідентифікатор процесу оболонки. Значення є додатним цілим числом і навіть ніколи не змінюється
в підоболонках.
-
Наразі ввімкнені параметри оболонки. Значення — це конкатенація символів алфавіту
це назви наразі активованих односимвольних параметрів, які можна вказати
у виклику оболонки. Значення відображає зміни увімкнених параметрів, коли ви вмикаєте або
відключити параметри за допомогою вбудованого набору.
?
Статус виходу останнього виконаного конвеєра. Значення є цілим невід’ємним числом.
!
Ідентифікатор процесу останнього виконаного асинхронного списку.
*
Цей спеціальний параметр представляє всі позиційні параметри. Коли немає
позиційні параметри, значенням цього спеціального параметра є порожній рядок. Коли
є більше ніж один позиційний параметр, значення є конкатенацією всіх
позиційні параметри, кожен з яких розділений наступним чином:
· Якщо IFS змінна існує і її значення не порожнє, позиційні параметри є
кожен розділений першим символом значення IFS змінна.
· Якщо IFS змінна існує і має порожнє значення, лише позиційні параметри
об’єднані без будь-яких роздільників.
· Якщо IFS змінна не існує, позиційні параметри відокремлені символом a
космічний характер.
@
Цей спеціальний параметр представляє всі позиційні параметри, такі як * спеціальний
параметр вище. Різниця між ними полягає в результатах розширення
міститься між парою подвійних лапок. Якщо @ спеціальним параметром є
розширено всередині подвійних лапок, позиційні параметри розділені на поля, а не
зчеплений (незважаючи на цитату). Якщо немає позиційних параметрів, то
розширення не дає жодного слова, а не порожнє слово.
· При відсутності позиційних параметрів командні слова нудьгувати 1 "$@" 2 is
розширено до трьох слів нудьгувати, 1 та 2.
· Коли позиційними параметрами є три слова 1, 2 2 та 3, командні слова
нудьгувати "$@" розширюється до чотирьох слів нудьгувати, 1, 2 2 та 3, і слова нудьгувати
"a$@b" до чотирьох слів нудьгувати, a1, 2 2 та 3b.
Змінні
Змінні це параметри, яким користувач може призначити значення. Кожна змінна має назву, яка
ідентифікує його та значення, яке визначає результати розширення.
Ім'я змінної складається з одного або кількох буквено-цифрових символів і підкреслення (_).
Ім'я не може починатися з цифри. Інші символи можуть використовуватися в імені залежно від
підтримка інтернаціоналізації вашого середовища.
Викликаються змінні, які експортуються до зовнішніх команд навколишнє середовище змінні. Вони
передаються всім зовнішнім командам, які викликає оболонка. Змінні передані в оболонку
виклик буде автоматично експортовано.
Ви можете призначати змінним за допомогою простої команди, а також за допомогою вбудованого набору. Ти можеш
видалити змінні за допомогою вбудованої функції unset.
Змінні використовуваний by оболонка
Наступні змінні використовуються оболонкою для спеціальних цілей.
CDPATH
Ця змінна використовується вбудованою програмою cd для пошуку каталогу призначення.
КОЛОНИ
Ця змінна вказує ширину (кількість стовпчиків символів) файлу
екран терміналу. Значення впливає на відображення рядкового редагування.
COMMAND_NOT_FOUND_HANDLER
Якщо оболонка не може знайти команду для виконання, значення цієї змінної є
інтерпретується та виконується замість цього. Ви можете змінити обробку помилок оболонки
поведінка з цією змінною. Докладніше див. у розділі Виконання простих команд.
Ця функція вимкнена в режимі POSIXly-correct.
DIRSTACK
Ця змінна масиву використовується оболонкою для зберігання вмісту стека каталогів. Якщо
якщо змінити значення цієї змінної, стек каталогу може бути пошкоджено.
ECHO_STYLE
Ця змінна визначає поведінку вбудованої луни.
ENV
Коли інтерактивну оболонку запускають у POSIXly-коректному режимі, значення
ця змінна використовується для пошуку файлу ініціалізації. Див. Ініціалізацію yash.
FCEDIT
Ця змінна вказує програму-редактор, яка використовується для редагування командних рядків під час
виконання ФК вбудован.
ОБРАЧУЄТЬСЯ
Цю змінну можна встановити в обробнику command-not-found, щоб сказати оболонці цього не робити
створити подальше повідомлення про помилку. Докладніше див. у розділі Виконання простих команд.
HISTFILE
Ця змінна вказує шлях до файлу, у якому буде зберігатися історія команд.
HISTRMDUP
Ця змінна вказує кількість елементів історії команд, які потрібно перевірити
дублювання. Коли оболонка додає новий елемент історії до історії команд,
якщо деякі з найновіших n елементи мають той самий вміст, що й новий, то
повторювані існуючі елементи видаляються з історії перед додаванням нового,
де n є значенням цієї змінної.
Якщо значення цієї змінної є 1, наприклад, останній елемент буде видалено
коли додається новий елемент із таким же вмістом.
Предмети, старші за nостанній елемент не видаляється. Жодні елементи не видаляються, якщо
значення цієї змінної дорівнює 0. Всі елементи підлягають видаленню, якщо змінна
значення більше або дорівнює значенню HISTSIZE змінна.
HISTSIZE
Ця змінна вказує максимальну кількість елементів в історії команд.
ГОЛОВНА
Ця змінна визначає шлях до домашнього каталогу користувача та впливає
результати розширення тильди та вбудованого cd.
IFS
Ця змінна вказує роздільники, які використовуються для розбиття полів. Значення змінної є
ініціалізується трьома символами пробілу, табуляції та нового рядка, коли
запускається оболонка.
МОВА, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME
Ці змінні вказують локаль, у якій працює оболонка. Оболонка вибирає своє
кодування введення/виведення файлу, мова повідомлення про помилку тощо відповідно до
указана локаль.
Якщо оболонка не є інтерактивною та не працює в режимі POSIXly-correct, значення
LC_CTYPE змінна розглядається лише під час запуску оболонки. Раз оболонка
було ініціалізовано, змінюючи значення LC_CTYPE не вплине на
поведінка оболонки.
LINENO
Значення цієї змінної автоматично встановлюється на номер рядка, у якому
поточна виконана команда відображається у файлі.
В інтерактивній оболонці номер рядка скидається до 1 кожного разу, коли оболонка читає
і виконує команду.
Якщо ви призначите або вилучите цю змінну, вона більше не надаватиме номери рядків.
ЛІНІЇ
Ця змінна визначає висоту (кількість рядків символів) терміналу
екран. Значення впливає на відображення рядкового редагування.
Ця змінна вказує шлях до файлу, який перевіряється під час перевірки пошти.
ПЕРЕВІРКА ПОШТИ
Ця змінна вказує, як часто оболонка повинна перевіряти пошту. Значення має
вказується як натуральне число в секундах. Значення ініціалізується
значення за замовчуванням 600 коли запускається оболонка.
MAILPATH
Ця змінна вказує шлях до файлів, які перевіряються під час перевірки пошти.
NLSPATH
Стандарт POSIX передбачає, що значення цієї змінної визначає шлях
шаблони залежних від локалі файлів даних повідомлень, але yash не використовує їх.
OLDPWD
Ця змінна встановлюється на попередній шлях робочого каталогу, коли ви змінюєте
робочий каталог за допомогою cd або інших вбудованих модулів. Цю змінну експортує
за замовчуванням.
OPTARG
Коли вбудований getopts аналізує параметр, який приймає аргумент, аргумент
цій змінній присвоюється значення.
OPTIND
Значення цієї змінної вказує індекс параметра, який потрібно розібрати
наступним вбудованим виконанням getopts. Ця змінна ініціалізується 1 коли
запускається оболонка.
PATH
Ця змінна вказує шляхи, які шукаються для команди під час пошуку команд.
PPID
Значення цієї змінної є ідентифікатором процесу батьківського процесу оболонки, який
є додатним цілим числом. Ця змінна ініціалізується під час запуску оболонки. The
значення не змінюється, коли оболонка створює нову підоболонку.
PROMPT_COMMAND
Оболонка інтерпретує та виконує значення цієї змінної перед друком кожного
командний рядок, якщо оболонка інтерактивна, а не в POSIXly-правильному режимі.
Така поведінка еквівалентна виконанню команди евал -i --
"${PROMPT_COMMAND-}" перед кожним командним рядком, але його статус виходу – ні
впливають на розширення в ? спеціальний параметр у наступній команді.
PS1
Ця змінна визначає рядок головного командного рядка, який друкується інтерактивом
оболонка. Див. Підказки щодо формату значення змінної. Значення ініціалізовано
до \$ коли запускається оболонка. (У POSIXly-коректному режимі початкове значення
є також $ or # залежно від того, чи ефективний ID користувача процесу оболонки
дорівнює нулю чи ні.)
PS1R
Ця змінна визначає допоміжний рядок підказки, надрукований праворуч від
курсор під час введення командного рядка в інтерактивну оболонку. Перегляньте підказки для
формат значення змінної.
PS1S
Ця змінна визначає стиль шрифту командних рядків, які ви вводите в
інтерактивна оболонка. Див. Підказки щодо формату значення змінної.
PS2
Ця змінна схожа на PS1 змінна, але вона використовується для другого і
наступні рядки команди, довші за один рядок. Перегляньте підказки для
формат значення змінної. Значення ініціалізується > коли оболонка є
розпочато.
PS2R
Ця змінна схожа на PS1R змінна, але вона використовується, коли PS2 використовується. Побачити
Запитує формат значення змінної.
PS2S
Ця змінна схожа на PS1S змінна, але вона використовується, коли PS2 використовується. Побачити
Запитує формат значення змінної.
PS4
Значення цієї змінної друкується перед кожним виводом трасування команди, коли
параметр xtrace увімкнено. Значення підлягає розширенню параметра, команда
підстановка, арифметичний розклад. Ви також можете використовувати позначення зворотної косої риски, якщо
оболонка не працює в POSIXly-коректному режимі. Значення ініціалізується + коли
запускається оболонка.
PS4S
Ця змінна схожа на PS1S змінна, але вона використовується, коли PS4 використовується. Ти можеш
використовуйте цю змінну, щоб змінити стиль шрифту результату трасування команди.
PWD
Значенням цієї змінної є шлях до поточного робочого каталогу. The
значення встановлюється під час запуску оболонки та скидається кожного разу, коли відкривається робочий каталог
змінюється компакт-диском або іншими вбудованими функціями. Ця змінна експортується за замовчуванням.
RANDOM
Ви можете використовувати цю змінну для отримання випадкових чисел. Значення цієї змінної дорівнює a
рівномірно розподілене випадкове ціле число від 0 до 32767 (включно). Ти отримаєш
інше число кожного разу, коли змінна розгортається.
Ви можете встановити «засіб» випадкових чисел, призначивши невід’ємне ціле число
змінна.
Якщо видалити цю змінну, вона більше не працюватиме як генератор випадкових чисел.
Якщо оболонку було викликано в режимі POSIXly-correct, ця змінна не працює
як генератор випадкових чисел.
ТЕРМІН
Ця змінна вказує тип терміналу, в якому працює оболонка.
Значення впливає на поведінку рядкового редагування.
YASH_AFTER_CD
Оболонка інтерпретує та виконує значення цієї змінної після кожного разу
робочий каталог оболонки змінюється cd або іншими вбудованими функціями. Ця поведінка
еквівалентно виконанню команди евал -i -- "${YASH_AFTER_CD-}" після
каталог було змінено.
YASH_LOADPATH
Ця змінна вказує каталоги, у яких вбудована крапка шукає файл сценарію.
Можна вказати декілька каталогів, розділивши їх двокрапками, наприклад
PATH змінна. Коли запускається оболонка, ця змінна ініціалізується
шлях до каталогу, де встановлено загальні файли сценаріїв.
YASH_LE_TIMEOUT
Ця змінна вказує, як довго оболонка повинна чекати наступного можливого введення
від терміналу, коли він зустрів неоднозначну керуючу послідовність
лінійне редагування. Значення має бути вказано в мілісекундах. Якщо не визначити
для цієї змінної передбачається значення за замовчуванням 100 мілісекунд.
YASH_VERSION
Значення ініціалізується номером версії оболонки, коли оболонка є
розпочато.
Масиви
An масив це змінна, яка містить нуль або більше рядків. Рядкові значення an
масив ідентифікується натуральними числами (як позиційні параметри).
Ви можете призначити значення масиву за допомогою простої команди, а також масиву
вбудований. Для видалення масивів можна використовувати вбудований unset.
Масиви не можна експортувати як масиви. Коли масив експортується, він розглядається як a
звичайна змінна, значення якої є конкатенацією всіх значень масиву, кожне окремо
через двокрапку.
Масиви не підтримуються в режимі POSIXly-correct.
WORD РОЗШИРЕННЯ
слово розширення це заміна частини слова іншим певним рядком. Є
сім типів розширення слів:
1. Розгортання тильди
2. Параметр розширення
3. Підстановка команд
4. Арифметичне розкладання
5. Розширення дужки
6. Розщеплення поля
7. Розширення шляху (globbing)
Ці типи розгортань виконуються у порядку, зазначеному вище.
Розгортання тильди, розширення параметрів, підстановка команд і арифметичне розширення є
називається чотири розширення.
тильда розширення
In тильда розширення, частини слів, що починаються з тильди (~) замінюються на
конкретні імена шляхів. Частина кожного слова, яка замінюється, є з початку
слово, яке є тильдою, до (але не включаючи) першу скісну риску (/) у слові. Якщо
слово не містить скісної риски, підставляється все слово. Якщо будь-який персонаж у
замінена частина береться в лапки, розширення тильди до слова не виконується.
Результати розгортання визначаються форматом підставленої частини:
~
Одна тильда замінюється значенням ГОЛОВНА змінна.
~ім'я користувача
Тильда, за якою йде ім’я користувача, замінюється на ім’я домашнього шляху користувача
каталог.
~+
~+ замінюється значенням PWD змінна.
~-
~- замінюється значенням OLDPWD змінна.
~+n, ~-n
де n є невід’ємним цілим числом. Цей тип розширення тильди дає шлях до
каталог якого ~+n or ~-n є індексом у стеку каталогу.
Коли розширення тильди виконується для значення присвоєння змінної, яке відбувається під час
виконання простої команди, значення розглядається як список слів, розділених двокрапкою
і кожне з цих слів підлягає розширенню тильди. Наприклад, присвоєння змінної
VAR=~/a:~/b:~/c
еквівалентна
VAR=/home/foo/a:/home/foo/b:/home/foo/c
якщо значення ГОЛОВНА змінна є /home/foo.
Стандарт POSIX не визначає, як повинна поводитись оболонка, коли вона стикається з
помилка під час розширення тильди (наприклад, коли ГОЛОВНА змінна не визначена). Яш мовчки
ігнорує будь-які помилки під час розширення тильди; частина слова, яка буде замінена
залишається недоторканим.
У POSIXly-коректному режимі розширення тильди підтримує формати ~ та ~ім'я користувача тільки.
Параметр розширення
Параметр розширення розширюється до значення параметра.
Синтаксис типового простого розширення параметрів такий ${параметр}, яка розширюється до
значення параметра, ім'я якого є параметр. Ви можете опустити дужки (наприклад, $параметр)
if
· параметр є спеціальним параметром,
· параметр є позиційним параметром, індекс якого є цілим однозначним числом, або
· параметр є змінною, і після розширення параметра не йде символ
який можна використовувати як частину назви змінної. Наприклад, ${path}-name є еквівалентним
до $шлях-назва, Але ${path}name та $pathname різні.
If параметр не є спеціальним параметром, позиційним параметром або змінною, це a
синтаксична помилка. (Деякі оболонки, крім yash, можуть розглядати такий випадок як помилку розширення.)
Якщо параметр unset вимкнено, а параметр є невизначеною змінною, це an
помилка розширення. Якщо параметр unset увімкнено, невизначена змінна розширюється до
порожній рядок.
Більш складний синтаксис розширення параметра дозволяє змінювати значення параметра.
Розширення параметрів
${ префікс параметр індекс зміна }
Пробіли у наведеному вище визначенні синтаксису призначені лише для зручності читання, їх потрібно опустити.
Можна опустити префікс, індекс, і / або зміна.
префікс
Команда префікс, якщо є, має бути знаком решетки (#). Якщо розширення параметра має префікс,
результатом розширення є кількість символів у значенні, яке буде мати це розширення
розширюватися до без префікса.
Параметр ім'я
Назва параметра (параметр) має бути будь-яким
· ім'я спеціального параметра, позиційного параметра або змінної; або
· інше розширення параметра, підстановка команди або арифметичне розширення.
Параметр розгортається до значення параметр. Якщо параметр є
змінна масиву, значення масиву розділяються полями, як @ спеціальний параметр
хіба що індекс [*] вказано.
If параметр є інше розширення, воно називається a вкладений розширення. Вкладене розширення
не можна використовувати в POSIXly-коректному режимі. Брекети ({ }) вкладеного параметра
розширення не можна пропустити.
Index.sp Ан індекс дозволяє витягти частину значення параметра (або деякі значення масиву).
індекс
[word1]
[word1,word2]
де word1 та word2 аналізуються так само, як і звичайні лексеми, за винятком того, що вони є
завжди відокремлені , or ] і може містити пробіли.
Якщо є індекс у розширенні параметрів це інтерпретується таким чином:
1. Слова word1 та word2 піддаються розширенню параметрів, підстановці команд і
арифметичний розклад.
2. Якщо немає word2 і якщо word1 розширюється до одного з *, @ та #, тоді це
інтерпретація індекс і наступний крок не зроблено.
3. Результати попередніх кроків (розширений word1 та word2) інтерпретуються і
обчислюється як арифметичний вираз так само, як і в арифметичному розкладі.
Отримані цілі числа є інтерпретацією індекс. Якщо результатів немає
цілі числа, це помилка розширення. Якщо немає word2, передбачається, що word2 is
дорівнює word1.
If параметр є змінною масиву, the індекс визначає частину масиву. Якщо параметр
є або * or @ спеціальний параметр, індекс задає діапазон індексів позиційного
параметри. В інших випадках індекс визначає діапазон індексів підрядка
значення параметра, що розширюється. У всіх випадках заданий діапазон масиву
значення, позиційні параметри або значення параметра залишаються в результатах розширення
а інші значення видаляються.
Якщо тлумачення індекс дорівнює одному або двом цілим числам, застосовуються такі правила:
· Якщо інтерпретоване значення індексу від’ємне, це обгортання навколо. Наприклад, індекс
значення -1 відповідає останньому значенню/символу.
· Якщо значення індексу виходить за межі діапазону, це не є помилкою. Існуючі значення/символи
у діапазоні щойно вибрано.
· Якщо тлумачення будь-якого word1 or word2 дорівнює 0, діапазон вважається порожнім і
розширення нічого не призводить.
Якщо тлумачення індекс один з *, @ та #, це розглядається таким чином:
*
If параметр є масивом, усі значення масиву об’єднані в одне
рядок. Якщо параметр є * or @ спеціальний параметр, всі позиційні параметри є
об’єднані в рядок. Дивіться опис до * спеціальний параметр для того, як
значення/позиційні параметри розділені в рядку результату. В інших випадках
інтерпретація індекс трактується так, ніби інтерпретація є двома цілими числами 1 і
-1.
@
Інтерпретація індекс трактується так, ніби інтерпретація є двома цілими числами 1
і -1.
#
Інтерпретація #індекс особливий тим, що він не просто визначає a
діапазон. Натомість розгорнуті значення замінюються підрахунком.
If параметр є масивом, результатом цього розширення параметра буде число
значень у масиві, що розширюється. Якщо параметр є * or @ спеціальний параметр,
результатом буде кількість поточних позиційних параметрів. Інакше результат буде
бути кількістю символів у значенні, яке розгортається.
Якщо розширення параметра не містить індекс, це передбачається [@], в
POSIX-коректний режим, індекс неможливо вказати.
Приклад 1. Розширення of a нормальний змінна
Наступні команди виведуть рядок азбука:
вар='123ABC789'
echo "${var[4,6]}"
Приклад 2. Розширення of позиційний параметри
Наступні команди виведуть рядок 2 3 4:
набір 1 2 3 4 5
echo "${*[2,-2]}"
Приклад 3. Розширення of an масив
Наступні команди виведуть рядок 2 3 4:
масив=(1 2 3 4 5)
echo "${array[2,-2]}"
Модифікатор
Ви можете змінити значення, яке потрібно розгорнути, використовуючи модифікатори:
-слово
Якщо назва параметра (параметр) є невизначеною змінною, параметром
розширення розширюється до слово. Це не вважається помилкою, якщо параметр не встановлено
вимкнено
+слово
Якщо назва параметра (параметр) є існуюча змінна, розширення параметра
розширено до слово. Це не вважається помилкою, якщо параметр не встановлено
інваліди.
=слово
Якщо назва параметра (параметр) є невизначеною змінною, слово присвоюється
змінна та розширення параметра розширюється до слово. Це не розглядається як
помилка, якщо параметр unset вимкнено.
?слово
Якщо назва параметра (параметр) є невизначеною змінною, слово друкується як
повідомлення про помилку до стандартної помилки. Якщо слово порожній, повідомлення про помилку за замовчуванням
натомість друкується.
:-слово, :+слово, :=слово, :?слово
Вони схожі на чотири типи модифікаторів вище. Єдина різниця
що, якщо параметр існує і має порожнє значення, воно також розглядається як an
невизначена змінна.
#слово
Оболонка виконує зіставлення шаблону зі значенням, яке розгортається,
використання слово як візерунок. Якщо слово збігається з початком значення, відповідність
частина видаляється зі значення, а інша частина залишається як результат розширення.
Найкоротше зіставлення використовується, якщо можливо більше ніж одне зіставлення.
##слово
Це схоже на #слово вище. Єдина відмінність полягає в тому, що збіг найдовше
використовується, якщо можливе декілька відповідностей.
%слово
Це схоже на #слово вище. Єдина відмінність полягає в тому, що перевіряється відповідність
у кінці значення, а не на початку: якщо слово збігається з кінцем
значення, відповідна частина видаляється зі значення, а інша частина залишається як
результати розширення.
%%слово
Це схоже на %слово вище. Єдина відмінність полягає в тому, що збіг найдовше
використовується, якщо можливе декілька відповідностей.
/word1/word2
Оболонка виконує зіставлення шаблону зі значенням, яке розгортається,
використання word1 як візерунок. Якщо word1 відповідає будь-якій частині значення, відповідність
частина замінюється на word2 а все значення після заміни залишається як
результати розширення. Якщо word1 відповідає більш ніж одній частині значення, лише
перша частина замінена. Найкоротша відповідність замінюється, якщо їх більше ніж одна
збіг можливий для тієї самої початкової точки значення.
Цей модифікатор не можна використовувати в POSIXly-правильному режимі.
/#word1/word2
Це схоже на /word1/word2 вище. Єдина різниця в тому, що word1 сірники
лише на початку значення, що розгортається.
/%word1/word2
Це схоже на /word1/word2 вище. Єдина різниця в тому, що word1 сірники
лише в кінці значення, що розгортається.
//word1/word2
Це схоже на /word1/word2 вище. Єдина відмінність полягає в тому, що всі збігаються
частини замінюються, якщо word1 відповідає більш ніж одній частині значення.
:/word1/word2
Це схоже на /word1/word2 вище. Різниця лише в тому, що значення є
замінено лише тоді, коли word1 відповідає повному значенню.
У всіх типах модифікаторів вище слова піддаються чотирьом розширенням, коли (і
тільки коли) вони використовуються.
If параметр є змінною масиву або @ or * спеціальний параметр, модифікатори впливають
кожне значення масиву або всі позиційні параметри.
Command заміна
Command заміна розширюється до виведення вказаних команд.
Заміна команд
$(Команди)
`Команди`
Коли оцінюється заміна команди, Команди виконуються підоболонкою з виводом
конвеєрно до оболонки. Коли Команди завершено, заміна команди замінена
з виходом Команди. Усі кінцеві символи нового рядка у виводі є
ігнорується.
При командній підстановці форми $(Команди) розбирається, Команди розбираються
обережно, щоб складні команди, такі як підстановка вкладених команд, аналізувалися
правильно. Якщо Команди починати з (, ви повинні поставити пробіл перед Команди так що
підстановка цілої команди не плутається з арифметичним розширенням. Якщо оболонка в
режим POSIXly-correctly, the Команди аналізуються кожного разу, коли виконується заміна команди
розширений; інакше, Команди аналізуються лише тоді, коли аналізується підстановка команди.
Якщо підстановка команд має вигляд `Команди`, Команди не аналізуються, коли
підстановка команди аналізується. Кінець Команди визначається першою зворотною цитатою
персонаж (`) після початку Команди що не взято в лапки зворотною скісною рискою.
Зворотні цитати, які є частиною Команди (зазвичай використовується для підстановки вкладених команд) must
взяти в лапки зворотними скісними рисками. The Команди аналізуються кожного разу, коли виконується заміна команди
розширений.
Арифметика розширення
Арифметика розширення обчислює арифметичний вираз і розширює його до значення
вираз.
Арифметичний розклад
$((вираз))
Коли арифметичне розширення розгортається, вираз підлягає розширенню параметрів,
підстановка команд і (вкладене) арифметичне розширення. The вираз розбирається в
(майже) так само, як вираз мови програмування C.
Yash дозволяє виразу бути або цілим числом (типу long у C), або a
число з плаваючою комою (типу double в C). Операція над цілими числами дає
ціле число, а операція з числом з плаваючою комою дає число з плаваючою комою.
У режимі POSIXly-correct ви можете використовувати лише цілі числа.
Доступні такі оператори (у порядку пріоритету):
1. ( )
2. ++-- (постфіксні оператори)
3. ++--+-~! (префіксні оператори)
4. */%
5. +- (двійкові оператори)
6. << >>
7. <<=>>=
8. ==!=
9. &
10. ^
11. |
12. &&
13. ||
14. ? :
15. =*=/=%=+=-=<<=>>=&=^=|=
Команда ++ та -- оператори не можна використовувати в POSIXly-коректному режимі.
Атомний вираз може бути цілим літералом, літералом числа з плаваючою комою,
і змінна. Літерали аналізуються так само, як і в C. Вісімковий цілий літерал
починається з 0, а шістнадцяткові с 0x. Літерал числа з плаваючою комою може мати
експонента (тобто 1.23e + 6). Змінна з нечисловим значенням призведе до помилки, коли
аналізується як число.
У POSIX-коректному режимі змінні завжди аналізуються як числа. В іншому випадку змінні
аналізуються лише тоді, коли вони використовуються як числа в обчисленні. Непроаналізовані змінні залишаються
неушкодженим.
набір +o позитивно-правильно
foo=бар
echo $((0 ? foo : foo)) # друкує "бар"
echo $((foo + 0)) # помилка
Браслет розширення
Браслет розширення розширюється на кілька розділених слів із попередніми та наступними частинами
дублюється для кожного розділеного слова. Розгортання фігурної дужки розгортається тільки тоді, коли фігурна дужка розгортається
увімкнено.
Розширення фігурних дужок, розділених комами
{word1,word2, ...,wordn}
Розширення дужки діапазону
{старт..кінець}
{старт..кінець..дельта}
Розширення фігурних дужок, розділених комами, розширюється до кожного слова, розділеного комами. Наприклад,
a{1,2,3}b розширюється до трьох слів A1b, A2b та A3b.
Розширення дужок діапазону розширюється до цілих чисел у діапазоні, визначеному старт та кінець,
різницю між кожним цілим числом можна визначити за допомогою дельта. Якщо старт більше, ніж кінець,
результати будуть у порядку спадання. Коли ..дельта опущено, за умовчанням дорівнює 1 або -1. для
наприклад, a{1..3}b розширюється до трьох слів A1b, A2b та A3bІ a{1..7..2}b до
чотири слова A1b, A3b, A5b та A7b.
В одному слові можна використовувати кілька розширень фігурних дужок. Розгортання дужок також можуть бути вкладеними.
Ви можете взяти фігурні дужки та/або коми, щоб запобігти їх розгляданню як розширення дужок.
Будь-які помилки в розширенні дужок мовчки ігноруються.
Поле Розщеплення
In поле Розщеплення, слова розділяються за попередньо визначеними роздільниками.
Розбиття полів може відбуватися лише в межах частин слів, які є результатом параметра
розширення, підстановка команди та арифметичне розширення, які не знаходяться між ними
подвійні лапки. Результати розширення @ спеціальні параметри є винятковими
розділити навіть між подвійними лапками.
Розділювачі, які використовуються для розбиття полів, визначаються значенням IFS змінний. Якщо
змінна не існує, передбачається, що значення є трьома символами пробілу, табуляції,
і новий рядок.
Символи, що входять до значення IFS змінна називається IFS символи. IFS
викликаються будь-які символи з пробілу, табуляції та нового рядка IFS пробіл та інші IFS
називаються символи IFS непробіл.
Розбиття полів виконується наступним чином:
1. Оболонка шукає слова для точок розділення. Точка поділу — це одна або кілька суміжних IFS
символів у частинах слова, які підлягають розділенню поля. Наступне
кроки виконуються для кожної знайденої точки розділення.
2. Якщо точка розділення містить один або більше пробілів IFS, будь-які пробіли IFS у
точка розділення ігнорується, а слово розділяється на кожному IFS, що не є пробілом у
точка розколу.
3. Якщо точка розділення не включає пробіли IFS, слово розділяється при розділенні
точка, якщо вона не на початку або в кінці слова.
4. Точки розділення видаляються з результатів.
Примітка:
Слова взагалі не діляться, коли значення в IFS змінна порожня.
Шлях розширення
Шлях розширення виконує зіставлення шаблонів і розширює шляхи, які відповідають
рисунок.
Слово, що піддається розширенню шляху, розглядається як шаблон. Якщо один або декілька шляхів
знайдено, що відповідає шаблону, імена шляхів стають результатами
розширення імені шляху.
Розширення шляху не виконується, якщо параметр glob вимкнено.
Оболонка шукає в доступних для читання каталогах відповідні шляхи. Нечитабельні каталоги є
мовчки ігнорують.
Наступні параметри впливають на поведінку розширення шляху:
нульовий шар
Цей параметр впливає на результат розкриття шляху, якщо немає відповідних шляхів
знайдено. Якщо ввімкнено, результатом не буде жодного слова. Якщо вимкнено, результатом є оригінал
шаблон слово.
справа-глоб
Цей параметр визначає чутливість до регістру під час пошуку відповідників. Якщо ввімкнено, відповідність шаблону є
зроблено з урахуванням регістру.
точка-глобус
Цей параметр впливає на збіг імен файлів, які починаються з крапки (.). Якщо вимкнено, a
крапка на початку назви файлу не відповідає шаблонам підстановки (? та *) Або
вирази в дужках. Якщо ввімкнено, такого спеціального лікування менструацій немає.
mark-dirs
Якщо ввімкнено, кожне кінцеве ім’я шляху, яке є іменем каталогу, суфіксується косою рискою
(/).
розширено-глоб
Ця опція вмикає розширення. (Дивись нижче)
Будь-які помилки в розширенні шляху мовчки ігноруються. Якщо слово є недійсним шаблоном,
це просто стає результатом. Результати залежать від параметра null-glob, якщо немає відповідності
шляхів знайдено.
Зіставлення шаблону виконується для кожного імені файлу (або компонента імені шляху) імен шляхів. Оболонка
пропускає відповідність для літеральних шаблонів, які не містять символів узагальнення чи виразів у дужках. Як
результат, візерунки /*/foo та /*/fo[o] може дати різні результати розширення, коли
параметр case-glob вимкнено; наприклад, шаблон /*/fo[o] відповідає імені шляху
/bar/FOO але візерунок /*/foo не робить, тому що відповідність пропускається Foo.
Розширення in ім'я шляху розширення
Наведені нижче шаблони можна використовувати, якщо ввімкнено параметр extended-glob.
**
Пошук у каталозі здійснюється рекурсивно, і шаблон відповідає будь-якій кількості
імена файлів каталогу (кожне розділене скісною рискою). Будь-який каталог, назва якого починається
з крапкою виключається з пошуку. Наприклад, візерунок dir/**/файл може
відповідати іменам шляхів каталог/файл, dir/foo/file, dir/a/b/c/файл, І т.д.
Цей шаблон не діє, якщо він з’являється в кінці всього шаблону (тобто
foo/bar/**).
. **
Цей візерунок схожий на **, але пошук виконується в усіх каталогах, включно з каталогами з a
назва, що починається з крапки.
***
Цей візерунок схожий на **, але якщо символічне посилання на каталог знайдено під час
рекурсивний пошук, пошук у каталозі також виконується рекурсивно.
. ***
Цей візерунок схожий на ***, але пошук виконується в усіх каталогах, включно з каталогами з a
назва, що починається з крапки.
ПАТЕРН ЗБІГАННЯ НОТАЦІЯ
Викрійки узгодження позначення є синтаксисом моделі які представляють окремі набори
рядки. Коли рядок включено до набору рядків, шаблон представляє шаблон
як кажуть матч рядок. Чи відповідає шаблон рядку чи ні, визначається як
слід.
нормальний символи
Символ, який не взято в лапки, або будь-який із спеціальних символів, визначених нижче, є звичайним
символ, який відповідає самому персонажу.
Наприклад, візерунок Азбука відповідає рядку Азбука, а не будь-які інші рядки.
Односимвольне шаблон
Персонаж ? відповідає будь-якому окремому символу.
Наприклад, візерунок a?c відповідає будь-якому трисимвольному рядку, який починається з a та
закінчується на c, Такі, як ААС, Азбука та a;c.
Багатосимвольний шаблон
Персонаж * відповідає будь-яким рядкам (будь-якої довжини, включаючи порожній рядок).
Наприклад, візерунок a*c відповідає будь-якому рядку, який починається з a і закінчується c, такий
as ac, Азбука та a;xyz;c.
кронштейн вираз
Шаблон, укладений у дужки ([ та ]) Є кронштейн вираз. Кронштейн
вираз повинен містити принаймні один символ у квадратних дужках. Персонажі між
дужки тлумачаться як a кронштейн вираз модель, який є визначеним нижче
спеціальне позначення виразу в дужках. Шаблон виразу в дужках представляє набір
персонажів. Вираз у дужках відповідає будь-якому із символів у наборі the
шаблон виразу в дужках представляє.
Якщо відкривальна дужка ([) стоїть знак оклику (!), вигуку немає
розглядається як частина шаблону дужкового виразу, а натомість цілий дужковий вираз
відповідає символу, який є НЕ включено в набір шаблон виразу дужок
представляє. Якщо за початковою дужкою стоїть вставка (^), він розглядається як an
знак оклику, як і вище (але оболонки, відмінні від yash, можуть по-іншому трактувати вставку).
Якщо за відкриваючою дужкою (або наступним знаком оклику чи вставкою, якщо є) стоїть a
закриваюча дужка (]), він розглядається як частина шаблону виразу в дужках, а не як
кінець виразу дужки. Ви не можете взяти в лапки символи у дужках
шаблон, оскільки цитата розглядається перед дужковим виразом.
Відкриваюча дужка в шаблоні розглядається як звичайний символ, якщо вона не є символом
початок правильного виразу в дужках.
нормальний символи (В кронштейн вираз візерунок)
Символ, який не є жодним зі спеціальних символів, визначених нижче, є звичайним символом,
який представляє самого персонажа.
Наприклад, шаблон виразу в дужках Азбука представляє набір із трьох символів
a, b та c. Вираз у дужках [abc] тому відповідає будь-якому з трьох символів.
Діапазон вирази
Дефіс, перед яким стоїть символ (або символ порівняння), є a діапазон вираз,
який представляє набір із двох символів і всіх символів між ними в
порядок звірки. А звірення порядок це порядок символів, визначений у локалі
дані.
Якщо після дефіса стоїть закриваюча дужка (]), дужка розглядається як кінець
вираз у дужках і дефіс як звичайний символ.
Наприклад, вираз діапазону 3-5 представляє набір із трьох символів 3, 4 та
5. Вираз у дужках [3-5-] тому відповідає одному з чотирьох символів 3, 4, 5 та
-.
Сортування Символи
A зіставлення символ дозволяє розглядати більше ніж один символ як один символ
відповідність. Символ порівняння складається з одного або кількох символів, укладених у спец
кронштейни [. та .].
Один або кілька символів, які розглядаються як один символ під час зіставлення, називаються a
зіставлення елемент. Точніше, шаблон виразу в дужках представляє набір зіставлення
елементів і вираз у дужках відповідає елементу зіставлення, а не символу, але
ми не розрізняємо їх для стислості.
Наприклад, комбінація символів «ch» розглядалася як один символ у
традиційна іспанська мова. Якщо ця комбінація символів зареєстрована як сортування
елемент у даних локалі, вираз у дужках [[.ch.]df] відповідає одному з ch, d та f.
Еквівалентність класів
An еквівалентність клас представляє набір символів, які розглядаються еквівалент.
клас еквівалентності складається з символу (або, точніше, елемента зіставлення)
закріплені спеціальними дужками [= та =].
Клас еквівалентності представляє набір символів, який складається з символу
у дужках і символах, які належать до того самого класу первинної еквівалентності
як вкладений символ. Оболонка звертається до даних локалі для визначення
класи еквівалентності в поточній локалі.
Наприклад, якщо шість символів a, à, á, â, ã, ä визначено як такі, що належать до однієї початкової групи
клас еквівалентності, вирази в дужках [[=a=]], [[=à=]] та [[=á=]] відповідати одному з
шість.
Характер класів
A характер клас представляє заздалегідь визначений набір символів. Створено клас персонажів
імені класу, укладеного в спеціальні дужки [: та :]. Оболонка перевіряє локаль
дані, до якого класу належить символ.
Наступні класи символів можна використовувати в усіх локалях:
[:нижній:]
набір малих літер
[:верхній:]
набір великих літер
[:альфа:]
набір літер, в т.ч [:нижній:] та [:верхній:] класи.
[:цифра:]
набір десяткових цифр
[:xdigit:]
набір шістнадцяткових цифр
[: alnum:]
набір літер і цифр, включаючи [:альфа:] та [:цифра:] класи.
[:пусто:]
набір порожніх символів, не включаючи символ нового рядка
[:пробіл:]
набір символів пробілу, включаючи символ нового рядка
[:punct:]
набір розділових знаків
[:print:]
набір символів для друку
[:cntrl:]
набір керуючих символів
Наприклад, дужковий вираз [[:lower:][:upper:]] відповідає нижньому або верхньому регістру
характер. На додаток до класів, перелічених вище, можуть використовуватися інші класи залежно від
визначення поточної локалі.
ПЕРЕСпрямування
Redirection це функція, яку можна використовувати для зміни дескрипторів файлів команд. З допомогою
переспрямування, ви можете виконувати команди, пов’язані зі стандартним введенням/виведенням
файлів або пристроїв, крім терміналу.
Ви можете зробити перенаправлення, додавши оператори перенаправлення до команди (проста команда або
складена команда) У простій команді оператори перенаправлення можуть з’являтися в будь-якому місці
доки маркери оператора відокремлені від інших маркерів. У складеній команді
оператори перенаправлення мають бути в кінці команди.
Оператори перенаправлення обробляються перед виконанням тіла команди. Більш ніж один
Оператор перенаправлення в команді обробляється в порядку появи. Перенаправлення
оператори впливають лише на команду, у якій вони з’являються, за винятком випадків, коли вони з’являються у викон
вбудований без командних операндів. Тобто дескриптори файлів, змінені перенаправленням
відновлюється після завершення команди.
Оператор перенаправлення починається з < or >. Оператори перенаправлення починаються з < Впливає
стандартний ввід (дескриптор файлу 0) за замовчуванням. Оператори перенаправлення починаються з >
впливає на стандартний вихід (дескриптор файлу 1) за замовчуванням. Щоб вплинути на інший файл
дескриптор, ви можете додати до оператора перенаправлення невід’ємне ціле число; в
оператор вплине на дескриптор файлу, визначений цілим числом. Ціле число повинно
безпосередньо передувати < or > без пробілів між ними. Цілого числа не повинно бути
процитований, або.
Redirection до файли
Найбільш поширеним видом перенаправлення є перенаправлення до файлів.
Перенаправлення введення
< знак
Перенаправлення виводу
> знак
>| знак
>> знак
Перенаправлення введення і виведення
<> знак
Команда знак підлягає чотирьом розширенням. Він також підлягає розширенню шляху, якщо
оболонка є інтерактивною. Результат розширення розглядається як шлях до файлу
яке перенаправлення виконується. Якщо розширення імені шляху не призводить до єдиного
шлях, це помилка.
Під час перенаправлення вводу стандартний ввід замінюється дескриптором файлу, який є
відкритий для доступу лише для читання цільового файлу. Якщо цільовий файл неможливо відкрити для
доступ лише для читання, це помилка.
Під час перенаправлення виводу стандартний вивід замінюється дескриптором файлу, який є
відкритий для доступу лише для запису до цільового файлу. Якщо цільовий файл неможливо відкрити для
доступ лише для запису, це помилка. Якщо цільовий файл не існує, існує новий порожній файл
створений і відкритий. Якщо цільовий файл уже існує, він відкривається таким чином:
· Для >| якщо це звичайний файл, під час його відкриття файл очищається.
· Для > оператор, поведінка така ж, як і оператор >| оператор, якщо опція clobber
увімкнено. Якщо цей параметр вимкнено, а файл є звичайним, він розглядається як
помилка.
· Для >> оператор, файл відкривається для додавання; будь-який вихід у файл
дескриптор додається в кінець файлу.
Під час перенаправлення вводу та виводу стандартний ввід замінюється дескриптором файлу
який відкритий для читання та запису до цільового файлу. Якщо файл не існує, a
створюється та відкривається новий порожній файл.
Розетка перенаправлення
Якщо шлях до цільового файлу має вигляд /dev/tcp/господар/порт or
/dev/udp/господар/порт і файл не можна відкрити звичайним способом, є новий сокет
відкритий для спілкування з в порт в господар. Переспрямування замінює
стандартний ввід або вихід із дескриптором файлу в сокет.
Для форми відкрито потоковий сокет /dev/tcp/господар/порт і дейтаграмний сокет для
форма /dev/udp/господар/порт. Протокол, який фактично використовується для зв'язку
визначається бібліотекою сокетів, яку використовує оболонка. Як правило, потокові сокети використовують TCP і
дейтаграмні сокети UDP.
У переспрямуванні сокета дескриптор файлу доступний як для читання, так і для запису незалежно від
тип використовуваного оператора перенаправлення.
Перенаправлення сокетів — це розширення yash, яке не визначене в POSIX. Bash також має
перенаправлення сокета як розширення.
Дублювання of файл дескриптори
Переспрямування дозволяє дублювати або закривати існуючі дескриптори файлів.
Дублювання файлового дескриптора
<& знак
>& знак
Команда знак підлягає розширенню, як і при переспрямуванні до файлів, але розглядається як файл
дескриптор, а не шлях. Таким чином розширено знак має бути цілим невід’ємним числом.
Команда <& та >& оператори дублюють дескриптор файлу, визначений знак до стандарту
вхід і вихід відповідно. (Оператори можуть мати префікс невід’ємного цілого числа
так що дескриптор файлу дублюється в дескриптор файлу, відмінний від стандартного
вхід або вихід.)
Якщо розширено знак є одним дефісом, а не цілим невід’ємним числом, файл
дескриптор закритий, а не дубльований. За замовчуванням, <& та >& оператори закривають
стандартний ввід і вихід відповідно, але оператори можуть мати префікс a
невід’ємне ціле число, щоб інший файловий дескриптор був закритий.
У POSIXly-коректному режимі дескриптор файлу має бути доступним для читання, коли він дублюється <&
оператор і доступний для запису при дублюванні >& оператор.
тут документація та тут струни
тут документ та тут рядок дозволити перенаправлення до файлових дескрипторів, які читають рядки
безпосередньо вказано в командах оболонки.
Ось документ
<< знак
<<- знак
Ось рядок
<< знак
У документі here або рядку here стандартний ввід замінюється читабельним файлом
дескриптор. Коли команда читає дескриптор файлу, вона читає вміст
тут документ/рядок, який визначено нижче.
Коли тут оператор документа (<< or <<-) з’являється в команді, оболонка читає
вміст документа тут, починаючи з наступного рядка. Зміст тут документів
не аналізуються і не виконуються як команди. The знак після того, як операнд визначає роздільник
що вказує на кінець вмісту. ( знак не підлягає ніякому розширенню, але
цитата обробляється.) Вміст документа тут закінчується безпосередньо перед
перший рядок, що містить знак тільки. При використанні <<- оператор, усі символи табуляції на
початок кожного рядка в цьому документі видалено, а також роздільник
знак можуть передувати символи табуляції.
Якщо в одному рядку є більше одного оператора документа here, вміст тут
документи аналізуються в порядку: вміст першого тут документа починається з
наступний рядок і закінчується перед першим рядком, що містить знак що слідували за першим
оператор. Відразу після цього рядка починається вміст другого документа, і так далі
далі.
Вміст документів тут трактується буквально: пробіли, табуляції тощо залишаються без змін
є. Винятком є те, що коли знак взагалі не цитується:
· вміст підлягає розширенню параметрів, підстановці команд, арифметиці
розширення.
· зворотний слеш у змісті розглядається як цитата тоді і тільки якщо він стоїть перед $, `,
"або інший зворотний слеш.
· зворотна коса риска, за якою йде новий рядок, розглядається як продовження рядка.
Тут рядок, знак після того, як оператор підлягає розширенню, як і при перенаправленні на
файли. Результат розширення стає вмістом рядка here. Символ нового рядка
автоматично додається в кінець вмісту рядка.
Тут рядок є розширенням yash, яке не визначено в POSIX. Інші оболонки, такі як bash, ksh,
і zsh мають однакову функцію.
Трубопровід перенаправлення
Трубопровід перенаправлення дозволяє відкривати трубопроводи, які можна використовувати для довільних цілей.
Перенаправлення конвеєра
>> | знак
Команда знак підлягає розширенню, як і при переспрямуванні до файлів, але розглядається як файл
дескриптор, а не шлях. Таким чином розширено знак має бути цілим невід’ємним числом.
Переспрямування конвеєра відкриває новий конвеєр. Стандартний вихід (або дескриптор файлу
зазначений перед оператором, якщо такий є) замінюється дескриптором файлу open for
запис у конвеєр. Дескриптор файлу, визначений знак замінюється файлом
дескриптор відкритий для читання з конвеєра.
Перенаправлення конвеєра — це розширення yash, яке не визначене в POSIX.
Процес перенаправлення
Процес перенаправлення створює конвеєр, підключений до іншої команди.
Перенаправлення процесу
<(команда...)
>(команда...)
У процесі перенаправлення, команда зазначений виконується у підоболонці. Якщо процес
перенаправлення має форму <(команда...), стандартний вихід команда пов'язаний з
конвеєр до стандартного введення команди, з якою пов’язано переспрямування. Якщо
перенаправлення процесу має форму >(команда...), стандартний ввід команда is
підключений конвеєром до стандартного виводу команди, яким є перенаправлення
асоціюється з.
Перенаправлення процесу — це розширення yash, яке не визначено в POSIX. Bash і zsh мають a
функція під назвою процес заміни, яка використовує той самий синтаксис, що й процес yash
перенаправлення, але несумісно відрізняється поведінкою.
КОМАНДА ВИКОНАННЯ
У цьому розділі описано, як виконуються команди.
Виконання of простий Команди
Проста команда виконується так:
1. Усі маркери в простій команді розгорнуті, за винятком призначення та перенаправлення
жетони. Якщо під час розширення виникає помилка, виконується проста команда
перервано з ненульовим статусом виходу.
У наступних кроках перше слово результатів розгортання називається
команда ім'я, а інші слова як команда аргументація. Якщо є лише одне слово
в результаті розширення немає слів аргументів команди. Якщо немає жодного з
результатів розширення, назви команди також немає.
2. Обробляється перенаправлення, вказане в команді, якщо воно є. Слово-лексема після кожного
оператор перенаправлення розгорнуто. Якщо під час перенаправлення обробки сталася помилка
(в тому числі при розширенні слова лексема), виконання цієї простої команди є
перервано з ненульовим статусом виходу.
3. Зазначені в команді завдання, якщо такі є, обробляються. Для кожного завдання
маркер, значення розгортається та призначається вказаній змінній. Якщо помилка
виникає під час присвоєння (в тому числі при розширенні значень, що присвоюються), то
виконання цієї простої команди переривається з ненульовим статусом виходу.
· Якщо назви команди немає або назва вказує на спеціальну вбудовану або функцію,
призначення є постійними: призначені значення залишаються після виконання команди
завершено (до перепризначення змінної).
· В іншому випадку призначення є тимчасовими: призначені значення тривають лише протягом
виконання цієї простої команди.
Призначені змінні автоматично експортуються, коли вказано назву команди
або ввімкнуто опцію повного експорту.
4. Якщо ім'я команди відсутнє, виконання команди завершується нульовим статусом виходу
(якщо немає будь-яких замін команди в команді, у цьому випадку вихід
статус простої команди – це остання виконана заміна команди).
5. Команда для виконання визначається за допомогою алгоритму пошуку команд і
команда виконується.
· Якщо команда є зовнішньою командою, команда виконується шляхом створення нової
subshell і виклик системного виклику “exec” у subshell. Назва команди і
аргументи передаються виконуваній команді. Експортовані змінні передаються в
виконується команда як змінні середовища.
· Якщо команда є вбудованою, вона виконується з аргументами команди
перейшов на вбуд.
· Якщо команда є функцією, вміст функції виконується за допомогою
аргументи команди як аргументи функції.
Якщо команда була виконана, статус виходу цієї простої команди є статусом
виконана команда. Якщо алгоритм не зміг визначити команду, жодної команди немає
виконано, а статус виходу – 127. Якщо оболонка не змогла виконати визначений
статус виходу 126. Якщо виконану команду було знищено сигналом,
Статус виходу - номер сигналу плюс 384.
Примітка:
В оболонках, відмінних від yash, статус виходу може бути іншим, коли була команда
вбитий сигналом, оскільки стандарт POSIX вимагає лише статусу виходу
бути "більше 128".
Якщо оболонка не в режимі POSIXly-correct і алгоритму не вдалося визначити
команда, команда евал -i -- "${COMMAND_NOT_FOUND_HANDLER-}" оцінюється. Протягом
виконання команди, позиційні параметри тимчасово встановлюються на назву команди
і аргументи, які привели до першого кроку. Будь-які локальні змінні, визначені під час
виконання видаляються після завершення виконання. The ОБРАЧУЄТЬСЯ локальна змінна є
автоматично визначається з початковим значенням, яке є порожнім рядком. Якщо ОБРАЧУЄТЬСЯ
змінна має непорожнє значення, коли виконання командного рядка завершено,
оболонка робить вигляд, що команда була успішно визначена та виконана. Вихід
У цьому випадку статус простої команди є статусом командного рядка.
Command пошук
Команда, яка виконується у простій команді, визначається назвою команди за допомогою
наступний алгоритм:
1. Якщо назва команди містить скісну риску (/), повна назва розглядається як
шлях до зовнішньої команди. Зовнішня команда визначається як
виконана команда.
2. Якщо назва команди є спеціальною вбудованою, вбудована визначається як
виконана команда.
3. Якщо ім'я команди є ім'ям існуючої функції, функція є
визначається як виконана команда.
4. Якщо назва команди є напівспеціальною вбудованою, вбудована визначається як
виконана команда.
5. Якщо назва команди є звичайною вбудованою, вбудована визначається як
виконується команда, якщо оболонка не перебуває в режимі POSIXly-correct.
6. Оболонка шукає ШЛЯХ для виконуваної команди:
Значення PATH змінна відокремлюється двокрапкою. Кожна відокремлена частина є
розглядається як шлях до каталогу (пустий шлях означає поточний робочий
каталог). Оболонка шукає в каталогах (у порядку появи) і
перевіряє, чи містить будь-який каталог безпосередньо виконуваний звичайний файл із назвою
дорівнює імені команди. Якщо такий файл знайдено:
· Якщо назва команди є назвою вбудованої, вбудована визначається як
виконану команду.
· В іншому випадку файл визначається як виконана команда. (Файл буде
виконується як зовнішня команда.)
Якщо такий файл не знайдено, жодна команда не визначається як виконана.
Коли під час пошуку вище оболонка знаходить файл, який відповідає назві команди,
оболонка запам'ятовує шлях до файлу, якщо це абсолютний шлях. Коли алгоритм
вище використовується для тієї ж назви команди знову, оболонка пропускає пошук і безпосередньо
визначає команду, яку потрібно виконати. Якщо виконуваний звичайний файл більше не існує
за запам'ятованим шляхом, проте оболонка шукає знову, щоб оновити запам'ятаний шлях
шлях. Ви можете керувати збереженими іменами шляхів за допомогою вбудованого хешу.
Припинення of оболонка
Оболонка завершує роботу, коли вона досягла кінця введення та розібрала та виконала весь вхід
команди або коли виконується вбудований вихід. Статус виходу оболонки - це
остання команда, виконана оболонкою (або нуль, якщо жодна команда не виконувалася). Вихід
статус оболонки завжди між 0 і 255 (включно). Якщо статус виходу
остання команда 256 або більше, статус виходу з оболонки буде рештою
статус виходу поділений на 256.
Якщо обробник виходу був зареєстрований вбудованим перехопленням, обробник просто виконується
до виходу оболонки. Статус виходу команд, що виконуються в обробнику, не має
впливають на статус виходу оболонки.
Якщо неінтерактивна оболонка виявила одну з наведених нижче помилок, оболонка негайно
виходи з ненульовим статусом виходу:
· Команду неможливо проаналізувати через синтаксичну помилку (за винятком командної оболонки
ініціалізація).
· Спеціальний вбудований виконується в POSIXly-коректному режимі та аргументах команди
не відповідають синтаксису вбудованих аргументів.
· Помилка виникає під час перенаправлення або призначення в простій команді
ім'я є спеціальним вбудованим, а оболонка знаходиться в режимі POSIXly-correct.
· Під час розширення (за винятком ініціалізації оболонки) виникає помилка.
Примітка:
Деякі оболонки, крім yash, завершують роботу, якщо їм не вдається знайти команду для виконання
командний пошук.
Функції
Функції дозволяють виконувати складену команду як просту команду. Функція може бути
визначається командою визначення функції та виконується простою командою. Ви можете використовувати
unset вбудований для видалення визначень функцій.
Немає попередньо визначених функцій під час запуску yash.
Функція виконується шляхом виконання її тіла, яке є складеною командою. У той час як
функція виконується, позиційні параметри встановлюються на аргументи, надані для
функція. Старі позиційні параметри відновлюються після завершення виконання функції.
Місцевий змінні
Місцевий змінні це тимчасові змінні, які визначені у функції та існують
тільки під час виконання функції. Їх можна визначити за допомогою вбудованого набору. Вони
видаляються після завершення виконання функції.
Локальні змінні можуть приховувати змінні, які вже були визначені перед функцією
почалася страта. Існуюча змінна стає недоступною, якщо локальна змінна
з однойменною назвою визначено у функції. Стара змінна знову стає доступною
після завершення виконання функції.
Ви не можете створити локальну змінну, коли функція не виконується. Нормальною змінною є
створюється, якщо ви спробуєте це зробити.
Command виконання навколишнє середовище
Під час виконання оболонка має такі властивості.
· Робочий каталог
· Відкрити файлові дескриптори
· Маска створення файлу (umask)
· Набір сигналів, обробник яких налаштовано на «ігнорування» (перехоплення)
· Змінні середовища
· Обмеження ресурсів (ulimit)
Ці властивості успадковуються від ініціатора оболонки до оболонки та від
оболонки для кожної зовнішньої команди, що виконується оболонкою.
Властивості можна змінювати під час виконання оболонки за допомогою вбудованих команд,
призначення змінних тощо.
Підоболонки
A підшелупка є копією процесу оболонки. Підоболонки використовуються у виконанні
угруповання, конвеєри тощо.
Підоболонки успадковують функції, псевдоніми тощо, визначені в оболонці, а також
властивості вище, оскільки підоболонки є копіями процесу оболонки. Помітні винятки
є:
· Перехоплення, зареєстровані вбудованим перехопленням, усі скидаються у підоболонках, за винятком однієї
дію якого встановлено як «ігнорувати». (Дивись нижче)
· У підоболонках вимкнено інтерактивний режим і керування завданнями. Роботи немає
успадковуються підоболонками.
Підоболонки виконуються незалежно від оригінальної оболонки, тому будь-які зміни
властивості, наведені вище, не впливають на властивості оригінальної оболонки.
Примітка:
Якщо підоболонка містить одну вбудовану пастку, деякі оболонки (але не yash) можуть
не скидати пастки при вході до підоболонки.
ІНТЕРАКТИВНИЙ РЕЖИМ
Команда інтерактивний режим — режим оболонки, призначений для прямої взаємодії з користувачем.
Якщо yash знаходиться в інтерактивному режимі, він називається an інтерактивний оболонка.
Чи працює оболонка в інтерактивному режимі чи ні, визначається під час виклику
оболонка. Після запуску оболонки інтерактивний режим не можна ввімкнути або вимкнути.
Коли оболонка інтерактивна:
· Сценарії ініціалізації виконуються під час виклику.
· Оболонка перевіряє наявність пошти та друкує командний рядок, коли читає команду. Робота
також повідомляється про зміни статусу, якщо контроль завдань активний. Можна використовувати рядкове редагування
в залежності від можливостей терміналу.
· Виконувані команди автоматично реєструються в історії команд.
· Якщо команда, виконана оболонкою, припиняється сигналом, відмінним від SIGINT і
SIGPIPE, оболонка повідомляє про стандартну помилку.
· Маркер імені файлу підлягає розширенню імені шляху під час переспрямування файлу.
· Стандартний ввід асинхронної команди не перенаправляється автоматично
/dev/null (тільки в режимі POSIXly-correct).
· Оболонка не завершує роботу, якщо під час виконання команди виникає синтаксична помилка або помилка розширення
виконання. (пор. Завершення оболонки)
· Оболонка не виходить, коли отримує сигнал SIGINT, SIGTERM або SIGQUIT.
· Обробник сигналу може бути змінений за допомогою вбудованої пастки, навіть якщо обробник був встановлений
«ігнорувати», коли було викликано оболонку.
· Значення - містить спеціальний параметр i.
· Локаль оболонки відображає значення LC_CTYPE змінна, коли значення є
змінено (якщо оболонка не в POSIXly-коректному режимі).
· Команди виконуються, навіть якщо параметр exec вимкнено.
· Параметр ignore-eof набуває чинності, коли його ввімкнено.
· Коли оболонка досягає кінця введення або виконується вбудований вихід, оболонка
перевіряє, чи є зупинені завдання. Якщо так, оболонка друкує попередження, але ні
фактично вихід.
· Вбудоване призупинення за замовчуванням не може зупинити оболонку, якщо вона є лідером сеансу.
· Оболонка не завершує роботу, якщо вбудована крапка не може знайти файл сценарію для читання.
· Оболонка не завершує роботу, якщо вбудований exec не може виконати команду (якщо не в
POSIXly-коректний режим).
· Повідомляється про факт завершення завдання, на яке чекало вбудоване очікування
(тільки якщо керування завданнями активне, а не в режимі POSIXly-correct).
· Підказка друкується, коли вбудована функція читання читає другий або наступний рядок.
Підказки
Інтерактивна оболонка друкує a підказка безпосередньо перед тим, як він прочитає команду. Зміст
підказка визначається значенням PS1 та PS2 змінні. Перший використовується для
читання першого рядка команди та останнього для інших рядків.
Коли підказка друкується, значення змінної піддається розширенню параметра,
підстановка команди та арифметичне розширення (але зауважте, що стандарт POSIX вимагає
лише розширення параметрів). Результат розгортання аналізується за наведеними нижче правилами
створити фактичний рядок підказки, який друкується зі стандартною помилкою.
У POSIXly-коректному режимі кожен знак оклику (!) у рядку замінюється на
номер історії команди, яка вводиться. Два сусідніх вигуку
позначки (!!) друкуються одним вигуком. Інші символи друкуються без змін.
Якщо оболонка не в режимі POSIXly-команд, можна використовувати наступні позначення
відформатувати рядок підказки. Позначення замінюються рядками, зазначеними у списку
нижче. Символи, які не інтерпретуються як позначення, друкуються без змін.
\a
Символ дзвоника (код ASCII: 7)
\e
Екранний символ (код ASCII: 27)
\j
Кількість завдань в оболонці.
\n
Символ нового рядка (код ASCII: 10)
\r
Символ повернення каретки (код ASCII: 13)
\!
Номер історії команди, яка вводиться
\$
# якщо ефективний ідентифікатор користувача оболонки дорівнює 0; $ інакше.
\\
Зворотний слеш
\[, \]
Ці два позначення можуть оточувати частину рядка підказки, яка не відображається на
термінал. Оточена частина ігнорується, коли снаряд підраховує кількість
символів, які відображаються на терміналі, завдяки чому символи правильно вирівнюються
на терміналі, коли рядок підказки містить спеціальні невидимі символи.
\fспецифікації шрифтів.
Коли рядкове редагування активне, це позначення замінюється спеціальними символами
змінити стилі шрифту на терміналі, якщо термінал на це здатний. Якщо рядкове редагування
неактивний або термінал не може змінювати стилі шрифту, це позначення
мовчки ігнорується. Одне або декілька з наведеного нижче можна використовувати для специфікації шрифтів:
k
Змініть колір шрифту на чорний
r
Змініть колір шрифту на червоний
g
Змініть колір шрифту на зелений
y
Змініть колір шрифту на жовтий
b
Змініть колір шрифту на синій
m
Змініть колір шрифту на пурпуровий
c
Змініть колір шрифту на блакитний
w
Змініть колір шрифту на білий
K
Змінити колір фону на чорний
R
Змініть колір тла на червоний
G
Змініть колір фону на зелений
Y
Змініть колір фону на жовтий
B
Змініть колір фону на синій
M
Змінити колір фону на пурпуровий
C
Змініть колір фону на блакитний
W
Змініть колір фону на білий
t
Зробити колір шрифту або фон яскравішим (можна використовувати лише відразу після одного з
символи вище)
d
Змініть кольори шрифту та фону на звичайні
s
Зробіть шрифт помітним
u
Зробити шрифт підкресленим
v
Змінити кольори шрифту та фону на протилежні
b
Змусити шрифт блимати
i
Зробіть шрифт тьмяним
o
Зробіть шрифт жирним
x
Зробити шрифт невидимим
D
Зробіть колір і стиль нормальними
Фактичні кольори шрифту та фону визначаються терміналом. Інший
термінали можуть використовувати різні кольори.
На додаток до звичайного підказки праворуч від
курсор, якщо редагування рядків активне. Ці підказки називаються право підказок. Зміст
праві підказки визначаються значенням PS1R та PS2R змінні, кожна з яких відповідає
до PS1 та PS2 змінні.
Використовуючи наведені вище позначення, стиль шрифту командних рядків може бути введеним користувачем
змінено, а також підказки. Стиль шрифту командних рядків визначається
значення PS1S та PS2S змінні, кожна з яких відповідає PS1 та PS2 змінні. The
значення може містити \fспецифікації шрифтів. тільки позначення.
Коли оболонка не в режимі POSIXly-correct, значення PROMPT_COMMAND
змінна виконується перед кожним запитом.
Command історія
Command історія це функція оболонки, яка запам'ятовує виконані команди, щоб дозволити
повторно виконати їх пізніше. Виконувані в інтерактивному режимі команди зберігаються автоматично
в історії команд. Збережені команди можна редагувати та повторно виконувати за допомогою рядкового редагування
а також вбудовані функції fc та історія.
Команди зберігаються рядок за рядком. Рядки, які не містять символів, відмінних від пробілів
не зберігаються в історії. Рядки, які починаються з пробілів, не зберігаються, коли
параметр hist-space увімкнено.
Історія команд зберігається у файлі. Коли історія вперше використовується після інтерактивної оболонки
було запущено, оболонка відкриває файл для збереження історії. Ім’я файлу вказується за допомогою
значення HISTFILE змінна. Якщо файл містить дані історії під час відкриття, дані є
відновлено в історії оболонки. Вміст файлу оновлюється в режимі реального часу як користувач
вводить команди в оболонку. Якщо HISTFILE змінна не встановлена або файл не може бути
успішно відкрито, історія не зберігається у файлі, але функція історії буде
функціональний у всіх інших аспектах.
Кількість команд, збережених в історії, визначається значенням HISTSIZE
змінна. Оболонка автоматично видаляє старі дані історії, щоб кількість збережених
команд не перевищує значення. Якщо HISTSIZE змінна не встановлена або її значення є
не є натуральним числом, 500 елементів буде збережено в історії.
Оболонка дивиться на значення HISTFILE та HISTSIZE змінні лише тоді, коли історія
функція використовується вперше після запуску оболонки. «Функція історії використовується», коли:
· виконується вбудований fc або історія,
· використовується рядкове редагування (незалежно від того, викликаються дані історії чи ні
рядкове редагування), або
· команда вводиться в оболонку
Таким чином, змінні повинні бути встановлені в сценаріях ініціалізації.
Коли більше ніж один екземпляр yash використовує один файл історії, усі оболонки використовують
однакові дані історії. У результаті команди, які були виконані екземпляром оболонки, можуть
бути викликаний в іншому екземплярі оболонки. Оболонки, що мають однакову історію, повинні мати
то ж HISTSIZE значення, щоб вони належним чином маніпулювали даними історії.
Файл історії Yash має власний формат, який несумісний з іншими видами
снарядів.
Команда HISTRMDUP змінну можна встановити для видалення повторюваних елементів історії.
пошта контроль
Інтерактивна оболонка може повідомляти про отримання електронної пошти. Оболонка періодично перевіряє
дата/час модифікації файлу, вказані користувачем. Якщо файл був змінений
після попередньої перевірки оболонка друкує сповіщення (за винятком випадків, коли оболонка
не в POSIXly-правильному режимі, і файл порожній). Вказавши файл поштової скриньки
позначено, оболонка друкуватиме повідомлення, коли файл було змінено, тобто деякі
лист отримано.
Перевірка виконується безпосередньо перед тим, як оболонка надрукує підказку командного рядка. Інтервал перевірок
може бути визначено ПЕРЕВІРКА ПОШТИ змінна в секундах. Якщо значення змінної дорівнює 0, перевірте
виконується перед кожним запитом. Якщо значення змінної не є цілим невід’ємним числом, ні
перевірки зроблені.
Файл, час зміни якого перевіряється, визначається за допомогою MAIL змінна. Файл
значення змінної має бути встановлено на шлях до файлу.
Якщо ви хочете перевірити більше одного файлу або налаштувати сповіщення, ви можете встановити
MAILPATH змінна замість MAIL змінна. Коли MAILPATH змінна встановлена,
MAIL змінна ігнорується. Значення MAILPATH змінна повинна бути встановлена на один або більше
розділені двокрапками шляхи файлів, які потрібно перевірити. Після кожного імені шляху може стояти a
знак відсотка (%) і спеціальне сповіщення, яке друкується, коли
відповідний файл було змінено. Якщо шлях містить знак відсотка, це має бути
цитувати зворотною скісною рискою. Зазначене повідомлення підлягає розширенню параметрів. для
наприклад, якщо значення в MAILPATH змінна є /foo/mail%Новий mail!:/bar/mailbox%You've
є mail:/baz/mail\%data, оболонка надрукує
· Нові пошта! коли файл /foo/mail було змінено
· Ти є пошта коли файл /bar/mailbox було змінено
· типове повідомлення, коли файл /baz/mail%data було змінено.
РОБОТА КОНТРОЛЬ
робота контроль це функція оболонки, яка виконує кілька команд одночасно і
призупиняє/відновлює виконання команд.
Коли контроль активний:
· Кожен конвеєр, виконаний оболонкою, стає a робота. Робота має свою унікальну групу процесів
Ідентифікатор, який спільно використовується для всіх процесів завдання.
· Якщо процеси завдання призупинено, поки оболонка очікує процесів
щоб завершити, оболонка переходить до наступної команди, ніби процес завершився.
Оболонка запам'ятовує роботу як призупинену, щоб її можна було відновити пізніше.
· Якщо завдання виконується синхронно, оболонка встановлює групу процесів переднього плану
терміналу до групи процесів завдання. Коли роботу завершено (або призупинено),
оболонка повертається на передній план.
· Внутрішня оболонка, яка виконує заміну команди, має власний унікальний ідентифікатор групи процесів, наприклад
робота. Однак оболонка не запам'ятовує підоболонку як роботу, тому це не може бути
призупинено або відновлено.
· Якщо оболонка інтерактивна, стан завдання повідомляється перед кожним запитом командного рядка
ніби команда роботи -n виконується.
· Стандартний ввід асинхронної команди не перенаправляється автоматично
/dev/null (якщо не в режимі POSIXly-correct).
· Оболонка не виходить, коли отримує сигнал SIGTSTP.
· Значення - містить спеціальний параметр m.
· Повідомляється про факт завершення завдання, на яке чекало вбудоване очікування
(тільки якщо оболонка є інтерактивною, а не в POSIXly-коректному режимі).
Коли керування завданнями неактивне, процеси, що виконуються оболонкою, мають ту саму групу процесів
ID як оболонка. Оболонка розглядає асинхронні команди як неконтрольоване завдання.
Ви можете використовувати такі вбудовані засоби для керування завданнями:
роботи
друкує існуючі завдання
fg і bg
виконувати завдання на передньому плані або у фоновому режимі
чекати
чекає завершення завдань (або призупинення)
відректися
забуває роботу
вбивати
посилає сигнал на робочі місця
Інтерактивна оболонка керування завданнями за замовчуванням повідомляє про стан завдань перед кожним запитом.
Ви можете встановити наступні параметри, щоб зробити звіт про статус оболонки в інший час:
повідомляти
оболонка повідомляє негайно, коли статус завдання змінюється.
повідомити-ле
оболонка негайно повідомляє, коли статус завдання змінюється під час рядкового редагування.
Завдання видаляється зі списку завдань оболонки, коли:
· він закінчився, і повідомляється статус «завершено»,
· вбудований очікування успішно дочекався завершення завдання, або
· відмова від вбудованого видалила роботу.
Примітка:
Слово «зупинити» є синонімом «призупинити» в контексті контролю за роботою.
робота ID
Деякі вбудовані засоби використовують наступне позначення, яке називається робота ID, вказати роботу
працювати на:
%, %%, %+
поточну роботу
%-
попередня робота
%n
робота, яка має номер роботи n, Де n є додатним цілим числом
%рядок
посада, назва якої починається рядок
%?рядок
посада, назва якої містить рядок
Команда ток робота та попередній робота це завдання, вибрані оболонкою відповідно до наведеного нижче
правила:
· Якщо є одне або кілька призупинених завдань, з них вибирається поточне завдання.
· Коли є одна або більше призупинених робіт, крім поточної роботи, попередньої роботи
вибирається з них.
· Поточна і попередня робота завжди різні. Коли оболонка має лише одну роботу,
це поточна робота, попередньої роботи немає.
· Після завершення поточного завдання попереднє завдання стає поточним.
· Коли поточне завдання змінюється, старе поточне завдання стає попереднім, за винятком
коли закінчиться стара робота.
· Коли активне завдання призупинено, воно стає поточним.
Yash має кілька параметрів для зміни правил вибору поточної/попередньої роботи. (
правила вище мають пріоритет над параметрами нижче.)
cur-async
Коли запускається нова асинхронна команда, вона стає поточним завданням.
cur-bg
Коли завдання відновлюється вбудованою програмою bg, воно стає поточним.
cur-stop
Коли роботу призупинено, вона стає поточною.
Поточна та попередня посади не змінюються, якщо виконуються наведені вище правила.
Правила вибору поточної/попередньої роботи, визначені в стандарті POSIX, більш вільні
ніж правила yash вище. Інші POSIX-сумісні оболонки можуть вибирати поточний і попередній
роботи по-різному.
Вбудовувана КОМАНДИ
Вбудований Команди це команди, які реалізовані в оболонці та виконуються за допомогою
оболонка без зовнішніх програм.
типи of вбудований Команди
У yash є три типи вбудованих команд: спеціальні вбудовані команди,
напівспеціальні вбудовані команди та звичайні вбудовані команди.
спеціальний вбудований Команди є набагато важливішими командами, ніж інші. Їх виконують
незалежно від того, чи існують відповідні зовнішні команди чи ні. Результати
призначення змінних, які виникають у простій команді, яка викликає спеціальний вбудований останній
після завершення команди. Крім того, у POSIXly-коректному режимі неінтерактивний
оболонка негайно завершує роботу з ненульовим статусом виходу, коли виникає помилка перенаправлення, призначення
помилка або неправильне використання опції чи операнда в спеціальній вбудованій команді.
Напівпричепи спеціальний вбудований Команди є другою важливою вбудованою командою. Вони є
виконується незалежно від того, чи існують відповідні зовнішні команди чи ні. В інших
частини вони такі самі, як звичайні вбудовані команди.
регулярний вбудований Команди є менш важливими вбудованими командами, включаючи команди, які можуть
бути реалізовані як зовнішні команди або не перераховані в POSIX. У POSIXly-правильно
режимі звичайний вбудований виконується лише тоді, коли знайдено відповідну зовнішню команду
в PATH.
синтаксис of команда аргументація
У цьому розділі ми пояснюємо загальні правила щодо аргументів команд. Вбудовані команди
yash дотримуватися правил, якщо не вказано інше.
Є два типи аргументів команди. Один — це параметри, а інший — операнди. Ан
параметр - це аргумент, який починається з дефіса (-) і змінює спосіб команди
поводиться. Деякі варіанти вимагають аргументів. Операнд — це аргумент, який не є опцією і
визначає об'єкти, над якими працює команда.
Якщо ви вказуєте більше одного параметра для команди, порядок параметрів є звичайним
не значний. Однак порядок операндів впливає на поведінку команди.
Опція може бути односимвольною або довгою. Односимвольний варіант
позначається однією літерою. Довгий варіант визначається кількома
символи алфавіту. Стандарт POSIX передбачає лише варіанти з одним символом, тому в
у POSIX-коректному режимі ви не можете використовувати довгі параметри.
Опція з одного символу складається з дефіса, за яким слідує літера. Наприклад, -a is
односимвольний варіант. Опція з одного символу, яка приймає аргумент, потребує
аргумент має бути відразу після назви параметра.
Приклад 4. Команда комплект вбудований та односимвольне опції
Для комплекту вбудованого, -m є опцією з одного символу, яка не приймає аргумент і
-o той, який приймає аргумент.
· комплект -o помилка -m
· комплект -оerrexit -m
У цих двох командних рядках помилка є аргументом до -o варіант.
У другому прикладі вище, -o параметр і його аргумент об'єднуються в один
аргумент командного рядка. Стандарт POSIX не підтримує цей стиль і будь-який POSIX-сумісний
програми повинні вказувати параметри та їхні аргументи як окремі аргументи командного рядка,
хоча yash приймає обидва стилі.
Ви можете об’єднати опції з одного символу, які не приймають аргументів, в одну команду
рядковий аргумент. Наприклад, три варіанти -a, -b та -c можна об'єднати в -abc.
Довгий варіант складається з двох дефісів, за якими йде назва параметра. Наприклад,
--довгий варіант це довгий варіант. Ви можете опустити деякі останні символи довгої назви опції як
якщо це не двозначно. Наприклад, можна використовувати --довго замість --довгий варіант if
немає інших варіантів, починаючи з --довго. Як односимвольний варіант, довгий
Параметр, який приймає аргумент, вимагає, щоб аргумент був просто аргументом командного рядка
після назви параметра або вказується в тому самому аргументі командного рядка, що й параметр
ім'я, розділене знаком рівності (=).
Приклад 5. Команда fc вбудований та довго опції
Для вбудованого FC, --спокійно це довгий варіант, який не приймає аргументів і --редактор
той, який приймає аргумент.
· fc --редактор vi --спокійно
· fc --editor=vi --спокійно
У цих командних рядках vi є аргументом до --редактор варіант.
Аргументи, які не є параметрами (ані аргументи до них), інтерпретуються як операнди. The
Стандарт POSIX вимагає, щоб усі параметри вказувалися перед операндами. Тому в
POSIX-правильному режимі, будь-які аргументи, що йдуть після першого операнда, інтерпретуються
як операнди (навіть якщо вони виглядають як параметри). Якщо не в режимі POSIXly-correct, ви можете
вкажіть параметри після операнда.
Незалежно від того, чи знаходиться оболонка в режимі POSIXly-correct чи ні, аргумент, який є
просто складається з двох дефісів (--) можна використовувати як роздільник між параметрами та операндами.
Усі аргументи командного рядка після -- роздільник інтерпретуються як операнди, тому ви можете
правильно вказати операнди, які починаються з дефіса, використовуючи роздільник.
Приклад 6. Опції та операнди до комплект вбудований
· комплект -a -b -- -c -d
У цьому прикладі -a та -b є варіанти і -c та -d є операндами. The -- сам сепаратор
не є ні опцією, ні операндом.
Незалежно від того, чи знаходиться оболонка в режимі POSIXly-correct чи ні, аргумент, який є
просто складається з одного дефіса (-) інтерпретується як операнд.
РЕДАКТУВАННЯ
З лінійне редагування ви можете редагувати текст команди під час введення команди
інтерактивна оболонка. Він не тільки працює як простий редактор візуального інтерфейсу, але й є таким
інтегровано з історією команд. Ви можете викликати, редагувати та виконувати команди в
історія з редагуванням рядків замість використання вбудованого fc.
Рядкове редагування має два режими редагування, режими vi та emacs, кожен з яких має власний ключ
налаштування прив'язки. Перемикаючи режими редагування, ви можете змінювати прив’язки клавіш, які використовуються в
лінійне редагування. Кожен режим має відповідну опцію оболонки, яка визначає, чи буде
режим наразі активний чи ні. Одночасно може бути активним не більше одного режиму, тому
параметри для інших режимів автоматично вимикаються, коли ви вмикаєте параметр для
один режим. Уся функція рядкового редагування вимикається, коли ці параметри вимкнено.
Коли запускається інтерактивна оболонка, режим vi активується автоматично, якщо
стандартний вхід і помилка підключені до терміналу.
Рядкове редагування можна використовувати лише тоді, коли стандартний вхід і помилка підключені до a
термінал. Якщо ні, оболонка безшумно повертається до нормального механізму введення. Поки
використовується редагування рядків, оболонка використовує інтерфейс termios для зміни налаштувань введення/виведення
термінал і інтерфейс terminfo для аналізу вхідних послідовностей клавіш.
Склад опції on лінійне редагування
Наступні параметри можна встановити за допомогою вбудованого набору, щоб увімкнути редагування рядків і вибрати
режим редагування для активації:
vi
активує режим vi.
emacs
активує режим emacs.
Інші параметри, пов’язані з редагуванням рядків:
le-always-rp
Коли цей параметр увімкнено, правий запит завжди відображається: коли курсор
досягає правої підказки, він переходить до наступного рядка з початкової позиції, яка
інакше буде перезаписано введеним текстом.
le-comp-debug
Якщо ввімкнено, внутрішня інформація друкується під час завершення, що допоможе
сценарії завершення налагодження.
le-conv-meta
Коли ввімкнено, 8-й біт кожного вхідного байта завжди розглядається як прапор мета-ключа,
незалежно від даних terminfo.
le-no-conv-meta
Коли ввімкнено, 8-й біт кожного вхідного байта ніколи не розглядається як прапор мета-ключа,
незалежно від даних terminfo.
Параметри le-conv-meta та le-no-conv-meta не можна ввімкнути одночасно. Коли
один із них увімкнено, інший автоматично вимкнено. Якщо жоден з них не ввімкнено,
8-й біт може розглядатися як прапор мета-ключа залежно від даних terminfo.
le-prompt-sp
Якщо ввімкнено, оболонка друкує послідовність спеціальних символів перед друком кожного
підказка, щоб кожна підказка друкувалася на початку рядка.
Цей параметр увімкнено за замовчуванням.
le-visible-bell
Якщо ввімкнено, оболонка блимає термінал замість звукового сигналу, коли
потрібне сповіщення.
Редагування Режими
Команда vi режим це режим редагування, який пропонує прив’язки клавіш, подібні до режиму редактора vi.
Режим vi має два підрежими, які перемикаються під час редагування: вставка та команда
режими. Підрежим завжди скидається до режиму вставки, коли починається редагування рядка для a
новий командний рядок. У режимі вставки більшість символів вставляються до буфера, коли вони були введені.
У командному режимі символи введення розглядаються як команди, які переміщують курсор,
вставити/видалити текст тощо.
Команда emacs режим пропонує прив’язки клавіш, подібні до редактора emacs. Більшість персонажів є
вставляється до буфера, як введено, але більше символів розглядається як команди, ніж vi
режим вставки.
Під час введення ключових слів пошуку використовується інший підрежим. Підрежим називається
пошук режим, який пропонує дещо інші прив’язки клавіш залежно від активного редагування
Режим.
Лінійне редагування Команди
Усі символи, які користувач вводить під час активного рядкового редагування, розглядаються як рядкове редагування
команди, наведені нижче. Вбудований bindkey дозволяє налаштовувати прив’язки клавіш кожного
(окрім режиму пошуку).
У наведеному нижче списку показано не лише функції команд, але й типові прив’язки клавіш.
Ключові слова «vi-insert», «vi-command», «vi-search», «emacs», «emacs-search» означають vi
режим вставки, режим команд vi, режим пошуку для режиму vi (режим пошуку vi),
режим emacs і режим пошуку для режиму emacs (режим пошуку emacs),
відповідно.
Деякі команди приймають аргумент, який впливає на функцію команд. Наприклад,
Команда forward-char пересуває курсор на стільки символів, скільки вказано аргументом.
Щоб указати аргумент, використовуйте команду digit-argument безпосередньо перед іншою командою that
приймає аргумент.
Базовий редагування Команди
петля
Нічого не робити.
vi-команда
\^[
попередження
Сповіщення.
самостійно вставити
Вставте введений символ у поточну позицію курсору. Персонажі, які втекли
escape-послідовності не можна вставити.
vi-вставка, emacs
\\
Вставка-Tab
Вставити символ табуляції в поточну позицію курсору.
emacs
\^[\^I
очікувати-дослівно
Вставте символ, який введено одразу після цієї команди під поточним курсором
положення. Ця команда може ввести символ, який не можна ввести за допомогою
команда самостійного вставлення, за винятком нульового символу ('\ 0').
vi-вставка, vi-пошук, emacs-пошук
\^V
emacs
\^Q, \^V
цифра-аргумент
Передайте вхідну цифру наступній команді як аргумент.
Цю команду можна прив’язати до цифри або дефіса. Щоб передати «12» як аргумент для
команда forward-char у режимі vi, наприклад, enter 12l.
vi-команда
1, 2, 3, 4, 5, 6, 7, 8, 9
emacs
\^[0, \^[1, \^[2, \^[3, \^[4, \^[5, \^[6, \^[7, \^[8, \^[9, \^[-,
bol-or-digit
Як команда початку рядка, якщо немає аргументу; як
команда digit-argument інакше.
vi-команда
0
Прийняти рядок
Завершити редагування поточного рядка. До рядка автоматично додається новий рядок.
Рядок буде виконано оболонкою.
vi-вставка, vi-команда, emacs, emacs-пошук
\^J, \^М
рядок переривання
Залиште поточний буфер і завершіть редагування так, ніби було введено порожній рядок.
vi-вставка, vi-команда, vi-пошук, emacs, emacs-пошук
\!, \^C
еоф
Залиште поточний буфер і завершіть редагування так, ніби оболонка досягла кінця
введення. Зазвичай це забезпечує вихід оболонки.
eof-якщо-порожній
Як команда eof, якщо буфер порожній; як команда сповіщення в іншому випадку.
vi-вставка, vi-наказ
\#, \^D
eof-or-delete
Як команда eof, якщо буфер порожній; як команда delete-char
інакше.
emacs
\#, \^D
accept-with-hash
Подібно до команди accept-line, але:
· Знак решітки (#) вставляється на початку рядка, якщо його немає.
· В іншому випадку знак решітки видаляється з початку рядка.
vi-команда
#
emacs
\^[#
setmode-viinsert
Перейдіть у режим вставки vi.
vi-команда
i, \I
setmode-viкоманда
Перейдіть у командний режим vi.
vi-вставка
\^[
setmode-emacs
Перейдіть у режим emacs.
очікувати-символ, перервати-очікувати-символ
Ці команди не призначені для використання користувачем. Вони використовуються оболонкою для
реалізувати деякі інші команди.
перемалювати все
Передрукуйте підказку та поточний рядок на терміналі.
vi-вставка, vi-команда, vi-пошук, emacs, emacs-пошук
\^L
очистити та перемалювати все
Очистіть термінал і повторно надрукуйте підказку та поточний рядок.
Рух Команди
Рух Команди перемістити курсор на рядок. Більшість команд руху приймають аргумент.
Після передачі аргументу вони повторюють рух курсору стільки разів, скільки вказано
аргумент. Передача «4» як аргумент команди forward-char, наприклад,
пересуває курсор вперед на чотири символи.
Оболонка має кілька визначень слів як одиниць відстані: A велике слово є одним або
більше суміжних символів, які не є пробілами. А півслова це один або кілька суміжних символів
які не містять пробілів або розділових знаків. Ан emacsword є одним або кількома суміжними
буквено-цифрові символи. А viword є або:
· один або більше суміжних буквено-цифрових символів та/або підкреслення (_), або
· один або кілька суміжних символів, які не містять жодного з буквено-цифрових символів,
підкреслення та пробіли.
вперед-char
Перемістіть курсор до наступного символу.
vi-вставка
\R
vi-команда
l, (пробіл), \R
emacs
\R, \^F
назад-символ
Перемістіть курсор до попереднього символу.
vi-вставка
\L
vi-команда
h, \B, \L, \?, \^H
emacs
\L, \^B
вперед-велике слово
Перемістіть курсор до наступного великого слова.
vi-команда
W
кінець великого слова
Перемістіть курсор до наступного кінця великого слова.
vi-команда
E
назад-велике слово
Перемістіть курсор до попереднього великого слова.
vi-команда
B
вперед-півслово
Перемістіть курсор до наступного півслова.
кінець півслова
Перемістіть курсор до наступного кінця півслова.
назад-напівслово
Перемістити курсор до попереднього півслова.
вперед-viword
Перемістіть курсор до наступного viword.
vi-команда
w
кінець Viword
Перемістіть курсор до наступного кінця viword.
vi-команда
e
backward-viword
Перемістіть курсор до попереднього viword.
vi-команда
b
вперед-emacsword
Перемістіть курсор до наступного emacsword.
emacs
\^[f, \^[Ф
назад-emacsword
Перемістіть курсор до попереднього emacsword.
emacs
\^[b, \^[B
початок рядка
Перемістіть курсор на початок рядка.
vi-вставка, vi-наказ
\H
emacs
\H, \^A
кінцевий рядок
Перемістіть курсор до кінця рядка.
vi-вставка
\E
vi-команда
$, \E
emacs
\E, \^E
перейти до стовпця
Перемістіть курсор на nий символ у рядку, де n є аргументом. Припустимо
n = 1, коли немає аргументу.
vi-команда
|
перший-непорожній
Перемістіть курсор до першого непотрібного символу в рядку.
vi-команда
^
find-char
Перемістіть курсор у першу позицію, де символ, який вводиться одразу після
ця команда з'являється після поточної позиції курсору.
vi-команда
f
emacs
\^]
find-char-rev
Перемістіть курсор до останньої позиції символу, введеного одразу після
ця команда відображається перед поточною позицією курсору.
vi-команда
F
emacs
\^[\^]
till-char
Перемістіть курсор у першу позицію безпосередньо перед символом, який щойно введено
після цієї команди з'являється після поточної позиції курсору.
vi-команда
t
till-char-rev
Перемістіть курсор в останню позицію відразу після щойно введеного символу
після цієї команди з'являється перед поточною позицією курсору.
vi-команда
T
refind-char
Повторити останню команду find-char, find-char-rev, till-char, till-char-rev.
vi-команда
;
refind-char-rev
Повторіть останню команду find-char, find-char-rev, till-char, till-char-rev у
зворотний напрямок.
vi-команда
,
Редагування Команди
Команди редагування змінюють вміст буфера. Більшість команд редагування приймають
аргумент. Після передачі аргументу вони повторюють модифікацію стільки разів, скільки
заданий аргументом.
Тексти, видалені командами, ім’я яких починається з «kill», зберігаються в вбивати каблучка, з
який видалений вміст можна відновити в буфері. Останні 32 тексти є
зберігається в кільці вбивств.
delete-char
Видалити символ у поточній позиції курсору, якщо аргумент не передано; люблю
в іншому випадку команда kill-char.
vi-вставка, emacs
\X
delete-bigword
Видалити велике слово в поточній позиції курсору, якщо не передано аргументів; як
команда kill-bigword інакше.
видалити-півслово
Видалити напівслово в поточній позиції курсору, якщо аргумент не передано; люблю
команда kill-semiword інакше.
delete-viword
Видалити Viword у поточній позиції курсору, якщо не передано жодного аргументу; як
команда kill-viword інакше.
delete-emacsword
Видалити emacsword у поточній позиції курсору, якщо не передано жодного аргументу; люблю
інакше команда kill-emacsword.
backward-delete-char
Видалити символ безпосередньо перед поточною позицією курсору, якщо немає аргументу
пройдений; як і команда backward-kill-char.
vi-вставка, emacs
\B, \?, \^H
backward-delete-bigword
Видалити велике слово безпосередньо перед поточною позицією курсору, якщо не передано аргументів;
як команда backward-kill-bigword інакше.
назад-видалити-півслово
Видалити півслово безпосередньо перед поточною позицією курсору, якщо немає аргументу
пройдений; як команда backward-kill-semiword в іншому випадку.
vi-вставка
\^W
backward-delete-viword
Видалити Viword безпосередньо перед поточною позицією курсору, якщо не передано жодного аргументу;
як і команда backward-kill-viword.
backward-delete-emacsword
Видалити emacsword безпосередньо перед поточною позицією курсору, якщо немає аргументу
пройдений; як і команда backward-kill-emacsword.
рядок видалення
Видалити весь вміст буфера.
вперед-видалити рядок
Видалити всі символи від поточної позиції курсору до кінця буфера.
backward-delete-line
Видалити всі символи перед поточною позицією курсору.
vi-вставка
\$, \^U
kill-char
Видалити персонажа в поточній позиції курсора та додати його до кільця вбивств.
vi-команда
x, \X
kill-bigword
Видалити велике слово в поточній позиції курсора та додати його до кільця знищення.
вбити-півслово
Видалити напівслово в поточній позиції курсора та додати його до кільця знищення.
kill-viword
Видаліть Viword у поточній позиції курсора та додайте його до кільця знищення.
kill-emacsword
Видалити emacsword у поточній позиції курсору та додати його до кільця знищення.
emacs
\^[d, \^[D
backward-kill-char
Видалити символ безпосередньо перед поточною позицією курсору та додати його до вбивства
кільце.
vi-команда
X
backward-kill-bigword
Видалити велике слово безпосередньо перед поточною позицією курсору та додати його до видалення
кільце.
emacs
\^W
backward-kill-semiword
Видалити напівслово безпосередньо перед поточною позицією курсору та додати його до видалення
кільце.
backward-kill-viword
Видаліть Viword безпосередньо перед поточною позицією курсору та додайте його до kill
кільце.
backward-kill-emacsword
Видаліть emacsword безпосередньо перед поточною позицією курсору та додайте його до kill
кільце.
emacs
\^[\B, \^[\?, \^[\^H
лінія вбивства
Видаліть весь вміст буфера та додайте його до кільця знищення.
вперед-kill-line
Видалити всі символи від поточної позиції курсору до кінця буфера
і додайте його до кільця вбивств.
emacs
\^K
зворотна лінія вбивства
Видалити всі символи перед поточною позицією курсору та додати його до вбивства
кільце.
emacs
\$, \^U, \^X\B, \^X\?
поставити-перед
Вставте останній видалений текст перед поточною позицією курсору та перемістіть курсор
до останнього вставленого символу.
vi-команда
P
put
Вставте останній видалений текст після поточної позиції курсору та перемістіть курсор
до останнього вставленого символу.
vi-команда
p
поставити-зліва
Вставте останній видалений текст перед поточною позицією курсору та перемістіть курсор
до останнього вставленого символу.
emacs
\^Y
пут-поп
Замініть щойно вставлений текст наступним старішим видаленим текстом.
Цю команду можна використовувати лише відразу після put-before, put, put-left або put-pop
команда
emacs
\^[y, \^[Y
анулювати
Скасувати зміни останньою командою редагування.
vi
u
emacs
\^_, \^X\$, \^X\^U
скасувати все
Скасувати всі зміни в поточному буфері, відновивши початковий вміст.
vi
U
emacs
\^[\^R, \^[р, \^[Р
скасувати-скасувати
Скасувати скасування останньої команди скасування або скасування всього.
vi
\^R
скасувати-скасувати-все
Скасувати всі скасування останніми командами «скасувати» та «скасувати все».
переробляти
Повторіть зміну останньою командою редагування.
vi-команда
.
Завершення Команди
повний
Завершіть слово безпосередньо перед позицією курсору та, якщо їх більше одного
кандидат, показати список кандидатів.
повний-наступний-кандидат
Як повна команда, коли кандидатів немає в списку; інакше виберіть
наступний кандидат у списку.
vi-вставка, emacs
\^Я
повний-попередній-кандидат
Як повна команда, коли кандидатів немає в списку; інакше виберіть
попередній кандидат у списку.
vi-вставка, emacs
\bt
завершити наступний стовпець
Як повна команда, коли кандидатів немає в списку; інакше виберіть
перший кандидат у наступному стовпчику списку.
завершити-попередній-стовпець
Як повна команда, коли кандидатів немає в списку; інакше виберіть
перший кандидат у попередньому стовпчику списку.
завершити наступну сторінку
Як повна команда, коли кандидатів немає в списку; інакше виберіть
перший кандидат на наступній сторінці списку.
завершити-попередню сторінку
Як повна команда, коли кандидатів немає в списку; інакше виберіть
перший кандидат на попередній сторінці списку.
повний список
Завершіть слово безпосередньо перед позицією курсора.
Якщо ви не передаєте жодного аргументу, буде показано список кандидатів на завершення. В іншому випадку,
слово завершується на nго кандидата де n є аргументом.
emacs
\^[?, \^[=
повний-все
Замініть слово безпосередньо перед позицією курсора всіма можливими завершеннями
кандидатів, кожен розділений пробілом.
emacs
\^[*
повний-макс
Завершіть слово перед позицією курсору найдовшим із усіх префіксів
можливі кандидати на завершення.
ясно-кандидатів
Очистіть список кандидатів на завершення.
Vi-специфічний Команди
vi-replace-char
Замініть символ у позиції курсора на щойно введений символ
після цієї команди.
vi-команда
r
vi-вставка-початок
Перемістіть курсор на початок рядка та перейдіть у режим вставки vi.
vi-команда
I
vi-додавання
Перемістіть курсор до наступного символу та перейдіть у режим вставки vi.
vi-команда
I
vi-додавання до eol
Перемістіть курсор у кінець рядка та перейдіть у режим вставки vi.
vi-команда
A
ві-замінити
Перейдіть у режим вставки vi та почніть перезапис. Під час перезапису,
Команда self-insert замінює символ у позиції курсора, а не
вставлення символу. Перезапис закінчується після зміни режиму редагування.
vi-команда
R
vi-switch-case
Перемикання регістру символів між поточною та наступною позиціями курсору. Це
за командою має слідувати команда руху, яка визначає наступний курсор
положення.
vi-switch-case-char
Змінити регістр символу в поточній позиції курсора та перемістити курсор до
наступний символ.
vi-команда
~
ві-янка
Додайте до кільця вбивства символи між поточною та наступною позиціями курсору.
За цією командою повинна слідувати команда руху, яка визначає наступну
положення курсору.
vi-команда
y
ві-янк-то-еол
Додайте до кільця вбивств символи від поточної позиції курсору до кінця
лінія.
vi-команда
Y
vi-видалити
Видаліть символи між поточною та наступною позиціями курсору та додайте їх до
кільце вбивства. Ця команда повинна супроводжуватися командою руху, яка визначає
наступне положення курсору.
vi-команда
d
vi-delete-to-eol
Видалити символи від поточної позиції курсору до кінця рядка і
додати його до кільця вбивств.
vi-команда
D
ві-зміна
Видаліть символи між поточною та наступною позиціями курсору та перейдіть до
режим вставки vi. За цією командою повинна слідувати команда руху, яка
визначає наступну позицію курсору.
vi-команда
c
ві-зміна на еол
Видалити символи від поточної позиції курсору до кінця рядка і
перейдіть у режим вставки vi.
vi-команда
C
vi-change-line
Видаліть увесь вміст буфера та перейдіть у режим вставки vi.
vi-команда
S
витягнути і змінити
Подібно до команди vi-change, але видалений текст додається до кільця видалення.
vi-yank-and-change-to-eol
Подібно до команди vi-change-to-eol, але видалений текст додається до кільця знищення.
vi-yank-and-change-line
Подібно до команди vi-change-line, але видалений текст додається до кільця видалення.
ві-замінник
Видалити персонажа в поточній позиції курсора, додати його до кільця вбивств і
перейдіть у режим вставки vi.
vi-команда
s
vi-append-last-bigword
Просто вставте пробіл і останнє велике слово в останній запис історії команд
після поточної позиції курсору та перейдіть у режим вставки vi. Якщо аргумент n
пройдено, в nзамість останнього вставляється велике слово в записі.
vi-команда
_
псевдонім vi-exec
Виконати значення псевдоніма з іменем _c як команди редагування де c є персонажем
введіть відразу після цієї команди.
vi-команда
@
vi-edit-and-accept
Запустіть редактор vi, щоб відредагувати поточний вміст буфера. Коли редактор закінчив,
відредагований вміст буфера приймається так само, як команда accept-line, за винятком випадків
вихідний статус редактора ненульовий.
vi-команда
v
vi-повний-список
Подібно до команди завершити список, але також перейти в режим вставки vi.
vi-команда
=
vi-завершити-все
Подібно до команди завершити все, але також перейти в режим вставки vi.
vi-команда
*
vi-complete-max
Подібно до команди complete-max, але також перемикається в режим вставки vi.
vi-команда
\\
vi-пошук вперед
Перейдіть у режим пошуку vi та почніть пошук уперед в історії.
vi-команда
?
vi-пошук-назад
Перейдіть у режим пошуку vi та почніть пошук в історії.
vi-команда
/
Специфічний для Emacs Команди
emacs-transpose-chars
Перемістіть символ безпосередньо перед курсором праворуч.
emacs
\^T
emacs-transpose-words
Перемістіть emacsword безпосередньо перед курсором праворуч.
emacs
\^[t, \^[Т
emacs-менше-слово
Зробіть emacsword відразу після нижнього регістру курсору.
emacs
\^[l, \^[Л
emacs-upcase-word
Зробіть emacsword одразу після курсору у верхньому регістрі.
emacs
\^[u, \^[U
emacs-capitalize-word
Пишіть першу літеру emacsword великою відразу після курсору.
emacs
\^[c, \^[u
emacs-delete-horizontal-space
Видалити пробіли навколо курсору. Якщо було передано будь-який аргумент, просто видаліть пробіли
лише перед курсором.
emacs
\^[\\
emacs-лише-один-пробіл
Видаліть пробіли навколо курсора та залиште один пробіл. Якщо вказано аргумент,
залиште стільки пробілів, скільки аргумент.
emacs
\^[ (Esc після пробілу)
emacs-пошук вперед
Перейдіть у режим пошуку emacs і почніть пошук вперед в історії.
emacs
\^S
emacs-пошук-назад
Перейдіть у режим пошуку emacs і почніть пошук у зворотному напрямку.
emacs
\^R
Пов'язані з історією Команди
найдавніша історія
Нагадаємо найдавніший запис в історії. Якщо аргумент n передається, запис чий
номер є n натомість відкликається. Положення курсору залишається незмінним.
новітня історія
Згадайте найновіший запис в історії. Якщо аргумент n передається, запис чий
номер є n натомість відкликається. Положення курсору залишається незмінним.
історія повернення
Повернутися до початкового буфера, який не відповідає жодному з існуючих записів історії. Якщо
аргумент n передається запис, номер якого є n натомість відкликається. Курсор
позиція залишається незмінною.
найдавніша-історія-бол
Викличте найстаріший запис в історії та перемістіть курсор на початок
лінія. Якщо аргумент n передається запис, номер якого є n натомість відкликається.
vi-команда
G
новітня історія-бол
Викличте найновіший запис в історії та перемістіть курсор на початок
лінія. Якщо аргумент n передається запис, номер якого є n натомість відкликається.
повернення історії-бол
Повернутися до початкового буфера, який не відповідає жодному з існуючих записів історії та
перемістити курсор на початок рядка. Якщо аргумент n пройдено, вх
чий номер n натомість відкликається.
vi-команда
g
найдавніша-історія-еол
Викличте найстаріший запис в історії та перемістіть курсор у кінець рядка.
Якщо аргумент n передається запис, номер якого є n натомість відкликається.
emacs
\^[
новітня історія-еол
Викличте найновіший запис в історії та перемістіть курсор у кінець рядка.
Якщо аргумент n передається запис, номер якого є n натомість відкликається.
історія повернення-еол
Повернутися до початкового буфера, який не відповідає жодному з існуючих записів історії та
перемістити курсор у кінець рядка. Якщо аргумент n передається, запис чий
номер є n натомість відкликається.
emacs
\^[>
наступна історія
Згадати наступний запис історії. Положення курсору залишається незмінним.
попередня історія
Згадати попередній запис історії. Положення курсору залишається незмінним.
наступна історія-бол
Викличте наступний запис історії та перемістіть курсор на початок рядка.
vi-команда
j, +, \D, \^N
попередня історія-бол
Викличте попередній запис історії та перемістіть курсор на початок
лінія.
vi-команда
k, -, \U, \^P
наступна історія-еол
Викличте наступний запис історії та перемістіть курсор у кінець рядка.
vi-вставка, emacs
\D, \^N
перед-історія-еол
Викличте попередній запис історії та перемістіть курсор у кінець рядка.
vi-вставка, emacs
\U, \^P
пошук знову
Повторіть останній пошук в історії команд.
vi-команда
n
search-again-rev
Повторіть останній пошук історії команд у зворотному напрямку.
vi-команда
N
пошук знову вперед
Повторіть останній пошук історії команд у прямому напрямку.
пошук-знову-назад
Повторіть останній пошук історії команд у зворотному напрямку.
початок-пошук-вперед
Згадайте наступний запис історії, який починається з того самого тексту, що й текст із
від початку рядка до поточної позиції курсору. Позиція курсору
залишається незмінним.
початок-пошук-назад
Згадайте попередній запис історії, який починається з того самого тексту, що й текст з
початок рядка до поточної позиції курсору. Позиція курсору
залишається незмінним.
Пошук режим Команди
срч-самовставка
Вставте введений символ у поточну позицію курсору. Персонажі, які втекли
escape-послідовності не можна вставити.
vi-пошук, emacs-пошук
\\
srch-backward-delete-char
Видалити останній символ у пошуковому тексті. Якщо текст порожній:
· як команда srch-abort-search у режимі пошуку vi, або
· як команда alert у режимі пошуку emacs.
vi-пошук, emacs-пошук
\B, \?, \^H
srch-backward-delete-line
Видалити весь пошуковий текст.
vi-пошук, emacs-пошук
\$, \^U
срч-продовжити-вперед
Знайдіть наступний відповідний запис історії.
emacs-пошук
\^S
срч-продовжити-назад
Знайдіть попередній відповідний запис історії.
emacs-пошук
\^R
srch-accept-search
Завершіть режим пошуку, погодившись з показаним результатом.
vi-пошук
\^J, \^М
emacs-пошук
\^J, \^[
srch-abort-search
Перервати пошук і відновити попередній вміст буфера.
vi-пошук
\^[
emacs-пошук
\^G
Бігти послідовності
У вбудованому bindkey escape-послідовності використовуються для представлення спеціальних ключів, таких як
функціональні клавіші та клавіші зі стрілками. Кожна керуюча послідовність починається зі зворотної косої риски (\) і, таким чином
також існує escape-послідовність для самого зворотного слеша.
Нижче наведено доступні вихідні послідовності:
\\
Зворотна коса риска (\)
\B
Повернення на одну позицію
\D
стрілка вниз
\E
кінець
\H
Головна
\I
Вставити (Insert-char, Enter-insert-mode)
\L
Стрілка ліворуч
\N
Сторінка вниз (наступна сторінка)
\P
Page-up (попередня сторінка)
\R
Стрілка праворуч
\U
Стрілка вгору
\X
видаляти
\!
ВНУТР
\#
EOF
\$
Вбити
\?
ERASE
\^@
Ctrl + @
\^A, \^B, ..., \^Z
Ctrl + A, Ctrl + B, ..., Ctrl + Z
Зауважте, що Ctrl + I, Ctrl + J і Ctrl + M є символами табуляції, нового рядка та повернення каретки,
відповідно.
\^[
Ctrl + [ (Escape)
\^\
Ctrl + \
\^]
Ctrl +]
\^^
Ctrl + ^
\^_
Ctrl+_
\^?
Ctrl + ? (Видалити)
\F00, \F01, ..., \F63
F0, F1, ..., F63
\a1
Верхній лівий кут на клавіатурі
\a3
Угорі праворуч на клавіатурі
\b2
По центру клавіатури
\bg
початок
\bt
Задня вкладка
\c1
Внизу зліва на клавіатурі
\c3
Внизу праворуч на клавіатурі
\ca
Очистити всі вкладки
\cl
Закрити
\cn
Скасувати
\co
Command
\cp
Скопіювати
\cr
Створити
\cs
Очистити екран або стерти
\ct
Очистити вкладку
\dl
Видалити рядок
\ei
Вихід-вставка-режим
\ел
Очистити до кінця рядка
\es
Очистити до кінця екрана
\et
Enter (Надіслати)
\пр
вихід
\fd
знайти
\hp
Документи
\il
Вставка-рядок
\ll
Додому вниз
\я
Повідомлення
\mk
Відзначити
\РС
Подія миші
\mv
Рухатися
\nx
Наступний об'єкт
\на
відкритий
\op
Опції
\pr
Друк (копія)
\pv
Попередній-об'єкт
\rd
Переробляти
\re
Резюме
\rf
Ref (Довідка)
\rh
оновлення
\rp
заміщати
\rs
перезапуск
\sf
Прокрутка вперед (прокрутка вниз)
\sl
Виберіть
\sr
Прокрутка назад (прокрутка вгору)
\ст
Set-tab
\su
Призупиняти
\sv
Зберегти
\уд
розстібати
\SE
Shift + End
\SH
Shift + Головна
\SI
Shift + Insert
\SL
Shift + стрілка вліво
\SR
Shift + стрілка вправо
\SX
Shift + Delete
\Sbg
Shift + початок
\Scn
Shift + скасування
\Sco
Shift + Command
\Scp
Shift + Копіювати
\Scr
Shift + Створити
\Sdl
Shift + Delete-рядок
\Sel
Shift + кінець рядка
\Секс
Shift + Вихід
\Sfd
Shift + Знайти
\Шп
Shift + Довідка
\Smg
Shift + повідомлення
\Smv
Shift + Перемістити
\Snx
Shift + Далі
\Sop
Shift + параметри
\Spr
Shift + Print
\Spv
Shift + Попередній
\Srd
Shift + Повторити
\Sre
Shift + Відновити
\Srp
Shift + заміна
\Ssu
Shift + призупинити
\Ssv
Shift + зберегти
\Sud
Shift + Скасувати
INTR, EOF, KILL і ERASE — це спеціальні символи, налаштовані командою stty. В
типова конфігурація, їх надсилають, набравши Ctrl+C, Ctrl+D, Ctrl+U та Ctrl+H,
відповідно, але деякі налаштування використовують Ctrl+? замість Ctrl+H для СТИРАННЯ.
Command лінія завершення
Використовуючи команди complete і complete-next-candidate тощо, ви можете виконати команду
імена, параметри та операнди. За замовчуванням команда complete-next-candidate пов’язана
за допомогою клавіші Tab у режимах вставки vi та emacs.
Введіть кілька перших літер назви команди або шляху, натисніть клавішу Tab і виберіть список
буде показано відповідні імена. Ви можете вибрати кандидата зі списку, щоб завершити
назву, натиснувши клавішу Tab ще раз. Якщо є лише одне відповідне ім’я, списку не буде
буде показано, і ім’я буде безпосередньо завершено.
Якщо назва, яку потрібно заповнити, містить такі символи, як * та ?, це розглядається як шаблон.
Ім'я в командному рядку буде безпосередньо замінено всіма можливими відповідними іменами
візерунок (не можна вибрати зі списку).
Зазвичай назви команд доповнюються назвами команд і аргументами команд
імена шляхів. однак, завершення Функції можна визначити для уточнення результатів завершення.
Завершення деталі
При виконанні завершення вперше після запуску оболонки INIT
файл завантажується як командний рядок . -АЛ завершення/INIT виконується. Якщо файл
не знайдено, мовчки ігнорується. Це автоматичне завантаження в основному призначене для
функції завершення завантаження в комплекті з оболонкою, але ви можете дозволити завантаження оболонки
ваші власні функції, помістивши файл у шлях завантаження.
Після завершення імені команди оболонка виконує завершення//команд функція
і під час завершення аргументу команди, завершення//аргумент функція. Якщо ті
функції завершення не визначені, оболонка просто завершує за допомогою імен команд або
імена шляхів. Під час завершення інших імен, таких як ім’я користувача в розширенні тильди та
ім'я параметра в розширенні параметра, функції завершення ніколи не використовуються: the
оболонка просто доповнюється іменами користувачів, іменами параметрів або будь-яким іншим.
Функції завершення виконуються без аргументів. Наступні локальні змінні
автоматично визначаються під час виконання функцій завершення:
IFS
Значенням є три символи пробілу, табуляції та нового рядка, які є
значення змінної за замовчуванням.
СЛОВА
Ця змінна є масивом, елементами якого є ім’я команди та її аргументи
вже введено до завершення аргументу. При виконанні a
ім'я команди, масив не має елементів.
ЦІЛЬОВЕ СЛОВО
Значення – це частково введена назва команди або аргумент, який виконується
завершено.
Кандидати на завершення генеруються шляхом виконання повного вбудованого під час a
функція завершення.
Функції завершення не повинні виконувати введення/виведення на термінал, інакше буде відображений текст
пошкоджений. Функції завершення мають працювати якомога швидше для кращого користувача
досвід.
Під час виконання функції завершення:
· POSIXly-коректний режим тимчасово вимкнено,
· опція err-exit тимчасово вимкнена, і
· пастки не виконуються.
ПОЗИЦІЙНО-ПРАВИЛЬНО РЕЖИМ
Yash здебільшого працює, як визначено в POSIX.1-2008, Shell & Utilities, але деякі
функції не підкоряються POSIX для зручності використання. Коли потрібна повна відповідність POSIX, ви
можна ввімкнути POSIXly-правильно режим щоб яш якомога точніше підкорявся POSIX.
Якщо yash запускається з іменем «sh», то POSIXly-коректний режим вмикається автоматично.
Команда -o позитивно-правильно параметр командного рядка також увімкне POSIXly-коректний режим. Після
yash запущено, POSIXly-коректний режим можна ввімкнути, виконавши команду
рядок комплект -o позитивно-правильно.
Коли ввімкнено режим POSIXly-correct, yash не лише намагається виконувати вимоги
POSIX, але також розглядає як помилки більшість умов, де є поведінка невизначених or
невизначених від POSIX. У результаті більшість функцій yash вимкнено в
POSIX-коректний режим.
Нижче наведено повний список відмінностей у поведінці між тим, коли yash знаходиться в
Режим POSIXly-коректний і коли ні. Коли ввімкнено режим POSIXly-correct:
· Використовуються різні сценарії ініціалізації.
· Глобальні псевдоніми не замінюються.
· Вкладені команди в складеній команді не повинні бути порожніми.
· Слова, розгорнуті в циклі for, призначаються як глобальна змінна, а не як локальна.
Змінна повинна мати переносне (тільки ASCII) ім’я. Крапка з комою перед do не може
з'являтися без in після назви змінної.
· Перший шаблон у команді case не може бути що С.
· функція Ключове слово не можна використовувати для визначення функції. Функція повинна мати a
переносне (лише ASCII) ім'я.
· Прості команди не можуть призначати масивам.
· Зміна значення LC_CTYPE змінна після ініціалізації оболонки робить
не впливають на локаль оболонки.
· RANDOM змінну не можна використовувати для генерації випадкових чисел.
· Розгортання тильди лише розширює ~ та ~ім'я користувача.
· Розширення параметрів не може бути вкладеним. Індекси не допускаються.
· Команди в командній підстановці виду $(Команди) щоразу аналізуються
заміна виконана.
· В арифметиці розкладання, дробових чисел і ++ та -- оператори не можуть бути
використовується. Усі змінні мають бути числовими.
· Під час переспрямування до файлу, якщо розширення шляху дало більше одного або ні
pathname, воно не відразу розглядається як помилка. Замість цього оболонка намагається лікувати
слово перед розширенням як шлях.
· Перенаправлення сокетів, тут не можуть бути рядки, перенаправлення каналу та перенаправлення процесу
використаний
· Під час виконання простої команди помилка пошуку команди не запускає виконання
в COMMAND_NOT_FOUND_HANDLER змінна.
· У пошуку команд звичайна вбудована потребує відповідної зовнішньої команди
щоб вбудований був знайдений.
· асинхронні команди ігнорують сигнали SIGINT і SIGQUIT, навіть якщо керування завданнями
активний. Стандартний ввід асинхронних команд перенаправляється до /dev/null, якщо
оболонка не є інтерактивною, незалежно від того, активний контроль завдань чи ні.
· Деякі вбудовані поводяться інакше. Зокрема, деякі параметри командного рядка не можуть бути
використаний
· Неінтерактивна оболонка завершує роботу, коли спеціальній вбудованій системі надається синтаксична помилка
аргументів або коли виникає помилка при призначенні чи перенаправленні за допомогою спеціального
вбудований.
· Інтерактивна оболонка не виконує PROMPT_COMMAND змінна перед друком a
підказка. Цінності PS1, PS2 та PS4 змінні аналізуються по-різному.
· Під час перевірки пошти друкується сповіщення, якщо файл було змінено,
незалежно від того, чи файл порожній.
ЧАСТО ЗАПИТАЛИ ПИТАННЯ І ВИРІШЕННЯ ПРОБЛЕМ
Команда дефолт підказка is занадто простий ...
Без файлу yashrc yash майже такий самий, як необроблена оболонка POSIX. Поставте зразок яшрц
у вашому домашньому каталозі (~/.yashrc) і налаштуйте його на свій розсуд.
Як може I використання Unicode (не ASCII) символи?
Щоб увімкнути підтримку символів Unicode, потрібно встановити змінні середовища локалі.
Якщо змінні вже налаштовано відповідно до ваших уподобань, можливо, ви цього не зробили
робити будь-що. Щоб перевірити поточні налаштування локалі, ви можете скористатися місце дії
команда:
$ локаль
LANG=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8
У цьому прикладі файл місце дії команда показує, що всі категорії налаштувань локалі є
налаштовано для англійської мови, регіону США та кодування UTF-8.
Якщо поточна конфігурація не відповідає вашим уподобанням, установіть LC_ALL
змінна така:
експорт LC_ALL=en_US.utf8
Якщо ви хочете використовувати інші мови, регіони або кодування, вам потрібно встановити змінну на
інше значення. Зверніться до документації вашої ОС, щоб дізнатися, як їх налаштувати
змінні в деталях.
Якщо ви хочете застосовувати ту саму конфігурацію кожного разу, коли запускаєте yash, напишіть команду
in ~/.yashrc or ~/.yash_profile.
Якщо yash все ще відхиляє введені символи Unicode, дивіться розділ нижче
лінійне редагування.
Лінійне редагування робить НЕ робота
Спочатку введіть нудьгувати $TERM і подивіться, чи друкує він a розсудлива value. xterm це найбезпечніше значення, яке
повинен працювати в будь-якому існуючому середовищі. Кольорові версії як xterm-16color та інші
такі типи терміналів, як rxvt та vt100 також може працювати. Усі можливі значення можна перерахувати за допомогою
носок команда. Бажано вибрати значення, яке відповідає дійсному типу клеми
який ви використовуєте, але він може не працювати, якщо вибраний тип терміналу не підтримується
система, на якій запущено yash. Якщо так, спробуйте змінити ТЕРМІН значення за експорт
ТЕРМІН=xтермін, наприклад, щоб знайти значення, яке працює.
Якщо рядкове редагування працює, але у вас виникають проблеми з введенням символів Unicode (не ASCII), спробуйте
увімкнувши опцію le-no-conv-meta комплект -o le-no-conv-meta.
ФОРМАЛЬНИЙ ВИЗНАЧЕННЯ OF КОМАНДА СИНТАКС
У цьому розділі визначено синтаксис команд оболонки як граматику виразу аналізу.
Набір терміналів граматики — це набір символів, які можна обробляти на
середовище, в якому виконується оболонка (так званий набір символів виконання), за винятком
що набір не містить нульового символу ('\ 0').
Нижче наведено список нетерміналів граматики з відповідними виразами аналізу. The
список не містить правил розбору вмісту та кінців тут документів. В
POSIX-коректний режим, граматика відрізняється від списку нижче, щоб вимкнути не-POSIX
функціональні можливості.
CompleteCommand
Послідовність EOF
Послідовність
N* Список*
список
Трубопровід ((&& / ||) N* Конвеєр)* ListSeparator
Трубопровід
Банг? Команда (|N* Команда)*
Command
CompoundCommandRedirection* /
!RFunctionDefinition /
!R Проста команда
CompoundCommand
Subshell / Групування / IfCommand / ForCommand / WhileCommand / CaseCommand /
ФункціяКоманда
Підоболонка
(Послідовність)S*
Групування
LeftBraceSequenceRightBrace
IfCommand
IfSequenceThen Sequence (Elif Sequence Then Sequence)* (Else Sequence)? Fi
ForCommand
ForNameS* Роздільник? (Розділювач InWord*)? DoSequenceDone
WhileCommand
(While / Until) SequenceDo Послідовність Done
CaseCommand
CaseWordN* In N* CaseItem* Esac
CaseItem
!Esac ((S*)? Слово (| S* Слово)* )Послідовність (;; / &Esac)
ФункціяКоманда
Функціональне слово ((S* ))? N* CompoundCommandRedirection*
Визначення функції
Імена* ( S* )N* CompoundCommandRedirection*
SimpleCommand
&(Слово / Перенаправлення) (Призначення / Перенаправлення)* (Слово / Перенаправлення)*
Призначення
ІМ'Я=Слово /
ІМ'Я =(N* (Слово N*)* )
ІМ'Я
![[:digit:]] [[:alnum:] _]+
PortableName
![0-9] [0-9ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]+
слово
(WordElement / !SpecialChar .)+ S*
WordElement
\ . / ' (!' .)* ' / "QuoteElement* " / Параметр / Арифметика / Підстановка команд
QuoteElement
\ ([$`"\] / NL) / Параметр / Арифметика / Підстановка команд /
![`"\]
Параметр
$ [@*#?-$! [:цифра:]] / $PortableName / $ParameterBody
ParameterBody
{ParameterNumber? (ParameterName / ParameterBody / Parameter) ParameterIndex?
ParameterMatch? }
ParameterNumber
# ![+=:/%] !([-?#] })
Ім'я параметра
[@*#?-$!] /
[[:alnum:] _]+
ParameterIndex
[ParameterIndexWord (, ParameterIndexWord)? ]
ParameterIndexWord
(WordElement / !["'],] .)+
ParameterMatch
:? [-+=?] ParameterMatchWord /
(# / ## / % / %%) ParameterMatchWord /
(:/ / / [#%/]?) ParameterMatchWordNoSlash (/ ParameterMatchWord)?
ParameterMatchWord
(WordElement / !["'}] .)*
ParameterMatchWordNoSlash
(WordElement / !["'/}] .)*
Арифметика
$((ArithmeticBody* ))
Арифметичне тіло
\ . / Параметр / Арифметика / Підстановка команд / ( Арифметичне тіло ) /
![`()]
Заміна команди
$(Послідовність) / `CommandSubstitutionBody* `
CommandSubstitutionBody
\ [$`\] /
!` .
Redirection
RedirectionFDRedirectionOperatorS* Word /
ПеренаправленняFD <(Послідовність) /
ПеренаправленняFD >( Послідовність )
ПеренаправленняFD
[[:цифра:]]*
RedirectionOperator
< / <> / > / >| / >> / >> | / <& / >& / << / <<- / <<
ListSeparator
роздільник / &N* /
&) /
&;;
сепаратор
;N* / N+ / EOF
N
S* NL
S
[[:blank:]] / Прим
коментар
# (!NL .)*
R
Bang / LeftBrace / RightBrace / Case / Do / Done / Elif / Else / Esac / Fi / For / If
/ В / Потім / До / Поки
Вибух
!D
Ліва дужка
{D
Права дужка
}D
випадок
випадокD
Do
doD
Зроблений
зробленийD
Еліф
ЕліфD
Ще
щеD
Esac
що СD
Fi
fiD
для
та цінностіD
функція
функціяD
If
ifD
In
inD
Потім
потімD
До
доD
У той час як
в той час якD
D
!WordS*
SpecialChar
[|&;<>()`\"' [:blank:]] / NL
NL
EOF
!.
ALIAS Вбудовувана
Команда псевдонім вбудований визначає та/або друкує псевдоніми.
синтаксис
· псевдонім [-gp] [ім'я[=значення]...]
Опис
Вбудований псевдонім визначає та/або друкує псевдоніми, як зазначено операндами. Друкований
псевдоніми можна використовувати як (частину) команд оболонки. Вбудований друкує всі наразі визначені
псевдоніми, коли операндів не задано.
Опції
-g, --глобальний
За допомогою цього параметра псевдоніми визначаються як глобальні псевдоніми; без цього варіанту, як
нормальні псевдоніми.
-p, --префікс
За допомогою цього параметра псевдоніми друкуються у формі повної команди, наприклад псевдонім -g foo='bar'.
Без цього параметра друкуються лише операнди команд foo='bar'.
Операнди
ім'я
Ім'я псевдоніма, який слід надрукувати.
ім'я=значення
Ім'я та значення псевдоніма, який визначається.
вихід статус
Статус виходу вбудованого псевдоніма дорівнює нулю, якщо немає помилки.
примітки
Символи, які не можна використовувати в назві псевдоніма, це пробіл, табуляція, новий рядок і будь-який
of =$<>\'"`;&|()#. У значенні псевдоніма можна використовувати будь-які символи.
Вбудований псевдонім є напівспеціальним вбудованим.
Стандарт POSIX не визначає параметрів для вбудованого псевдоніма, отже, параметрів немає
доступний у POSIXly правильному режимі.
МАСІВ Вбудовувана
Команда масив вбудований друкує або змінює масиви.
синтаксис
· масив
· масив ім'я [значення...]
· масив -d ім'я [індекс...]
· масив -i ім'я індекс [значення...]
· масив -s ім'я індекс значення
Опис
При виконанні без будь-яких параметрів або операндів вбудований друкує всі визначення масиву
стандартний вивід у формі, яку можна аналізувати як команди.
При виконанні с ім'я та значенняs (але без опції), вбудовані набори значенняs
як значення масиву з назвою ім'я.
З -d (--видалити) вбудований видаляє індексго значення масиву ім
ім'я. Кількість значень у масиві буде зменшено на кількість індексes
зазначено. Якщо індексго значення не існує, воно мовчки ігнорується.
З -i (--вставити) варіант, вбудовані вставки значенняs в масив з іменем ім'я,
кількість значень у масиві буде збільшено на кількість значенняs зазначено. The
значення вставляються між індексй і наступні значення. Якщо індекс дорівнює нулю, значення дорівнюють
вставляється перед першим значенням. Якщо індекс більше, ніж кількість значень у
масив, значення додаються після останнього елемента.
З -s (--набір) варіант, вбудовані набори значення в якості індексго значення масиву
названий ім'я. Масив повинен мати принаймні індекс значень.
Опції
-d, --видалити
Видалити значення масиву.
-i, --вставити
Вставити значення масиву.
-s, --набір
Встановіть значення масиву.
Операнди
ім'я
Ім'я масиву, з яким потрібно працювати.
індекс
Індекс елемента масиву. Перший елемент має індекс 1.
значення
Рядок, до якого встановлюється елемент масиву.
вихід статус
Статус виходу вбудованого масиву дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудований масив не визначений у стандарті POSIX.
Команда масив ім'я значення... еквівалентно присвоєнню ім'я=(значення...).
BG Вбудовувана
Команда bg вбудований відновлює роботу у фоновому режимі.
синтаксис
· bg [робота...]
Опис
Вбудований bg надсилає сигнал SIGCONT до вказаного завдання. В результаті робота є
відновлено у фоновому режимі (якщо його було призупинено).
Назва завдання друкується, коли завдання буде відновлено.
Вбудований можна використовувати лише тоді, коли увімкнено керування завданнями.
Операнди
робота
Ідентифікатор роботи, яку потрібно відновити.
Одночасно можна вказати більше однієї роботи. Поточне завдання буде відновлено, якщо його немає
вказано.
Знак відсотка (%) на початку ідентифікатора завдання можна опустити, якщо це не так у оболонці
у POSIXly-коректному режимі.
вихід статус
Статус виходу вбудованого bg дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудований bg - напівспеціальний вбудований.
Стандарт POSIX передбачає, що вбудований не матиме жодного ефекту, коли завдання вже виконано
біг. Проте вбудований bg yash завжди надсилає сигнал SIGCONT до завдання.
BINDKEY Вбудовувана
Команда bindkey вбудований друкує або змінює прив’язки клавіш, які використовуються під час редагування рядків.
синтаксис
· bindkey -аєв [ключ [команда]]
· bindkey -l
Опис
При виконанні з -l (-- список) вбудований перелік усіх доступних редагування рядків
команди на стандартний вивід.
При виконанні з одним із інших параметрів вбудований друкує або змінює прив’язки клавіш
для режиму редагування, визначеного опцією:
· Без ключ or команда, усі наразі визначені прив’язки друкуються відповідно до стандарту
вивести у формі, яку можна розібрати як команди, які відновлюють поточні прив'язки, коли
страчено.
· З ключ але без команда, лише прив’язка до даного ключ друкується.
· З ключ та команда, ключ обов'язково команда.
Опції
-a, --vi-команда
Надрукуйте або змініть прив’язки для командного режиму vi.
-e, --emacs
Роздрукуйте або змініть прив’язки для режиму emacs.
-v, --vi-вставити
Роздрукуйте або змініть прив’язки для режиму вставки vi.
Операнди
ключ
Послідовність символів однієї чи кількох клавіш, прив’язана до команди редагування. The
Послідовність може включати escape-послідовності.
команда
Команда редагування рядка, до якої ключ пов'язаний. Якщо команда є одним дефісом (-), ключ
не пов'язаний.
вихід статус
Статус виходу вбудованого ключа bindkey дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудований bindkey не визначений у стандарті POSIX.
BREAK Вбудовувана
Команда перерву вбудований перериває виконання циклу.
синтаксис
· перерву [гніздо]
· перерву -i
Опис
При виконанні без -i (--ітерація), вбудований перериває наразі
виконується цикл for, while або until. Під час виконання у вкладених циклах він перериває гніздоth
внутрішня петля. За замовчуванням гніздо є один. Якщо кількість поточних виконаних вкладених циклів
менше, ніж гніздо, вбудований перериває крайній цикл.
При виконанні з -i (--ітерація) вбудований перериває поточний запуск
(внутрішнє) ітераційне виконання.
Опції
-i, --ітерація
Перервати ітераційне виконання замість циклу.
Операнди
гніздо
Кількість циклів для переривання, яка має бути додатним цілим числом.
вихід статус
Статус виходу вбудованої перерви такий:
· нуль, якщо цикл було успішно перервано.
· команда, яка була виконана безпосередньо перед розривом, вбудована, якщо ітерація
виконання було успішно перервано.
примітки
Перерва вбудована спеціальна вбудована.
Стандарт POSIX не визначає параметрів для вбудованого розриву; вбудований не приймає
параметри в режимі POSIXly-correct.
CD Вбудовувана
Команда cd вбудований змінює робочий каталог.
синтаксис
· cd [-L|-P] [каталог]
Опис
Вбудований cd змінює робочий каталог на каталог, визначений операндом.
Шлях до нового робочого каталогу призначається PWD змінна, чий попередній
значення знову присвоюється OLDPWD змінна.
If каталог це відносний шлях, який не починається з '.' або "..", шляхи в CDPATH
змінні шукаються, щоб знайти новий робочий каталог. Обшук проводиться в порядку
подібно до останнього кроку командного пошуку, але шукається каталог замість an
звичайний виконуваний файл. Якщо новий робочий каталог знайдено з CDPATH, його ім'я шляху
надруковано на стандартний вихід. Якщо під час пошуку не знайдено відповідного каталогу,
каталог просто розглядається як шлях відносно поточного робочого каталогу.
Якщо робочий каталог було успішно змінено, значення YASH_AFTER_CD змінна
виконується як команда, якщо оболонка не перебуває в режимі POSIXly-correct. Якщо змінна
є масивом, його значення виконуються ітеративно (пор. вбудований eval).
Опції
-L, --логічний
Символічні посилання в імені шляху нового робочого каталогу не розпізнаються. Новий
значення PWD може включати компоненти шляху, які є символічними посиланнями.
-P, --фізичний
Символічні посилання в шляху до нового робочого каталогу розпізнаються. Новий
значення PWD змінна ніколи не включає компоненти шляху, які є символічними посиланнями.
--default-directory=каталог
Якщо цей параметр вказано, і каталог операнд опущено, аргумент цього
варіант використовується для каталог операнд. Якщо каталог операнд вказано, це
варіант ігнорується.
Команда -L (--логічний) і -P (--фізичний) варіанти взаємовиключні: тільки останній
зазначений є ефективним. Якщо жоден не вказано, -L передбачається.
Операнди
каталог
Шлях до нового робочого каталогу.
If каталог є одним дефісом ('-'), значенням OLDPWD змінна передбачається для
новий шлях до каталогу, який виводиться у стандартний вивід.
If каталог опущено, робочий каталог буде змінено на вказаний каталог
по --default-directory=... варіант. Якщо цей параметр також не вказано,
за замовчуванням це домашній каталог.
вихід статус
Статус завершення вбудованого компакт-диска дорівнює нулю, якщо робочий каталог був успішно створений
змінений і відмінний від нуля, якщо була помилка.
примітки
CD вбудований - напівспеціальний вбудований.
Стандарт POSIX не визначає використання YASH_AFTER_CD змінна або
--default-directory=... варіант. Стандарт не дозволяє використовувати опцію з одиночним
дефіс операнд.
Статус виходу команд у YASH_AFTER_CD змінна не впливає на змінну
cd вбудований.
Колон Вбудовувана
Команда двокрапка вбудований нічого не робить.
синтаксис
· : [аргумент...]
Опис
Вбудована двокрапка нічого не робить. Будь-які аргументи командного рядка ігноруються.
вихід статус
Статус виходу вбудованої двокрапки дорівнює нулю.
примітки
Двокрапка вбудована — спеціальна вбудована.
Аргументи розгортаються, а перенаправлення виконуються як зазвичай. Товста кишка і правда
вбудовані мають такий самий ефект, але двокрапка є спеціальною вбудованою, тоді як true є a
напівспеціальний.
КОМАНДА Вбудовувана
Команда команда вбудований виконує або ідентифікує команду.
синтаксис
· команда [-befp] команда [аргумент...]
· команда -v|-V [-abefkp] команда...
Опис
Без того -v (--ідентифікувати) Або -V (--verbose-ідентифікувати) виконується вбудований
команда з аргументs таким же чином, як останній крок виконання простого
команди. Команда розглядається як вбудована чи зовнішня команда або функція відповідно
до параметрів, указаних у вбудованій команді. Оболонка не виходить із аргументу
синтаксична помилка тощо, навіть якщо команда є спеціальною вбудованою
З -v (--ідентифікувати) варіант, команда ідентифікується. Якщо команда знайдена в $ PATH,
його повне ім'я шляху друкується. Якщо це ключове слово, функція або вбудована функція, яка не знайдена
in $ PATH, назва команди просто друкується. Якщо це псевдонім, він друкується у формі
як псевдонім ll='ls -я. Якщо команда не знайдена, нічого не друкується та статус виходу
дорівнює нулю.
Команда -V (--verbose-ідентифікувати) варіант схожий на -v (--ідентифікувати) варіант, але
вихідний формат більш зручний для людини.
Опції
-a, --псевдонім
Знайдіть команду як псевдонім. Необхідно використовувати з -v (--ідентифікувати) Або -V
(--verbose-ідентифікувати) варіант.
-b, --builtin-command
Знайдіть команду як вбудовану.
-e, --зовнішня команда
Знайдіть команду як зовнішню команду.
-f, --функція
Пошук команди як функції.
-k, --ключове слово
Знайдіть команду як ключове слово. Необхідно використовувати з -v (--ідентифікувати) Або -V
(--verbose-ідентифікувати) варіант.
-p, --стандартний шлях
Пошук системи за умовчанням PATH замість поточного $ PATH.
-v, --ідентифікувати
ідентифікувати командаs і надрукувати у форматі, визначеному стандартом POSIX.
-V, --verbose-ідентифікувати
ідентифікувати командаs і друкувати в зручному для людей форматі.
Якщо жодне з -a (--псевдонім), -b (--builtin-command), -e (--зовнішня команда), -f
(--функція), А також -k (--ключове слово) вказано параметри, припускаються наступні значення за замовчуванням:
Без того -v (--ідентифікувати) Або -V (--verbose-ідентифікувати) варіант
-b -e
З -v (--ідентифікувати) Або -V (--verbose-ідентифікувати) варіант
-a -b -e -f -k
Операнди
команда
Команда, яку потрібно виконати або ідентифікувати.
аргумент...
Аргументи, що передаються виконуваній команді.
вихід статус
Статус виходу вбудованої команди:
Без того -v (--ідентифікувати) Або -V (--verbose-ідентифікувати) варіант
статус виходу виконаної команди.
З -v (--ідентифікувати) Або -V (--verbose-ідентифікувати) варіант
нуль, якщо немає помилки.
примітки
Вбудована команда є напівспеціальною вбудованою.
У режимі POSIXly-correct інші параметри, ніж -p, -v та -V не можна використовувати і щонайбільше
один команда можна вказати. Стандарт POSIX не дозволяє вказувати обидва -v та -V
разом, але yash робить (тільки останній вказаний є ефективним).
ЗАВЕРШЕНО Вбудовувана
Команда повний вбудований генерує кандидатів на завершення. Цей вбудований можна лише виконати
із функцій завершення під час завершення командного рядка.
синтаксис
· повний [-А модель] [-Р модель] [-T] [-П префікс] [-С Суфікс] [-abcdfghjkuv] [[-O]
[-D description] слово...]
Опис
Вбудований генерує кандидати на завершення відповідно до вказаних аргументів. Немає
незалежно від того, як генеруються кандидати, лише ті кандидати, які відповідають завершеному слову
генеруються.
Опції
-A модель, --прийняти=модель
Приймайте лише кандидатів, які відповідають шаблону, визначеному цією опцією. Коли більше ніж
якщо вказано один із цих параметрів, доступні лише кандидати, які відповідають усім шаблонам
генерується.
-D description, --опис=description
Дайте характеристику слово кандидатів. Опис показано поруч із
кандидатів у списку кандидатів.
-O, --варіант
Кандидати розглядаються як параметри командного рядка. До кожного ставиться дефіс
кандидат, який розглядається як варіант.
-P префікс, --префікс=префікс
Ігнор префікс слова, що завершується під час створення кандидатів. Зазначений
префікс має бути початковою частиною слова.
Якщо завершене слово є file:///home/user/docume наприклад, командний рядок
повний -P файл: // -f генеруватиме шляхи-кандидати, які завершаться
/home/user/docume.
-R модель, --відхилити=модель
Відхиляти кандидатів, які відповідають шаблону, визначеному цією опцією. Коли більше одного
цього параметра, лише ті кандидати, які не відповідають жодному із шаблонів
генерується.
-S Суфікс, --суфікс=Суфікс
Додавати Суфікс кожному згенерованому кандидату.
-T, --без припинення
Не додавайте пробіл після завершення слова. Без цієї опції пробіл є
додається до завершеного слова, щоб вам не потрібно було вводити пробіл перед
наступне слово.
Опції Що вибрати кандидат Типи
-a, --псевдонім
Псевдоніми. (такий же, як --normal-alias --глобальний псевдонім)
--змінна-масиву
Масиви.
--bindkey
Команди рядкового редагування bindkey вбудований приймає.
-b, --builtin-command
Вбудовані команди. (такий же, як --спеціальний вбудований --напівспеціальний вбудований
--звичайний вбудований)
-c, -- команда
Команди. (такий же, як --builtin-command --зовнішня команда --функція)
-d, --каталог
Довідники.
--dirstack-index
Дійсні індекси стека каталогу.
--виконуваний-файл
Виконувані звичайні файли.
--зовнішня команда
Зовнішні команди.
-f, --файл
Файли (включаючи каталоги).
--завершена-робота
Ідентифікатори готових робіт.
--функція
Функції.
--глобальний псевдонім
Глобальні псевдоніми.
-g, --група
Групи користувачів.
-h, --ім'я хоста
Імена хостів.
-j, -- робота
ID роботи.
-k, --ключове слово
Ключові слова.
--normal-alias
Звичайні псевдоніми.
--звичайний вбудований
Звичайні вбудовані команди.
--запущена робота
Ідентифікатори завдань, які виконуються.
--скалярна змінна
Змінні, які не є масивами.
--напівспеціальний вбудований
Напівспеціальні вбудовані команди.
--сигнал
Сигнали
--спеціальний вбудований
Спеціальні вбудовані команди.
--stopped-job
Ідентифікатори вакансій, які призупинено.
-u, --ім'я користувача
Імена для входу користувачів.
-v, --змінний
Змінні.
Якщо -d (--каталог) параметр вказано без -f (--файл) варіант, the -S /
-T припускаються варіанти.
Згенеровані кандидати для ідентифікаторів вакансій не мають початкових знаків відсотка (%). Якщо слово
завершення починається зі знака відсотка, the -P % необхідно вказати параметр.
Операнди
Операнди розглядаються як кандидати на завершення.
вихід статус
Статус виходу вбудованого дорівнює нулю, якщо було згенеровано один або більше кандидатів, один, якщо
жодного кандидата не було створено або більше одного, якщо сталася помилка.
примітки
Повний вбудований не визначений у стандарті POSIX.
ПРОДОВЖИТИ Вбудовувана
Команда продовжувати вбудований пропускає ітерацію циклу, що виконується.
синтаксис
· продовжувати [гніздо]
· продовжувати -i
Опис
При виконанні без -i (--ітерація) вбудований перериває поточний
ітерація циклу for, while або until і починає наступну ітерацію циклу. Коли
виконується у вкладених циклах, це впливає на гніздоий внутрішній цикл. За замовчуванням гніздо є один.
Якщо кількість поточних виконаних вкладених циклів менше ніж гніздо, вбудований впливає
крайня петля.
При виконанні з -i (--ітерація), вбудований перериває поточну ітерацію
(внутрішнього) ітеративного виконання.
Опції
-i, --ітерація
Пропустити ітераційне виконання замість циклу.
Операнди
гніздо
Команда гніздоуражений внутрішній цикл. гніздо має бути натуральним числом.
вихід статус
Статус виходу вбудованої функції продовження:
· нуль, якщо ітерація циклу була успішно пропущена.
· команда, яка була виконана безпосередньо перед продовженням, вбудованим ітеративним
виконання було успішно пропущено.
примітки
Продовження вбудованого є спеціальним вбудованим.
Стандарт POSIX не визначає опцій для вбудованого продовження; вбудований не приймає
параметри в режимі POSIXly-correct.
DIRS Вбудовувана
Команда диски вбудований друкує вміст стека каталогів.
синтаксис
· диски [-Резюме] [індекс..]
Опис
Команда каталог стек це функція, яка записує історію робочих каталогів. Ви можете використовувати
вбудований pushd для збереження робочого каталогу в стеку каталогів, вбудований popd
для виклику збереженого робочого каталогу та вбудованих каталогів для перегляду вмісту стека.
Ці вбудовані засоби використовують DIRSTACK масив та PWD змінна для збереження вмісту стека.
Зміна масиву означає зміну вмісту стека.
Записи стека каталогу індексуються цілими числами зі знаком. Запис з індексом +0 є
поточний робочий каталог, +1 — останній збережений каталог, +2 — передостанній тощо
на. Від’ємні індекси розташовані у зворотному порядку: першим зберігається запис з індексом -0
каталог, -1 - другий, і -n це поточний робочий каталог, якщо стек має n
записи,
При виконанні без -c (-- ясно), вбудований каталог каталогів друкує поточний
вміст стека каталогів у стандартний вивід. З -c (-- ясно) варіант, the
вбудований очищає стек каталогів.
Опції
-c, -- ясно
Очистити вміст стека каталогів, за винятком поточного робочого каталогу, який має
індекс +0.
-v, -багатослівний
Друк індексів під час друку вмісту стека.
Операнди
індекс
Індекс запису стека, який потрібно надрукувати.
Ви можете вказати більше одного індексу. Якщо не вказано жодного індексу, усі записи
друкуються.
вихід статус
Статус виходу вбудованого каталога дорівнює нулю, якщо немає помилки.
примітки
Вбудовані каталоги не визначені в стандарті POSIX.
ВІДКРИТИСЯ Вбудовувана
Команда відректися вбудований знімає робочі місця.
синтаксис
· відректися [-а] [робота...}
Опис
Вбудована функція відмови видаляє вказані завдання зі списку завдань. Вилучених робочих місць не буде
більше не контролюються завданням, але процеси завдання продовжують виконуватися (якщо вони не були
призупинено).
Опції
-a, --все
Видаляє всі вакансії.
Операнди
робота
Ідентифікатор завдання, яке потрібно видалити.
Ви можете вказати більше одного ідентифікатора завдання. Якщо ви не вказали ідентифікатор роботи, поточний
роботу видалено. Якщо оболонка не в POSIXly-коректному режимі, %-префікс у
ідентифікатор роботи можна не вказувати.
вихід статус
Статус виходу вбудованої функції disown дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудована функція disown не визначена в стандарті POSIX.
DOT Вбудовувана
Команда точка вбудований читає файл і виконує в ньому команди.
синтаксис
· . [-AL] файл [аргумент...]
Опис
Вбудована крапка читає вказане файл, аналізує його вміст як команди та виконує
їх у поточному середовищі виконання команд.
If аргументs вказані, для них тимчасово встановлені позиційні параметри. The
позиційні параметри будуть відновлені, коли закінчиться вбудована точка. Якщо ні аргументs є
вказані, позиційні параметри не змінюються.
If файл не містить похилих рисок, шукає оболонка $ PATH для читабельного (але ні
обов’язково виконуваний) файл сценарію оболонки, ім’я якого є файл таким же чином, як команда
пошук. Якщо такий файл не знайдено, оболонка шукає a у поточному робочому каталозі
файл, якщо не в режимі POSIXly-correct. Щоб переконатися, що файл у поточному робочому стані
використовується каталог, поч файл з './'.
Опції
-A, --no-alias
Вимкнути заміну псевдонімів під час аналізу.
-L, --автозавантаження
Пошук $YASH_LOADPATH замість $ PATH, не зважаючи на погоду файл містить косі риски.
Команда файл значення не розглядається відносно поточного робочого каталогу.
Вбудована точка розглядає як операнди будь-які аргументи командного рядка після першого операнда.
Операнди
файл
Шлях до файлу для читання.
аргументація...
Рядки, для яких встановлюються позиційні параметри під час виконання.
вихід статус
Статус виходу вбудованої точки — це стан останньої виконаної команди. Статус виходу
дорівнює нулю, якщо файл не містить команд для виконання, і не дорівнює нулю, якщо файл не знайдено
або не вдалося відкрити.
примітки
Точковий вбудований - це спеціальний вбудований.
Неінтерактивна оболонка негайно завершує роботу з ненульовим статусом виходу, якщо крапка вбудована
не вдається знайти або відкрити файл для виконання.
Стандарт POSIX не визначає опцій для вбудованої точки; вбудований не приймає
параметри в режимі POSIXly-correct.
Стандарт POSIX не визначає аргументація... операнди. Це помилка вказати
аргументація... операндів у POSIX-коректному режимі.
ECHO Вбудовувана
Команда нудьгувати вбудований друкує свої аргументи.
синтаксис
· нудьгувати [рядок...]
Вбудований обробляє всі аргументи командного рядка як операнди, за винятком параметрів
описані нижче. Будь-яке слово, яке не можна розібрати як прийнятний варіант, розглядається як
операнд. Опції мають передувати всім операндам. Синтаксичні помилки ніколи не трапляються в луні
вбудований.
Опис
Вбудована echo друкує операнд рядокs, після якого йде новий рядок до стандартного виводу.
Команда рядокs відокремлені пробілом.
Бігти послідовності
Команда ECHO_STYLE змінної та -e параметр увімкнути escape-послідовності, які замінюються
з відповідними символами:
\a
Символ дзвоника (код ASCII: 7)
\b
Backspace (код ASCII: 8)
\c
нічого Після цієї керуючої послідовності жодні символи не друкуються взагалі.
\e
Екранний символ (код ASCII: 27)
\f
Символ подачі форми (код ASCII: 12)
\n
Символ нового рядка (код ASCII: 10)
\r
Символ повернення каретки (код ASCII: 13)
\t
Символ горизонтальної табуляції (код ASCII: 9)
\v
Символ вертикальної табуляції (код ASCII: 11)
\\
Зворотний слеш
\0ххх
Символ, код якого ххх, Де ххх є вісімковим числом, що містить не більше трьох цифр.
Якщо escape-послідовності не ввімкнено, вони просто друкуються без змін.
ECHO_STYLE змінна
Команда ECHO_STYLE змінна визначає, які параметри прийнятні та чи є escape
послідовності ввімкнено за замовчуванням. Значення змінної має бути одним із
наступні:
SYSV, XSI
Жодні варіанти не приймаються. Вихідні послідовності завжди ввімкнено.
BSD
Команда -n варіант приймається. Екранні послідовності ніколи не вмикаються.
GNU
Команда -n, -e та -E варіанти приймаються. Вихідні послідовності не вмикаються
за замовчуванням, але його можна ввімкнути -e варіант.
ЗШ
Команда -n, -e та -E варіанти приймаються. Вихідні послідовності ввімкнено за замовчуванням,
але може бути вимкнено -E варіант.
DASH
Команда -n варіант приймається. Вихідні послідовності завжди ввімкнено.
RAW
Жодні варіанти не приймаються. Екранні послідовності ніколи не вмикаються.
Коли ECHO_STYLE змінна не встановлена, за замовчуванням SYSV.
Опції
-n
Не друкуйте новий рядок у кінці.
-e
Увімкнути escape-послідовності.
-E
Вимкнути керуючі послідовності.
вихід статус
Статус виходу вбудованої луни дорівнює нулю, якщо немає жодної помилки.
примітки
Стандарт POSIX не визначає ECHO_STYLE змінна, ані будь-які параметри для
вбудований. Відповідно до POSIX, поведінка вбудованого визначається реалізацією, коли
перший аргумент -n або коли будь-який аргумент містить зворотну косу риску. По максимуму
портативність, слід віддавати перевагу вбудованому printf над вбудованим echo.
ВІЙСЬКІ Вбудовувана
Команда евал вбудований обчислює операнди як команди.
синтаксис
· евал [-i] [команда...]
Вбудований eval вимагає, щоб усі параметри передували операндам. Будь-які аргументи командного рядка
після першого операнда всі обробляються як операнди.
Опис
eval аналізує операнди як команди та виконує їх у поточному виконанні команди
довкілля.
При виконанні без -i (--ітерація) усі операнди об’єднуються в
один рядок (з пробілом, вставленим між кожним операндом) і аналізується/виконується відразу.
З -i (--ітерація) варіант, вбудований виконує ітеративний виконання: операнди є
аналізуються/виконуються один за одним. Якщо вбудований продовження виконується за допомогою -i (--ітерація)
під час ітераційного виконання, виконання поточного операнда припиняється і
наступний операнд аналізується/виконується негайно. Розрив вбудований з -i
(--ітерація) схожий, але решта операндів не аналізуються/виконуються. The
значення ? спеціальний параметр зберігається перед початком ітераційного виконання. The
значення параметра відновлюється до збереженого після кожної ітерації.
Опції
-i, --ітерація
Виконайте ітераційне виконання.
Операнди
команда
Рядок, який аналізується та виконується як команди.
вихід статус
Статус виходу дорівнює нулю, якщо ні команда було зазначено або команда не містив фактичної команди
які можна виконати. Інакше, тобто якщо вбудований eval виконав один або більше
команд, статус виходу вбудованої eval – це стан останньої виконаної команди.
примітки
Вбудований eval — це спеціальний вбудований.
Стандарт POSIX не визначає параметрів для вбудованого eval; вбудований не приймає
параметри в режимі POSIXly-correct.
ВИКОН Вбудовувана
Команда Exec вбудований замінює процес оболонки іншою зовнішньою командою.
синтаксис
· Exec [-cf] [-а ім'я] [команда [аргумент...]]
Вбудований exec вимагає, щоб усі параметри передували операндам. Це важливо так
параметри для вбудованого exec не плутають з параметрами для команда. Будь-який командний рядок
аргументи після команда розглядаються як аргументs.
Опис
Коли вбудований exec виконується за допомогою команда, виконується оболонка команда з аргументs
у спосіб, подібний до останнього кроку виконання простої команди. Відмінності є
Що команда завжди розглядається як зовнішня команда, яка ігнорує будь-які існуючі функції та
вбудовані модулі та що системний виклик exec, який запускає зовнішню команду, викликається в
поточне середовище виконання команд замість підоболонки, що замінює процес оболонки
з новим командним процесом.
Якщо оболонка працює в POSIXly-правильному режимі або не інтерактивна, помилка у виконанні
команда змушує оболонку негайно вийти.
Якщо інтерактивна оболонка, яка не перебуває в режимі POSIXly-correct, зупинила завдання,
оболонка друкує попередження та відмовляється виконувати команда. Після того як процес оболонки є
замінено зовнішньою командою, інформація про завдання оболонки буде втрачена, тому ви це зробите
потрібно відновити або припинити зупинені завдання, надсилаючи сигнали вручну. Змусити оболонку до
виконувати команда незалежно від того, вкажіть -f (--сила) варіант.
При виконанні без команда, вбудований нічого не робить. Однак як побічний ефект
переспрямування, застосоване до вбудованого, залишається в поточному середовищі виконання команд
навіть після завершення вбудованого.
Опції
-a ім'я, --як=ім'я
Проходити ім'я, замість команда, для зовнішньої команди як її ім’я.
-c, -- ясно
Передайте зовнішній команді лише змінні, які призначені простою командою in
який виконується вбудований. Інші змінні середовища не передаються
команду.
-f, --сила
Придушити попередження, які перешкоджають виконанню команди.
Операнди
команда
Зовнішня команда для виконання.
аргумент...
Аргументи для передачі команді.
вихід статус
Якщо процес оболонки було успішно замінено зовнішньою командою, виходу немає
статус, оскільки процес оболонки більше не існує.
Статус виходу:
· 127, якщо команда не знайдена,
· 126, якщо команда знайдена, але не може бути виконана, і
· нуль, якщо ні команда було зазначено.
примітки
Вбудований exec є спеціальним вбудованим.
Стандарт POSIX не визначає параметрів для вбудованого exec; вбудований не приймає
параметри в режимі POSIXly-correct.
EXIT Вбудовувана
Команда вихід вбудований викликає вихід процесу оболонки.
синтаксис
· вихід [-f] [exit_status]
Опис
Вбудований вихід викликає вихід поточного процесу оболонки (або підоболонки).
Якщо інтерактивна оболонка має зупинену роботу, оболонка друкує попереджувальне повідомлення та відмовляється
щоб вийти. Щоб змусити оболонку вийти незалежно від цього, вкажіть -f (--сила) варіант або виконати
вбудований двічі поспіль.
Якщо було встановлено перехоплення EXIT, оболонка виконує перехоплення перед виходом.
Опції
-f, --сила
Придушити попередження, які б запобігли виходу оболонки.
Операнди
exit_status
Ціле невід’ємне число, яке буде статусом виходу оболонки, що виходить.
Якщо цей операнд опущено, статус виходу оболонки буде таким же, як і останній
команда, яка виконується перед вбудованою командою виходу (але, якщо вбудована виконується під час
trap, статус виходу буде відповідати останньому наказу перед входом у trap).
If exit_status 256 або більше, фактичним статусом виходу буде залишок
exit_status поділено на 256.
вихід статус
Оскільки вбудований ініціює вихід оболонки, для вбудованого не існує статусу виходу.
Як виняток, якщо оболонка відмовилася вийти, статус виходу вбудованої є
відмінний від нуля.
примітки
Вихід вбудований спеціальний вбудований.
Стандарт POSIX не визначає жодних опцій для вбудованого виходу; вбудований не приймає
параметри в режимі POSIXly-correct.
Стандарт POSIX передбачає, що exit_status операнд має бути від 0 до 255
(включно). Yash приймає цілі числа більше 255 як розширення.
Якщо вбудований виконується під час перехоплення EXIT, оболонка просто завершить роботу без виконання
знову пастка. Якщо exit_status не вказано, статус виходу оболонки є яким
статус виходу був би, якби пастка не була встановлена. Дивіться також завершення оболонки.
ЕКСПОРТ Вбудовувана
Команда експорт вбудований позначає змінні для експорту до дочірніх процесів.
синтаксис
· експорт [-prX] [ім'я[=значення]...]
Опис
Вбудований експорт еквівалентний вбудованому набору тексту з -gx варіант.
примітки
Експортна вбудована спеціальна вбудована.
Стандарт POSIX визначає -p тільки варіант; інші параметри не можна використовувати в
POSIX-коректний режим. POSIX не дозволяє використовувати опцію разом із операндами.
ПОМИЛКОВИЙ Вбудовувана
Команда false вбудований нічого не робить безуспішно.
синтаксис
· false
Опис
Фальшивий вбудований нічого не робить. Будь-які аргументи командного рядка ігноруються.
вихід статус
Статус виходу помилкового вбудованого ненульовий.
примітки
Фальшвбудована - це напівспеціальна вбудована.
FC Вбудовувана
Команда fc вбудований повторно виконує або друкує команди з історії команд.
синтаксис
· fc [-qr] [-е редактор] [старт [кінець]]
· fc -s[q] [старий=new] [старт]
· fc -l[nrv] [старт [кінець]]
Опис
При виконанні без -l (-- список) вбудований виконує команди в
діапазон історії команд, заданий операндами. Якщо -s (-- мовчазний) варіант ні
указано, оболонка викликає редактор, який дозволяє редагувати команди перед ними
виконуються. Команди виконуються, коли ви виходите з редактора. Якщо -s (-- мовчазний)
якщо вказано параметр, команди виконуються негайно. У будь-якому випадку страчений
команди виводяться на стандартний вихід і додаються до історії.
При виконанні з -l (-- список) вбудований друкує команди в команді
діапазон історії, заданий операндами. За замовчуванням команди друкуються разом зі своїми
номери записів історії, але вихідний формат можна змінити за допомогою -n (--без номерів)) і
-v (-багатослівний) варіанти.
Опції
-e редактор, --редактор=редактор
Вкажіть редактор, який використовується для редагування команд.
Якщо цей параметр не вказано, значення FCEDIT використовується змінна. Якщо
змінна також не встановлена, vi використовується.
-l, -- список
Друк записів історії команд.
-n, --без чисел
Не друкуйте номери записів під час друку записів історії.
-q, --спокійно
Не друкуйте команди перед виконанням.
-r, --зворотний
Змінити порядок записів команд у діапазоні.
-s, -- мовчазний
Виконуйте команди без їх редагування.
-v, -багатослівний
Друкувати час виконання перед кожним записом історії під час друку.
Операнди
старт та кінець
Команда старт та кінець операнди визначають діапазон записів історії команд, які є
виконано або надруковано. Якщо один із операндів є цілим числом, він розглядається як історія
вхідний номер. Від’ємне ціле число означає nth останній запис де n є
абсолютне значення цілого числа. Якщо один із операндів не є цілим числом, він обробляється
як частина командного рядка: останній запис, який починається з рядка, є
обраний як початок або кінець діапазону.
Якщо перший запис діапазону, визначеного старт новіший за останній
запис діапазону, визначеного кінець, діапазон змінюється на протилежний, ніби -r
(--зворотний) була вказана опція. (Якщо параметр уже вказано, він є
скасовано.)
Значення за замовчуванням для старт та кінець є:
┌──────┬──────────┬────────────────┐
│ │ з -l │ без -l │
├──────┼─────────┼────────────────┤
│старт │ -16 │ -1 │
├──────┼─────────┼────────────────┤
│кінець │ -16 │ те саме, що старт │
└──────┴─────────┴────────────────┘
старий=new
Операнд цього формату замінює частину командного рядка. Якщо командний рядок
містить старий, його замінено на new і новий рядок буде виконано. Тільки перший
виникнення старий замінюється.
вихід статус
Якщо команди було виконано, статус виходу вбудованої fc є станом останньої виконаної
команда. В іншому випадку статус виходу дорівнює нулю, якщо немає жодної помилки.
примітки
ФК вбудований - напівспеціальний вбудований.
Стандарт POSIX не визначає -q (--спокійно) Або -v (-багатослівний) варіанти, тому вони
не можна використовувати в POSIXly-коректному режимі.
Історію команд не можна змінити під час рядкового редагування.
FG Вбудовувана
Команда fg вбудований відновлює роботу на передньому плані.
синтаксис
· fg [робота...]
Опис
Вбудований fg виводить вказане завдання на передній план і надсилає сигнал SIGCONT
Робота. У результаті завдання відновлюється на передньому плані (якщо воно було призупинено). The
вбудований потім чекає на завершення завдання та повертає йому статус завершення.
Назва завдання друкується, коли завдання буде відновлено.
Вбудований можна використовувати лише тоді, коли увімкнено керування завданнями.
Операнди
робота
Ідентифікатор роботи, яку потрібно відновити.
Якщо вказано більше одного завдання, вони відновлюються по порядку, по одному. The
поточне завдання буде відновлено, якщо не вказано жодне.
Знак відсотка (%) на початку ідентифікатора завдання можна опустити, якщо це не так у оболонці
у POSIXly-коректному режимі.
вихід статус
Статус виходу вбудованого fg – це статус (останнього) відновленого завдання. Статус виходу є
відмінне від нуля, коли була якась помилка.
примітки
Вбудований fg — напівспеціальний вбудований.
Ви не можете вказати більше одного завдання в режимі POSIXly-correct.
ГЕТОПЦ Вбудовувана
Команда getopts вбудований аналізує параметри команди.
синтаксис
· getopts список опцій змінна [аргумент...]
Опис
Вбудований getopts аналізує односимвольні параметри, які з’являються в аргументс. Щоразу
викликається вбудований, він аналізує одну опцію та призначає їй символ опції
змінна.
Команда список опцій операнд — це список символів параметрів, які повинні прийматися
аналізатор. в список опцій, параметр, який приймає аргумент, має бути вказаний як параметр
символ, за яким стоїть двокрапка. Наприклад, якщо ви хочете -a, -b та -c варіанти бути
розібрали і -b варіант прийняти аргумент, тоді список опцій повинно бути ab:c.
Коли параметр, який приймає аргумент, аналізується, аргумент призначається для OPTARG
змінна.
Коли варіант, який не вказано в список опцій знайдено або коли є аргумент опції
відсутній, результат залежить від першого символу список опцій:
· Якщо список опцій починається з двокрапки, символ опції присвоюється OPTARG
змінна і змінна встановлено або ? (коли параметр відсутній список опцій) Або :
(коли відсутній аргумент параметра).
· В іншому випадку, змінна встановлений в ?, OPTARG змінна не встановлена, а повідомлення про помилку є
надруковані.
Вбудований аналізує один параметр для кожного виконання. Для всіх опцій у наборі команд
аргументи рядка, які потрібно проаналізувати, вбудований має виконуватися неодноразово з тим самим
аргументи. Вбудований використовує OPTIND змінна, яку потрібно запам’ятати аргумент повинно бути
розібрати далі. Коли вбудований викликається вперше, значення змінної має бути
1, яке є значенням за замовчуванням. Ви не повинні змінювати змінну, доки не буде виконано всі параметри
було проаналізовано, коли вбудований встановлює змінну на індекс першого операнда в
аргументс. (Якщо операндів немає, буде встановлено число аргументплюс один.)
Коли ви хочете розпочати аналіз нового набору аргументs, вам потрібно скинути налаштування OPTIND
змінна до 1 заздалегідь.
Операнди
список опцій
Список параметрів, які слід прийняти як дійсні параметри під час аналізу.
змінна
Ім'я змінної, якій буде присвоєно результат.
аргументs
Аргументи командного рядка, які потрібно розібрати.
Коли ні аргументзадано s, позиційні параметри аналізуються.
вихід статус
Якщо параметр знайдено, незалежно від того, чи вказано він у список опцій, статус виходу
нуль. Якщо більше немає варіантів для аналізу, статус виходу ненульовий.
Приклад
aopt=false bopt= copt=false
поки getopts ab:c опт
do
case $opt in
a) aopt=true ;;
b) bopt=$OPTARG ;;
c) copt=true ;;
\?) повернути 2 ;;
що С
зроблений
якщо $aopt; then echo Параметр -a вказано; фі
if [ -n "$bopt" ]; тоді echo Параметр -b указано $bopt; фі
якщо $copt; потім echo Вказано параметр -c; фі
зсув $((OPTIND - 1))
Операнди echo: $*
примітки
In аргументпараметри мають передувати операндам. Вбудований розбір кінців
коли він зустрічає перший операнд.
Гетоптс вбудований - напівспеціальний вбудований.
Стандарт POSIX не визначає, що станеться, коли OPTIND присвоюється змінна
значення, відмінне від 1.
ХАШ Вбудовувана
Команда мішанина вбудований запам'ятовує, забуває або повідомляє розташування команд.
синтаксис
· мішанина команда...
· мішанина -r [команда...]
· мішанина [-а]
· мішанина -d користувач...
· мішанина -доктор [користувач...]
· мішанина -d
Опис
При виконанні с командаs, але без параметрів, вбудований негайно виконує команду
пошук шляхів і кеші командаповні шляхи.
При виконанні з -r (-видалити) видаляє шляхи командаs (або все
кешовані шляхи, якщо не вказано) з кешу.
При виконанні без параметрів або командаs, він друкує поточні кешовані шляхи до
стандартний вихід.
З -d (--каталог), вбудований виконує те саме з домашнім каталогом
кеш, а не кеш командного шляху. Кешовані шляхи домашнього каталогу використовуються в тильді
розширення.
Опції
-a, --все
Надрукувати всі кешовані шляхи.
Без цього параметра шляхи для вбудованих елементів не друкуються.
-d, --каталог
Впливає на кеш домашнього каталогу замість кешу шляхів команд.
-r, -видалити
Видалити кешовані шляхи.
Операнди
команда
Назва зовнішньої команди (яка не містить похилої риски).
користувач
Ім'я користувача.
вихід статус
Статус виходу вбудованого хешу дорівнює нулю, якщо немає жодної помилки.
примітки
Оболонка автоматично кешує шляхи команд і каталогів під час виконання команди або
виконує розгортання тильди, тому зазвичай немає потреби використовувати цю вбудовану функцію явно
кешувати шляхи.
Присвоєння значення PATH змінна видаляє всі шляхи команд із кешу, ніби мішанина
-r було страчено.
Стандарт POSIX визначає -r лише параметр: інші параметри не можна використовувати в
POSIX-коректний режим.
ДОПОМОГТИ Вбудовувана
Команда допомога вбудований друкує використання вбудованих.
синтаксис
· допомога [вбудований...]
Опис
Вбудована довідка друкує опис вбудованийs.
Вбудований витягує частину виведення людина Яш і виводить його на стандартний вихід.
Тому для роботи вбудованої сторінки довідки yash має бути встановлено.
Залежно від стилю форматування команди man, вбудована команда може не працювати як
очікується.
Операнди
вбудованийs
Назви вбудованих.
вихід статус
Статус виходу вбудованої довідки дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудована довідка не визначена в стандарті POSIX.
Багато вбудованих компонентів yash приймають --допомога варіант, який друкує той самий опис.
ІСТОРІЯ Вбудовувана
Команда історія вбудований друкує або редагує історію команд.
синтаксис
· історія [-cF] [-д запис] [-с команда] [-р файл] [-ж файл] [вважати]
Опис
Вбудована історія друкує або редагує історію команд.
При виконанні з опцією вбудована історія редагувань відповідно до опції. Якщо більше
ніж один параметр, кожен параметр обробляється по порядку.
При виконанні з вважати операнд, вбудований друкує останній вважати історія
записи до стандартного виводу так само, як вбудований fc.
При виконанні без параметрів або операндів вбудований друкує всю історію.
Опції
-c, -- ясно
Повністю очистити всі записи історії.
-d запис, --delete=запис
Видалити вказане запис, запис має бути визначено таким же чином, як і
старт та кінець операнди вбудованого fc.
-F, --flush-файл
Перебудуйте файл історії. Ця операція видаляє невикористані старі дані з файлу.
-r файл, --читати=файл
Читати командні рядки з файл і додати їх до історії. Вміст файлу є
розглядаються як рядки простого тексту.
-s команда, --set=команда
додавати команда як новий запис історії після видалення останнього запису.
-w файл, --write=файл
Напишіть всю історію файл. Усі існуючі дані у файлі буде втрачено. The
Формат виводу - рядки простого тексту, кожен з яких є командним рядком.
Операнди
вважати
Кількість записів для друку.
вихід статус
Статус виходу вбудованої історії дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудована історія не визначена в стандарті POSIX.
Історію команд не можна змінити під час рядкового редагування.
РОБОТА Вбудовувана
Команда роботи вбудований повідомляє про статус роботи.
синтаксис
· роботи [-lnprs] [робота...]
Опис
Вбудовані завдання друкують інформацію про завдання, якими наразі керує оболонка.
За замовчуванням для кожного завдання рядок за рядком друкується така інформація:
· номер роботи,
· + or - символ, якщо завдання є поточним або попереднім відповідно,
· статус, і
· командний рядок.
Опції
-l, -багатослівний
Надрукуйте ідентифікатор процесу, статус і командний рядок для кожного процесу в завданнях.
-n, --новий
Друкувати лише нові завдання: завдання, статус яких ніколи не повідомлявся після статусу
змінено.
-p, --pgid-only
Друк лише ідентифікаторів груп процесів завдань.
-r, --тільки для роботи
Друк лише поточних завдань.
-s, --лише зупинений
Друк лише зупинених завдань.
Операнди
роботаs
Ідентифікатори вакансій, про які потрібно повідомити. Коли ні робота вказано, всі роботи під ст
управління оболонкою повідомляється.
вихід статус
Статус виходу вбудованих завдань дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудовані робочі місця є напівспеціальними вбудованими.
Стандарт POSIX визначає -l та -p лише параметри: інші параметри не можна використовувати в
POSIX-коректний режим. У POSIXly-коректному режимі ефект -l опція
відрізняється тим, що статус повідомляється для кожної роботи, а не для кожного процесу.
Ідентифікатор групи процесів завдання, яке виконує yash, дорівнює ідентифікатору першого процесу
команда конвеєра, що формує завдання.
Вбити Вбудовувана
Команда вбивати вбудований посилає сигнал процесам.
синтаксис
· вбивати [-сигналізувати|-s сигналізувати|-н сигналізувати] процес...
· вбивати -l [-v] [сигналізувати...]
Вбудований kill вимагає, щоб усі параметри передували операндам. Будь-які аргументи командного рядка
після першого операнда всі обробляються як операнди.
Опис
При виконанні без -l варіант, вбудований надсилає сигнал процесам. Сигнал
надіслані можна вказати опцією. Сигнал SIGTERM надсилається, якщо сигнал не вказано.
При виконанні з -l параметр, вбудований друкує інформацію про сигналізуватиs до
стандартний вихід. Якщо ні сигналізувати вказано, інформація про всі сигнали друкується.
Опції
Сигналовизначальний опції
-сигналізувати, -s сигналізувати, -n сигналізувати
Параметр, що визначає сигнал, визначає сигнал, який буде надіслано процесам. сигналізувати може
вказується ім'ям або номером. Якщо номер 0 вказано, вбудований перевіряє, чи a
сигнал може бути надісланий процесам, але насправді сигнал не надсилається. Назви сигналів
не чутливі до регістру.
Одночасно можна вказати не більше одного параметра визначення сигналу.
Інше опції
-l
Друк інформації про сигнал замість надсилання сигналу.
-v
Друк додаткової інформації про сигнал.
Без цього параметра вбудований друкує лише назву сигналу. Ця опція додає
номер сигналу та короткий опис.
Коли -v вказано опцію, -l опцію можна опустити.
Операнди
процесes
Вкажіть процеси, яким надсилається сигнал.
Процеси можна вказати за ідентифікатором процесу, ідентифікатором групи процесів або ідентифікатором завдання. The
перед ідентифікатором групи процесу має бути дефіс (-), щоб його не розглядали як a
ідентифікатор процесу.
Коли 0 вказано як процес, сигнал надсилається до групи процесів, до якої
відросток оболонки належить. Коли -1 вказано, сигнал надсилається всім процесам на
система.
сигналізувати
Вкажіть сигнал, інформація про який друкується.
Сигнал можна вказати назвою, номером або статусом виходу команди
який був убитий сигналом.
вихід статус
Статус виходу вбудованого видалення дорівнює нулю, якщо немає жодної помилки. Якби сигнал був
надіслано принаймні одному процесу, статус виходу дорівнює нулю, навіть якщо сигнал не надіслано
всі зазначені процеси.
примітки
Вбудований kill є напівспеціальним вбудованим.
Аргументи команд, які починаються з дефіса, слід використовувати обережно. Команда вбивати -1
-2, наприклад, посилає сигнал 1 до групи процесів 2, оскільки -1 трактується як
опція визначення сигналу і -2 як операнд, що визначає групу процесу. Команди
вбивати -- -1 -2 та вбивати -ТЕРМІН -1 -2, з іншого боку, лікує обидва -1 та -2 як операнди.
Стандарт POSIX не визначає -n or -v параметри, тому їх не можна використовувати в
POSIX-коректний режим. Стандарт не дозволяє вказувати як номер сигналу
аргумент -s параметр або назву сигналу як сигналізувати операнд.
Стандарт вимагає, щоб імена сигналів вказувалися без SIG префікс, як INT та
ВИХІД. Якщо оболонка не в режимі POSIXly-correct, вбудована приймає SIG-префіксальний
також назви сигналів.
Popd Вбудовувана
Команда POPD вбудований витягує каталог зі стеку каталогів.
синтаксис
· POPD [індекс]
Опис
Вбудований popd видаляє останній запис зі стека каталогу, повертаючись до
попередній робочий каталог. Якщо індекс дається запис, визначений індекс видаляється
замість останнього.
Операнди
індекс
Індекс запису стека каталогу, який потрібно видалити.
Якщо пропущено, +0 (останній запис) передбачається.
вихід статус
Статус виходу вбудованого popd дорівнює нулю, якщо немає жодної помилки.
примітки
Використовувати цей вбудований засіб, якщо є лише один запис стека каталогу, є помилкою.
Вбудований popd не визначений у стандарті POSIX.
PRINTF Вбудовувана
Команда printf вбудований друкує форматовані значення.
синтаксис
· printf формат [значення...]
Опис
Вбудовані формати printf значенняs відповідно до формат і друкує їх відповідно до стандарту
вихід. На відміну від вбудованого echo, вбудований printf не друкує новий рядок
автоматично.
Процес форматування дуже подібний до функції printf у програмуванні на C
мова. Ви можете використовувати специфікації перетворення (які починаються з %) і керуючі послідовності
(які починаються з \в) формат. Будь-які інші символи, які не є частиною перетворення
специфікація або escape-послідовність друкуються буквально.
Перетворення специфікації
Специфікація перетворення починається зі знака відсотка (%).
За винятком специфікації перетворення %% споживає a значення, який відформатований відповідно до
специфікацію та роздрук. Кожна специфікація перетворення використовує один значення ,
порядок появи. Якщо їх більше значенняs ніж специфікації перетворення,
весь формат повторно обробляється до повного значенняs споживаються. Якщо значення бути
consumed відсутній, вважається, що це порожній рядок (якщо специфікація
потрібен рядок) або нуль (якщо число). Якщо ні значенняs дано, формат обробляється
тільки один раз.
Доступні специфікації перетворення:
%d, %i
друкує десяткове ціле число зі знаком
%u
друкує беззнакове ціле число в десятковому вигляді
%o
друкує ціле число без знака у вісімковому форматі
%x
друкує шістнадцяткове ціле число без знака в нижньому регістрі
%X
друкує ціле беззнакове число у верхньому регістрі шістнадцяткового
%f
друкує число з плаваючою комою в нижньому регістрі
%F
друкує число з плаваючою комою у верхньому регістрі
%e
друкує число з плаваючою комою з експонентою в нижньому регістрі
%E
друкує число з плаваючою комою з експонентою у верхньому регістрі
%g
так само, як %f or %e, вибрано автоматично
%G
так само, як %F or %E, вибрано автоматично
%c
друкує перший символ рядка
%s
друкує рядок
%b
друкує рядок (розпізнаючи escape-послідовності, наприклад, вбудовану echo)
%%
друкує знак відсотка (%)
для %g та %G, фактично використовується специфікація %f or %F якщо показник степеня
частина між -5 і точністю (виключно); %e or %E інакше.
У специфікації перетворення, за винятком %%, за першим знаком відсотка може стояти
прапорці, ширина поля та/або точність у такому порядку.
Прапори являють собою послідовність будь-якої кількості наступних символів:
знак мінус (-)
За допомогою цього прапорця до відформатованого значення додаються пробіли для заповнення поля
ширина. В іншому випадку пробіли додаються.
знак плюс (+)
Перед числом завжди ставиться знак плюс або мінус.
Пробіл ( )
Пробіл додається до форматованого числа, якщо воно не має знака плюс або мінус.
знак решітки (#)
Значення відформатовано в альтернативній формі: Для %o, друковане вісімкове ціле число
має принаймні один початковий нуль. для %x та %X, ненульове ціле число форматується за допомогою
0x та 0X префіксів відповідно. для %e, %E, %f, %F, %g та %G, десятковий знак
(він же символ основи) завжди друкується, навіть якщо значення є точним цілим числом.
для %g та %G, надруковане число має хоча б одну цифру в дробовій частині.
Нуль (0)
Нулі додаються до відформатованого числа, щоб заповнити ширину поля. Цей прапор
ігнорується, якщо вказано позначку мінус або специфікацію перетворення
%d, %i, %u, %o, %xабо %X з точністю.
Ширина поля вказується як ціле десяткове число без нулів на початку.
Ширина поля визначає мінімальну кількість байтів форматованого значення. Якщо відформатований
значення не досягає мінімальної кількості байтів, тому додається стільки пробілів, що
друковане значення має вказану кількість байтів.
Точність вказується як період (.), після якого йде десяткове ціле число. Якщо ціле число
опущено після крапки, точність вважається нульовою.
Для специфікацій перетворення %d, %i, %u, %o, %x та %X, точність визначає a
мінімальна кількість цифр. Якщо форматоване ціле число не досягає мінімальної кількості цифр,
додається стільки нулів, що надруковане ціле число має вказану кількість
цифри. Точністю за замовчуванням є одиниця для цих специфікацій перетворення.
Для специфікацій перетворення %e, %E, %f та %F, точність визначає кількість
цифри після коми. Точність за умовчанням для цих перетворень становить шість
технічні умови.
Для специфікацій перетворення %g та %G, точність визначає максимальну кількість
значущих цифр у надрукованому значенні. Точність за замовчуванням для них становить шість
специфікації перетворення.
Для специфікацій перетворення %s та %b, точність визначає максимальну кількість байтів
друкований рядок. Точністю за замовчуванням для цих перетворень є нескінченність
технічні умови.
У специфікації перетворення %08.3f, вказано нульовий прапор, ширина поля –
8, а точність дорівнює 3. Якщо цю специфікацію застосувати до значення 12.34, вихід
буде 0012.340.
Бігти послідовності
Наступні escape-послідовності розпізнаються в формат:
\a
Символ дзвоника (код ASCII: 7)
\b
Backspace (код ASCII: 8)
\f
Символ подачі форми (код ASCII: 12)
\n
Символ нового рядка (код ASCII: 10)
\r
Символ повернення каретки (код ASCII: 13)
\t
Символ горизонтальної табуляції (код ASCII: 9)
\v
Символ вертикальної табуляції (код ASCII: 11)
\\
Зворотний слеш
\"
Подвійне цитування
\'
Одинарні лапки (апостроф)
\ххх
Символ, код якого ххх, Де ххх є вісімковим числом, що містить не більше трьох цифр.
Операнди
формат
Рядок, який визначає, як значенняs слід відформатувати.
значенняs
Значення, відформатовані відповідно до формат.
Значенням є число або рядок.
Коли потрібне числове значення, значення може містити одинарні або подвійні лапки
символом, а не звичайним числом. Наприклад, команда printf '%d' "3"
буде надруковано 51 на типове середовище, де характер 3 має код символу 51.
вихід статус
Статус виходу вбудованого printf дорівнює нулю, якщо немає жодної помилки.
примітки
Стандарт POSIX не визначає точно, як слід обробляти багатобайтові символи
вбудований. Коли ви використовуєте %s специфікація перетворення з точністю або %c
специфікації перетворення, ви можете отримати несподівані результати, якщо форматоване значення
містить символ, який представлений більш ніж одним байтом. Яш ніколи не друкує тільки
частина байтів, які представляють один багатобайтовий символ, тому що всі багатобайтові
символи перетворюються на широкі символи під час обробки в оболонці.
Pushd Вбудовувана
Команда Pushd вбудований переміщує каталог у стек каталогів.
синтаксис
· Pushd [-L|-P] [каталог]
Опис
Вбудований pushd змінює робочий каталог на каталог таким же чином, як і cd
вбудований і додає його до стека каталогів. Якщо робочий каталог не можна змінити
успішно, стек не змінено.
Опції
Вбудований pushd приймає наступний параметр, а також параметри, які можна використовувати
для вбудованого CD:
--remove-duplicates
Якщо новий робочий каталог уже був у стеку каталогів, існуючий
запис видаляється зі стеку перед тим, як новий каталог буде вставлено в стек.
Операнди
каталог
Шлях до нового робочого каталогу.
If каталог є одним дефісом ('-'), значенням OLDPWD змінна передбачається для
новий шлях до каталогу, який виводиться у стандартний вивід.
If каталог є цілим числом зі знаком плюс або мінус, воно вважається записом
індекс стека каталогу. Запис видаляється зі стеку, а потім надсилається
стек знову.
If каталог опущено, робочий каталог буде змінено на вказаний каталог
по --default-directory=... варіант. Якщо цей параметр також не вказано,
за замовчуванням індекс +1.
вихід статус
Статус виходу вбудованого pushd дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудований pushd не визначений у стандарті POSIX.
PWD Вбудовувана
Команда pwd вбудований друкує поточний робочий каталог.
синтаксис
· pwd [-L|-P]
Опис
Вбудований pwd друкує абсолютний шлях до поточного робочого каталогу оболонки
стандартний вихід.
Опції
-L, --логічний
Якщо значення в PWD змінна — це абсолютний шлях до робочого каталогу оболонки
і шлях не містить жодного . or .. компонентів, тоді шлях друкується.
В іншому випадку надрукований шлях такий самий, як і під час -P опція вказана.
-P, --фізичний
Надрукований шлях не містить жодного . or .. компоненти, компоненти символічного посилання,
або зайві похилі риски.
Команда -L (--логічний) і -P (--фізичний) варіанти взаємовиключні: тільки останній
зазначений є ефективним. Якщо жоден не вказано, -L передбачається.
вихід статус
Статус виходу вбудованого pwd дорівнює нулю, якщо немає жодної помилки.
примітки
Pwd вбудований є напівспеціальним вбудованим.
READ Вбудовувана
Команда зчитування вбудований читає рядок зі стандартного введення.
синтаксис
· зчитування [-Aer] [-P|-p] змінна...
Опис
Вбудована функція читання читає рядок рядка зі стандартного вводу та призначає його до
задані змінні.
Якщо -r (--необроблений режим) якщо вказано параметр, обробляються всі символи в рядку
буквально.
Якщо -r (--необроблений режим) параметр не вказано, зворотні косі риски в рядку розглядаються як
котирування. Якщо зворотна коса риска знаходиться в кінці рядка, вона розглядається як лінія
продовження. Коли вбудований читає наступний рядок, PS2 змінна використовується як підказка
якщо оболонка є інтерактивною, а стандартним введенням є термінал.
Рядок введення підлягає розбиванню поля. Отримані слова присвоюються
зміннав порядку. Якщо слів більше ніж зміннаs, присвоюється остання змінна
всі решта слів (як би слова не були розділені). Якщо слів менше ніж
зміннаs, решті змінних присвоюються порожні рядки.
Опції
-A, --масив
Зробити останнім змінна масив. Замість призначення конкатенації решти
слів у звичайну змінну, слова присвоюються масиву.
-e, --лінійне редагування
Використовуйте редагування рядка, щоб прочитати рядок.
Щоб використовувати рядкове редагування, також мають бути виконані всі наступні умови:
· Оболонка є інтерактивною.
· Увімкнено опцію vi або emacs.
· Стандартний вхід і стандартна помилка підключені до терміналу.
-P, --ps1
Друк PS1 змінна як підказка перед читанням (першого) рядка, якщо оболонка є
інтерактивний, а стандартним входом є термінал.
-p підказка, --prompt=підказка
Роздрукуйте вказане підказка перед читанням (першого) рядка, якщо оболонка є інтерактивною
а стандартним входом є термінал.
-r, --необроблений режим
Не сприймайте зворотні косі риски як цитати.
Операнди
зміннаs
Імена змінних, яким присвоєно вхідні слова.
вихід статус
Статус виходу вбудованого читання дорівнює нулю, якщо немає жодної помилки.
Зауважте, що статус виходу відмінний від нуля, якщо кінець введення зустрічається перед читанням
цілий рядок.
примітки
Вбудований для читання є напівспеціальним вбудованим.
Стандарт POSIX визначає -r лише параметр: інші параметри не можна використовувати в
POSIX-коректний режим.
Команда PS1R та PS1S змінні впливають на поведінку рядкового редагування, якщо PS1 використовується підказка.
Те саме для PS2.
тільки для читання Вбудовувана
Команда лише для читання вбудований робить змінні та функції доступними лише для читання.
синтаксис
· лише для читання [-pxX] [ім'я[=значення]...]
· лише для читання -f[p] [ім'я...]
Опис
Вбудований лише для читання еквівалентний вбудованому набору тексту з -гр варіант.
примітки
Вбудований лише для читання — це спеціальний вбудований.
Стандарт POSIX визначає -p тільки варіант; інші параметри не можна використовувати в
POSIX-коректний режим. POSIX не дозволяє використовувати опцію разом із операндами.
ПОВЕРНЕННЯ Вбудовувана
Команда повертати вбудований повертається з функції або сценарію.
синтаксис
· повертати [-n] [exit_status]
Опис
При виконанні без -n (--без повернення) станеться одне з наступного:
· Якщо оболонка виконує функцію, виконання функції припиняється.
· Якщо вбудована крапка виконує сценарій, виконання сценарію припиняється.
· Якщо під час ініціалізації оболонка виконує сценарій, виконання сценарію
припиняється.
· Якщо оболонка виконує перехоплення, виконання перехоплення припиняється на
поточний оброблений сигнал.
· В іншому випадку оболонка завершує роботу, якщо вона не є інтерактивною.
При виконанні з -n (--без повернення), вбудований не робить нічого, крім повернення
зазначений exit_status.
Опції
-n, --без повернення
Не завершуйте функцію, сценарій, перехоплення чи оболонку.
Операнди
exit_status
Статус виходу вбудованого.
Значення має бути невід’ємним цілим числом.
Якщо опущено, використовується статус завершення останньої виконаної команди. (Але коли оболонка
виконує перехоплення, статус виходу останньої команди перед використанням перехоплення.)
вихід статус
Статус виходу вбудованого повернення визначається за допомогою exit_status операнд. Вихід
status також використовується як стан виходу завершеної функції, сценарію або оболонки.
примітки
Зворотній вбудований спеціальний вбудований.
Стандарт POSIX передбачає, що exit_status операнд має бути від 0 до 255
(включно). Yash приймає цілі числа більше 255 як розширення.
У стандарті POSIX поведінка вбудованого повернення визначається лише тоді, коли оболонка
виконує функцію або сценарій.
Стандарт POSIX не визначає жодних опцій для вбудованого повернення; вбудований не приймає
параметри в режимі POSIXly-correct.
УСТАНОВКА Вбудовувана
Команда комплект вбудований встановлює параметри оболонки та позиційні параметри.
синтаксис
· комплект [варіантs] [операндs]
· комплект -o
· комплект +o
Вбудований набір вимагає, щоб усі параметри передували операндам. Будь-які аргументи командного рядка
після першого операнда всі обробляються як операнди.
Опис
При виконанні без будь-яких аргументів команди, вбудований друкує список усіх існуючих
змінні до стандартного введення у формі, яку можна повторно використовувати як команди, які відновлять
визначення змінних.
Коли -o є єдиним аргументом команди, вбудований друкує список параметрів оболонки
їхні поточні налаштування. Коли +o є єдиним аргументом команди, вбудований друкує команди
які можна повторно використати для відновлення поточних параметрів оболонки.
В інших випадках вбудовані зміни параметрів оболонки та/або позиційних параметрів.
Опції
Якщо вказано один або кілька параметрів, вбудований вмикає або вимикає оболонку
параметри. Звичайна опція з префіксом дефіса вмикає опцію оболонки. Варіант, який є
з префіксом плюс (+) замість дефіса вимикає опцію оболонки. Наприклад, варіанти
-m, -o контролювати та --монітор увімкніть опцію та параметри монітора +m, +o контролювати,
++монітор вимкнути його.
Ім’я довгого параметра нечутливе до регістру та може містити нерелевантні небуквено-цифрові елементи
символів, які ігноруються. Наприклад, варіанти --le-comp-debug та --LeCompDebug він має
еквівалент. Якщо немає додається до назви довгого варіанту, значення зворотне. для
наприклад, --noallexport еквівалентна ++allexport та ++не сповіщати до --повідомити.
Опцію можна вказати в одній із таких форм:
· довгий варіант, напр --allexport
· ан -o параметр із назвою параметра, указаним як аргумент, наприклад -o allexport
· односимвольний варіант, напр -a
Не всі параметри можна вказати як односимвольні.
Доступні опції:
всеекспорт (-a)
Якщо ввімкнено, усі змінні автоматично експортуються після призначення.
дужка-розгортання
Ця опція дає змогу розширювати дужки.
справа-глоб
(Увімкнено за замовчуванням) Якщо ввімкнено, збіг шаблону чутливий до регістру в імені шляху
розширення.
стукати (+C)
(Увімкнено за замовчуванням) Якщо ввімкнено, >переспрямування поводиться так само, як і >|
перенаправлення.
cur-async, cur-bg, cur-stop
(Увімкнено за замовчуванням) Ці параметри впливають на вибір поточної роботи (див. ідентифікатор роботи).
точка-глобус
Якщо ввімкнено, крапки на початку імен файлів не обробляються спеціально
розширення імені шляху.
emacs
Цей параметр дозволяє редагувати рядки в режимі emacs.
помилка-вихід (-e)
Якщо ввімкнено, якщо конвеєр закінчується з ненульовим статусом виходу, оболонка негайно
виходить, якщо:
· конвеєр є умовою команди if або циклу while або until;
· трубопровід має префікс !, Або
· конвеєр - це одна складена команда, відмінна від угруповання підоболонки.
exec (+n)
(Увімкнено за замовчуванням) Команди фактично виконуються лише тоді, коли цей параметр увімкнено.
В іншому випадку команди просто аналізуються і не виконуються. Відключення цієї опції може бути
корисний для перевірки синтаксису. В інтерактивній оболонці цей параметр завжди передбачається
включений.
розширено-глоб
Цей параметр увімкне розширення в розширенні шляху.
куля (+f)
(Увімкнено за замовчуванням) Ця опція вмикає розширення імені шляху.
хеш-на-визначення (-h)
Коли функція визначена, коли цей параметр увімкнено, оболонка виконує негайно
командний шлях пошук кожної команди, яка з’являється у функції та кешує
повний шлях команди.
іст.-простор
Якщо ввімкнено, командні рядки, які починаються з пробілу, не зберігаються в команді
історії.
ignore-eof
Якщо ввімкнено, інтерактивна оболонка не завершується, коли вводиться EOF (кінець файлу). Це
запобігає виходу з оболонки, коли ви випадково натискаєте Ctrl-D.
le-always-rp, le-comp-debug, le-conv-meta, le-no-conv-meta, le-prompt-sp, le-visible-bell
Перегляньте параметри оболонки в рядковому редагуванні.
mark-dirs
Якщо ввімкнено, кінцеві назви каталогів суфіксуються скісною рискою в розширенні шляху.
монітор (-m)
Ця опція дозволяє контролювати завдання. Цей параметр увімкнено за замовчуванням для інтерактиву
оболонки.
повідомити (-b)
Коли статус завдання змінюється, коли цей параметр увімкнено, оболонка негайно
повідомляє в будь-який час. Цей параметр перевизначає параметр notify-le.
повідомити-ле
Ця опція схожа на опцію сповіщення, але про зміну статусу надсилається лише сповіщення
поки оболонка очікує введення з редагуванням рядків.
нульовий шар
Якщо ввімкнути, у розширенні шляхів будуть шаблони, які не відповідають жодному шляху
видалити з командного рядка, а не залишити як є.
позитивно-правильно
Ця опція вмикає POSIXly-коректний режим.
простежити все
(Увімкнено за замовчуванням) Якщо цей параметр вимкнено, параметр x-trace є тимчасовим
вимкнено, поки оболонка виконує команди, визначені в
COMMAND_NOT_FOUND_HANDLER, PROMPT_COMMANDабо YASH_AFTER_CD змінна.
не встановлено (+u)
(Увімкнено за замовчуванням) Якщо ввімкнено, невизначені параметри розгортаються до порожніх рядків
у розширенні параметрів. Якщо вимкнено, розширення невизначеного параметра призводить до
помилка
багатослівний (-v)
Якщо ввімкнено, оболонка друкує кожен командний рядок зі стандартною помилкою перед розбором
і його виконання.
vi
Цей параметр дозволяє редагувати рядок у режимі vi. Цей параметр увімкнено за замовчуванням у
інтерактивна оболонка, якщо стандартний ввід і помилка є терміналами.
x-trace (-x)
Якщо ввімкнено, результати розширення друкуються зі стандартною помилкою для кожного
виконується проста команда. Під час друку кожен рядок додається розширенням
результат PS4 змінна. Дивіться також опцію відстеження всього.
Операнди
Якщо один або кілька операндів передаються до вбудованого набору, поточні позиційні параметри передаються
усі видаляються, а операнди встановлюються як нові позиційні параметри. Якщо -- роздільник
(пор. синтаксис аргументів команди), позиційні параметри встановлюються навіть тоді, коли
немає операндів, у цьому випадку нові позиційні параметри не будуть нічим.
вихід статус
Статус виходу вбудованого набору дорівнює нулю, якщо немає жодної помилки.
примітки
Комплект вбудований спеціальний вбудований.
У стандарті POSIX доступні параметри оболонки дуже обмежені. Стандарт ні
визначити:
· довгі варіанти, такі як --allexport,
· попереднє немає заперечувати варіант,
· використання великих літер та/або символів, які не є буквено-цифровими, у назвах параметрів
Параметри, визначені в стандарті:
· -a, -o allexport
· -e, -o помилка
· -m, -o контролювати
· -C, -o noclobber
· -n, -o Noexec
· -f, -o ноглоб
· -b, -o повідомляти
· -u, -o іменник
· -v, -o докладний
· -x, -o xtrace
· -h
· -o ігнорувати
· -o nolog
· -o vi
Yash не підтримує опцію nolog, яка запобігає створенню визначень функцій
додано до історії команд.
SHIFT Вбудовувана
Команда зсув вбудований видаляє деякі позиційні параметри.
синтаксис
· зсув [вважати]
Опис
Зсув вбудований знімає перший вважати позиційні параметри.
Операнди
вважати
Кількість позиційних параметрів, які потрібно видалити.
Це помилка, якщо фактична кількість позиційних параметрів менше ніж вважати. Якщо
опущено, значення за умовчанням дорівнює одиниці.
вихід статус
Статус виходу вбудованої зміни дорівнює нулю, якщо немає жодної помилки.
примітки
Зсув вбудований спеціальний вбудований.
Кількість позиційних параметрів можна отримати за допомогою # спеціальний параметр.
ПРИВЕРНУТИ Вбудовувана
Команда Призупинити вбудований підвішує оболонку.
синтаксис
· Призупинити [-f]
Опис
Вбудована функція призупинення надсилає сигнал SIGSTOP усім процесам у групі процесів, до якої
відросток оболонки належить. Сигнал призупиняє процеси (включаючи оболонку). The
призупинені процеси відновлюються, коли вони отримують сигнал SIGCONT.
Якщо оболонка є інтерактивною і її ідентифікатор групи процесів дорівнює ідентифікатору процесу
лідера сеансу, оболонка друкує попереджувальне повідомлення та відмовляється надсилати сигнал, якщо не
-f (--сила) вказано параметр. (У такому випадку немає іншої оболонки для керування завданнями
який може надіслати сигнал SIGCONT для відновлення призупиненої оболонки, щоб оболонка ніколи не могла бути
відновлено.)
Опції
-f, --сила
Придушити попередження, які б завадили оболонці надіслати сигнал.
вихід статус
Статус виходу дорівнює нулю, якщо сигнал було успішно надіслано, і відмінному від нуля в іншому випадку.
примітки
Вбудована функція призупинення не визначена в стандарті POSIX.
TEST Вбудовувана
Команда тест вбудований оцінює вираз.
синтаксис
· тест вираз
· [ вираз ]
Вбудований тест не розрізняє параметри та операнди; усі аргументи командного рядка
тлумачаться як вираз. Якщо вбудований виконується з ім'ям [, вираз
має супроводжуватися ].
Опис
Вбудований тест оцінює вираз як умовний вираз, який складається з
оператори та операнди, описані нижче. Статус виходу дорівнює 0, якщо умова виконується і
1 інакше.
Наведені нижче унарні оператори тестують файл. Якщо операнд файл є символічним посиланням, файлом
на яке посилається посилання, перевірено (за винятком -h та -L оператори).
-b файл
файл це блоковий спеціальний файл
-c файл
файл є символьним спеціальним файлом
-d файл
файл є каталогом
-e файл
файл існує
-f файл
файл є звичайним файлом
-G файл
файлІдентифікатор групи збігається з ефективним ідентифікатором групи оболонки
-g файл
файлвстановлено прапорець set-group-ID
-h файл
те саме, що -L
-k файл
файллипкий біт встановлено
-L файл
файл є символічним посиланням
-N файл
файл не було доступу з часу останньої зміни
-O файл
файлІдентифікатор користувача збігається з ефективним ідентифікатором користувача оболонки
-p файл
файл є FIFO (іменований канал)
-r файл
файл читається
-S файл
файл є розеткою
-s файл
файл не порожній
-u файл
файлвстановлено прапорець set-user-ID
-w файл
файл доступний для запису
-x файл
файл є виконуваним
Унарний оператор нижче перевіряє дескриптор файлу:
-t fd
fd пов’язаний з терміналом
Наведені нижче унарні оператори тестують рядок:
-n рядок
рядок не порожній
-z рядок
рядок пусто
Унарний оператор нижче перевіряє опцію оболонки:
-o ?варіант
варіант це дійсна назва опції оболонки
-o варіант
варіант це дійсна назва опції оболонки, яка ввімкнена
Наведені нижче бінарні оператори порівнюють файли. Неіснуючі файли вважаються старішими за будь-які
існуючі файли.
file1 -нт file2
file1 є новішим, ніж file2
file1 -от file2
file1 старше, ніж file2
file1 -еф file2
file1 є жорстким посиланням на file2
Наведені нижче бінарні оператори порівнюють рядки:
string1 = string2
string1 це той самий рядок, що й string2
string1 != string2
string1 це не той самий рядок, що string2
Наведені нижче бінарні оператори порівнюють рядки відповідно до алфавітного порядку в
поточна мова:
string1 === string2
string1 дорівнює string2
string1 ! == string2
string1 не дорівнює string2
string1 < string2
string1 менше, ніж string2
string1 <= string2
string1 менше або дорівнює string2
string1 > string2
string1 більше string2
string1 >= string2
string1 більше або дорівнює string2
Наведений нижче бінарний оператор виконує зіставлення шаблону:
рядок =~ модель
розширений регулярний вираз модель сірники рядок
Наведені нижче бінарні оператори порівнюють цілі числа:
v1 -екв v2
v1 дорівнює v2
v1 -не v2
v1 не дорівнює v2
v1 -gt v2
v1 більше v2
v1 -ge v2
v1 більше або дорівнює v2
v1 -л v2
v1 менше, ніж v2
v1 -The v2
v1 менше або дорівнює v2
Наведені нижче бінарні оператори порівнюють номери версій:
v1 -век v2
v1 дорівнює v2
v1 -вне v2
v1 не дорівнює v2
v1 -vgt v2
v1 більше v2
v1 -vge v2
v1 більше або дорівнює v2
v1 -vlt v2
v1 менше, ніж v2
v1 -вле v2
v1 менше або дорівнює v2
Наведені нижче оператори можна використовувати для створення складних виразів:
! вираз
заперечувати (перевертати) результат
( вираз )
змінити пріоритет оператора
вираз1 -a вираз2
логічний сполучник (і)
вираз1 -o вираз2
логічна диз'юнкція (або)
Якщо вираз є одним словом без операторів, то -n передбачається оператор. Порожній
вираз має значення false.
порівняння of версія номера
Порівняння номерів версій подібне до порівняння рядків в алфавітному порядку.
Відмінності такі:
· Сусідні цифри розглядаються як ціле число. Цілі числа порівнюються в математиці
порядок, а не алфавітний порядок.
· Цифри вважаються більшими за будь-які нецифрові символи.
Наприклад, номери версій 0.1.2-3 та 00.001.02-3 рівні і 0.2.1 менше
ніж 0.10.0.
вихід статус
Статус виходу вбудованого тесту становить 0, якщо вираз є істинним, а 1 – інакше. Вихід
статус 2 якщо вираз не можна оцінити через синтаксичну помилку чи будь-яку іншу
причин
примітки
Складні вирази можуть викликати плутанину, тому їх слід уникати. Використовуйте склад оболонки
команди. Наприклад, [ 1 -екв 1 ] && [ -t = 1 ] && ! [ Foo ] є кращим [ 1 -екв 1
-a -t = 1 -a ! Foo ].
Стандарт POSIX передбачає, що статус виходу має бути більше 1 у разі помилки. The
Стандарт POSIX не визначає такі оператори: -нт, -от, -еф, ==, ===, ! ==, <,
<=, >, >=, =~, -век, -вне, -vgt, -vge, -vlt та -вле. POSIX не вказує -o як
унарний оператор.
TIMES Вбудовувана
Команда times вбудований друкує використання часу ЦП.
синтаксис
· times
Опис
Вбудований час друкує час процесора, споживаний процесом оболонки та його дочірнім процесом
процесів на стандартний вихід.
Вбудований друкує два рядки: перший рядок показує процесорний час процесу оболонки і
другий – дочірніх процесів (не включаючи ті, які не мають
припинено). Кожен рядок показує час процесора, споживаний у режимі користувача та системі.
вихід статус
Статус виходу вбудованого часу дорівнює нулю, якщо немає жодної помилки.
примітки
Вбудований час є спеціальним вбудованим.
ТРАП Вбудовувана
Команда пастка вбудований встановлює або друкує обробники сигналів.
синтаксис
· пастка
· пастка дію сигналізувати...
· пастка номер_сигналу [сигналізувати...]
· пастка -p [сигналізувати...]
Опис
Вбудована пастка встановлює або друкує дії, які виконуються, коли оболонка отримує сигнали.
(Ці дії називаються пастки.)
При виконанні с дію і один або кілька сигналізуватиs, вбудований встановлює пастки для сигналізуватиs
до дію. Якщо оболонка отримає один із сигналів, дія буде виконана.
Якщо перший операнд є номер_сигналу замість дію, вбудований скидає пастки для
номер_сигналу та сигналізуватияк ніби дію було -.
При виконанні з -p (--друк) або без операндів, друкує вбудований
наразі встановлено перехоплення для стандартного виводу у форматі, який можна виконувати як команди
які відновлюють поточні пастки. Якщо один або декілька сигналізуватиs вказуються лише ті сигнали
друкуються. В іншому випадку друкуються всі сигнали з діями не за замовчуванням. (В деяких
однак, вбудована функція може друкувати попередні параметри перехоплення замість поточних.
Див. примітки нижче.)
Опції
-p, --друк
Роздрукувати поточні параметри перехоплення.
Операнди
дію
Дія, яка буде виконана, коли сигналізувати отримано.
If дію є одним дефісом (-), дію буде скинуто до стандартної дії, тобто
визначається операційною системою. Якщо дію є порожнім рядком, сигнал ігнорується
при отриманні. інакше, дію розглядається як командний рядок: рядок аналізується і
виконуються як команди під час отримання сигналу. (Якщо сигнал отримано під час a
команда виконується, дія виконується одразу після завершення команди.)
сигналізувати
Номер або назва сигналу.
If сигналізувати є числом 0 або ім'я EXIT, це розглядається як особливий уявний сигнал, який
завжди отримується, коли оболонка виходить. Дія, встановлена для цього сигналу, виконується, коли
оболонка виходить нормально.
номер_сигналу
Це схоже сигналізувати, але має бути числом.
вихід статус
Статус виходу вбудованої пастки дорівнює нулю, якщо немає жодної помилки.
примітки
Пастка вбудована спеціальна вбудована.
Стандарт POSIX вимагає, щоб імена сигналів вказувалися без SIG- префікс,
як INT та ВИХІД. Як розширення yash приймає SIG-імена з префіксом, наприклад SIGINT та
СЛЕДУЄ і обробляє назви сигналів без урахування регістру.
Повторне використання вихід of вбудований
Вихідні дані вбудованої пастки можна зберегти у змінній, яку пізніше можна буде виконати за допомогою
вбудований eval для відновлення пасток.
saved_traps=$(пастка)
пастка '...' INT
eval "$saved_traps"
Є деякі хитрощі, щоб дозволити цю ідіому. Ви використовуєте команду
підстановка, щоб зберегти вивід пастки, вбудованої в змінну. Команда
заміна виконується в підоболонці. Підоболонка скидає всі перехоплення (крім ігнорованих
одиниці) на початку себе. Здавалося б, це призведе до (майже) порожнього результату
від вбудованого, що не зможе відновити пастки, як очікувалося.
Щоб уникнути цієї пастки, POSIX вимагає, щоб оболонка дотримувалася одного з двох варіантів
нижче:
· Якщо заміна команди містить лише одне вбудоване перехоплення, перехоплення не повинно бути
бути скинуто, коли підоболонка запускається для виконання вбудованої; або
· Підоболонка завжди скидає перехоплення, але запам'ятовує попередні перехоплення. Якщо пастка
вбудований виконується у підоболонці, але жодне інше вбудоване перехоплення не виконується
щоб змінити перехоплення у підоболонці, тоді вбудований має надрукувати запам’яталося
пастки.
Яша слухається другого.
ІСТИНА Вбудовувана
Команда правда вбудований нічого не робить успішно.
синтаксис
· правда
Опис
Справжній вбудований нічого не робить. Будь-які аргументи командного рядка ігноруються.
вихід статус
Статус виходу справжнього вбудованого дорівнює нулю.
примітки
Справжня вбудована - це напівспеціальна вбудована.
Вбудовані функції true та двокрапка мають однаковий ефект, але true — це напівспеціальна вбудована функція
тоді як двокрапка є особливою.
TYPE Вбудовувана
Команда тип вбудований ідентифікує команду.
синтаксис
· тип [-abefkp] [команда...]
Опис
Вбудований тип еквівалентний вбудованій команді з -V варіант.
примітки
Стандарт POSIX не визначає зв'язок між типом і вбудованими командами.
Стандарт не визначає опцій для типу вбудованих.
Принаймні один команда операнд має бути вказаний у POSIXly-коректному режимі.
НАБІР Вбудовувана
Команда набірний вбудований друкує або встановлює змінні або функції.
синтаксис
· набірний [-gprxX] [змінна[=значення]...]
· набірний -f[pr] [функція...]
Опис
Якщо виконати без -f (--функції) варіант, набірний вбудований друк або набори
змінні на стандартний вивід. В іншому випадку він друкує або встановлює функції.
Якщо виконати з -p (--друк), вбудований друкує змінні або функції
задається операндами. Без параметра він встановлює змінні або функції. Якщо немає операндів
вказано, він друкує всі існуючі змінні або функції, незалежно від того, чи є -p
(--друк) вказано параметр.
Опції
-f, --функції
Вивести або встановити функції, а не змінні.
-g, --глобальний
Під час встановлення нової змінної змінна буде глобальною змінною, якщо цей параметр є
зазначено. Без цього параметра змінна була б локальною.
Під час друку змінних друкуються всі існуючі змінні, включаючи глобальні змінні
якщо вказана ця опція. Без цього параметра друкуються лише локальні змінні.
-p, --друк
Друк змінних або функцій у формі, яку можна аналізувати та виконувати як команди
який відновить поточні встановлені змінні або функції.
-r, --лише для читання
Встановлюючи змінні або функції, зробіть їх доступними лише для читання.
Під час друку змінних або функцій друкуйте лише змінні або функції, доступні лише для читання.
-x, --експорт
Під час встановлення змінних позначте їх для експорту, щоб вони експортувалися
зовнішні команди.
Під час друку змінних друкуйте лише експортовані змінні.
-X, --неекспортувати
Під час встановлення змінних скасуйте експорт змінних.
Операнди
змінна (без значення)
Ім'я змінної, яку потрібно встановити або надрукувати.
Без того -p (--друк), змінна визначена (якщо ще не визначена), але її
значення не встановлюється і не змінюється. Змінні, визначені без значень, розглядаються як
не встановлено в розширенні параметрів.
змінна=значення
Ім'я змінної та її нове значення.
Значення присвоюється змінній (незалежно від -p (--друк) варіант).
функція
Ім'я існуючої функції, яку потрібно встановити або надрукувати.
вихід статус
Статус виходу вбудованого набору тексту дорівнює нулю, якщо немає жодної помилки.
примітки
Глобальна змінна не може бути заново визначена, якщо локальна змінна вже була визначена
з однойменною назвою. Локальну змінну буде встановлено незалежно від -g (--глобальний) варіант.
Стандарт POSIX не визначає вбудований набір текстів.
Вбудовані функції експорту та лише для читання еквівалентні вбудованому набору тексту з -gx та
-гр варіанти, відповідно.
УЛІМ Вбудовувана
Команда Ulimit вбудований встановлює або друкує обмеження ресурсу.
синтаксис
· Ulimit -a [-H|-S]
· Ulimit [-H|-S] [-efilnqrstuvx] [обмежувати]
Опис
Вбудований ulimit встановлює або друкує обмеження ресурсу.
Якщо виконати з -a (--все), вбудований друкує поточні обмеження для всіх
типи ресурсів. В іншому випадку він встановлює або друкує обмеження для одного типу ресурсу. The
тип ресурсу можна вказати за допомогою наведених нижче параметрів. Обмеження ресурсів будуть
впливають на поточний процес оболонки та всі команди, викликані з оболонки.
Кожен тип ресурсу має два граничні значення: жорстке та м’яке. Ви можете змінити софт
вільно обмежувати, якщо він не перевищує жорсткий ліміт. Ви можете зменшити жорсткий ліміт
але не може збільшити його без відповідного дозволу.
Коли -H (--твердий) Або -S (--софт) якщо вказано параметр, вбудований встановлює або друкує
жорстке або м'яке обмеження відповідно. Якщо жоден із параметрів не вказано, вбудований
встановлює як жорстке, так і м’яке обмеження або друкує м’яке обмеження.
Опції
-H, --твердий
Встановіть або надрукуйте жорстке обмеження.
-S, --софт
Встановіть або надрукуйте м'який ліміт.
-a, --все
Роздрукувати всі поточні налаштування обмежень.
Наступні параметри визначають тип ресурсів. Якщо жоден із них не вказано, -f is
за замовчуванням. Типи ресурсів, які можна встановити, залежать від операційної системи.
-c, --ядро
Максимальний розмір створених основних файлів (у 512-байтних блоках)
-d, --дані
Максимальний розмір сегмента даних процесу (у кілобайтах)
-e, --приємно
Максимальний пріоритет планування ("приємний")
-f, --fsize
Максимальний розмір файлів, створених процесом (у 512-байтних блоках)
-i, --підписання
Максимальна кількість незавершених сигналів
-l, --memlock
Максимальний розмір пам'яті, який можна заблокувати в RAM (у кілобайтах)
-m, --rss
Максимальний розмір резидентного набору процесу (у кілобайтах)
-n, --немає файлу
Максимальний дескриптор файлу + 1
-q, --msgqueue
Максимальний розмір черг повідомлень POSIX
-r, --rtprio
Максимальний пріоритет планування в реальному часі
-s, --стек
Максимальний розмір стека процесу (у кілобайтах)
-t, --ЦП
Максимальний час процесора, який може використовувати процес (у секундах)
-u, --proc
Максимальна кількість процесів для користувача
-v, --як
Максимальний розмір пам'яті, який використовується процесом (у кілобайтах)
-x, -- замки
Максимальна кількість блокувань файлів
Операнди
обмежувати
Ліміт, який потрібно встановити.
Значення має бути цілим невід’ємним числом або одним із жорсткий, м'який та необмежений. Якщо значення
is жорсткий or м'який, нове обмеження встановлено на поточне жорстке або м’яке обмеження. Якщо обмежувати is
не вказано, поточне обмеження друкується.
вихід статус
Статус виходу вбудованого ulimit дорівнює нулю, якщо немає жодної помилки.
примітки
Стандарт POSIX не визначає жодних опцій, крім -f. Це також не визначає жорсткий, м'якийабо
необмежений та цінності обмежувати значень.
УМАСКА Вбудовувана
Команда умаск вбудований встановлює або друкує маску створення режиму файлу.
синтаксис
· умаск маска
· умаск [-S]
Опис
Якщо виконати без маска операнд, вбудований друкує поточний режим створення файлу
маску оболонки на стандартний вивід у формі, яку пізніше можна використовувати як маска до
відновити поточну маску.
В іншому випадку вбудований встановлює маску створення режиму файлу на маска.
Опції
-S, -- символічний
Вивести в символьному вигляді замість вісімкового цілого.
Операнди
маска
Нова маска створення режиму файлу в символьній або вісімковій цілочисельній формі.
Восьмий ціле форму
У вісімковій цілочисельній формі маска вказується як невід’ємне вісімкове ціле число
є сумою таких дозволів:
0400
прочитано власником
0200
пише власник
0100
виконати/пошук за власником
0040
читати групою
0020
пишіть по групах
0010
виконати/пошук за групою
0004
читають інші
0002
пишуть інші
0001
виконувати/шукати іншими
Символічний форму
У символічній формі маска задається як символічний вираз, що позначає
дозволи, які є НЕ входить до складу маски.
Весь вираз є одним або кількома пунктs відокремлюються комою. А пункт це
послідовність хтоs, за якими слід один або кілька діюs.
A хто є одним з:
u
власник
g
група
o
інші
a
усі власники, групи та інші
Порожня послідовність хтоs еквівалентно who a.
An дію є оператор подальшою дозвіл. оператор є одним з:
=
комплект хтодозвіл на дозвіл
+
додавати дозвіл до хтодозвіл
-
видаляти дозвіл від хтодозвіл
та дозвіл є одним з:
r
зчитування
w
запис
x
виконати/пошук
X
виконання/пошук (тільки якщо якийсь користувач уже має дозвіл на виконання/пошук)
s
set-user-ID і set-group-ID
u
поточні дозволи користувача
g
поточні дозволи групи
o
поточні дозволи інших
але більше ніж один із r, w, x, X та s можна вказати після одиничного операнд.
Наприклад, команда умаск u=rwx,go+rw
· розкриває дозволи користувача на читання, запис і виконання/пошук;
· демаскує дозвіл на читання групи та інших; і
· маскує дозвіл на запис групи та інших.
вихід статус
Статус виходу вбудованої umask дорівнює нулю, якщо немає жодної помилки.
примітки
Umask вбудований - напівспеціальний вбудований.
Стандарт POSIX не вимагає вихідного формату за замовчуванням (використовується, коли -S опція
не вказано) бути вісімковою цілочисельною формою.
UNALIAS Вбудовувана
Команда псевдоніми вбудований скасовує псевдоніми.
синтаксис
· псевдоніми ім'я...
· псевдоніми -a
Опис
Вбудований unalias видаляє визначення псевдонімів, визначених операндами.
Опції
-a, --все
Скасувати визначення всіх псевдонімів.
Операнди
ім'я
Ім'я псевдоніма, яке буде невизначено.
вихід статус
Статус виходу вбудованого unalias дорівнює нулю, якщо немає жодної помилки. Це помилка
щоб вказати назву неіснуючого псевдоніма як ім'я.
примітки
Вбудований unalias є напівспеціальним вбудованим.
UNSET Вбудовувана
Команда скасовано вбудований не визначає змінні або функції.
синтаксис
· скасовано [-fv] [ім'я...]
Опис
Вбудований unset видаляє визначення змінних або функцій, визначених
операнди.
Це не помилка, якщо якась із зазначених змінних або функцій не існує; вони є
мовчки ігнорують.
Опції
-f, --функції
Скасувати визначення функцій.
-v, --змінні
Невизначити змінні.
Ці параметри є взаємовиключними: діє лише останній із них. Якщо ні
зазначено, -v передбачається.
Операнди
ім'я
Ім'я змінної або функції, яку не буде визначено.
вихід статус
Статус виходу неналаштованого вбудованого дорівнює нулю, якщо немає жодної помилки.
примітки
Невстановлена вбудована — це спеціальна вбудована.
Хоча yash цього не робить, стандарт POSIX дозволяє видалити функцію, якщо жодної з них немає
-f та -v параметри вказано, а вказана змінна не існує.
Принаймні один ім'я операнд має бути вказаний у POSIXly-коректному режимі.
ЗАЧЕКАЙТЕ Вбудовувана
Команда чекати вбудований чекає закінчення роботи.
синтаксис
· чекати [робота...]
Опис
Вбудована функція очікування очікує завершення фонових завдань. Якщо ввімкнено керування завданнями,
зупинені роботи вважаються припиненими.
Вбудований можна використовувати для очікування асинхронних команд, якщо керування завданнями вимкнено.
Якщо оболонка отримує сигнал, поки вбудований очікує, і якщо встановлено пастку
для сигналу, потім пастка виконується і вбудована негайно завершує роботу (без
чекаю на роботу). Якщо оболонка отримує сигнал SIGINT, коли ввімкнено керування завданнями,
вбудований перериває очікування.
Операнди
робота
Ідентифікатор завдання або ідентифікатор процесу в завданні.
Якщо ні роботаs указано, вбудований очікує на всі існуючі завдання.
Якщо вказане завдання не існує, воно вважається припиненим
статус виходу 127.
вихід статус
Якщо ні роботаs були вказані, і вбудований успішно очікував на всі завдання, вихід
статус нульовий. Якщо один або декілька роботаs були вказані, статус виходу є останнім
робота.
Якщо вбудований був перерваний сигналом, статус виходу є цілим числом (> 128), що
позначає сигнал. Якщо сталася будь-яка інша помилка, статус виходу буде між 1 і 126
(включно).
примітки
Вбудована функція очікування є напівспеціальною вбудованою.
Ідентифікатор процесу останнього процесу завдання можна отримати за допомогою ! спеціальний параметр.
Ви також можете використовувати вбудовані завдання, щоб отримати ідентифікатори процесів завдань.
Використовуйте yash онлайн за допомогою сервісів onworks.net