1. Командна оболонка. Bash
Найважливішим з користувацьких процесів є командна оболонка (вона ж командний інтерпретатор, або просто shell). Саме
пона забезпечує взаємодію користувача з системою в текстовому режимі, дозволяючи вводити команди. Саме вона запускається, коли ви
прегистрируетесь на текстової консолі, і надає вам інтерфейс командного рядка.
Не потрібно, захопившись зручностями графічного інтерфейсу, недооцінювати командний рядок. По-перше, багато адміністративні завдання
пмогут бути виконані тільки звідти; по-друге, командний рядок - найзручніший засіб автоматизації рутинних процедур.
пКомандой в Linux вважається все, що може бути виконано: виконувані файли, вбудовані команди оболонки, псевдоніми команд,
ппользовательские функції, файли сценаріїв (скрипти) - заздалегідь підготовлені послідовності команд в текстовому вигляді.
Таким чином, командний інтерпретатор - це програма, яка має свої власні вбудовані команди
(built-in commands), своє власне змінну оточення (environment),
па також дозволяє виконувати зовнішні команди, які присутні в системі.
Оболонка приймає які вводяться користувачем команди, обробляє,
пякщо потрібно, їхні аргументи, відправляє команди на виконання, приймає що повертаються ними значення і виконує певні дії
пв залежності від цих значень. Крім того, в оболонку вбудований мова
ппрограммирования (командний мова), що дозволяє писати складні
празветвленные командні сценарії. Саме командний мова відрізняється
празные оболонки один від одного, і саме з нього виходять користувачі,
пвыбирая оболонки.
Linux є Unix-подібної ОС. Спочатку ОС Linux була розроблена Лінусом Торвальдсом (Linus Torvalds)
в Університеті Хельсінкі (Фінляндія) на основі ОС Minix - маленька UNIX-система, створена Andry Tanenbaum.
Ранній розвиток Linux насамперед було пов'язано з проблемою перемикання завдань в захищеному режимі для 80386.
І Лінус "став серйозно обдумувати маніакальну ідею, як зробити Minix краще себе самого".
Командна оболонка в системах UNIX-вже існувала, це була оболонка "Bourne shell"(shell Баурна або просто shell).
пНемного пізніше в UNIX-системах розробили оболонку C shell, яка використовує інший синтаксис, щось нагадує
псинтаксис мови програмування Сі.
Для Linux розроблено багато командних інтерпретаторів. Основний за промовчанням є
"Bash", розроблена на основі shell і звана "Новий Shell Баурна" (Bourne Again Shell).
пТаким чином, Bash - це розвиток колишнього shell з додаванням багатьох корисних можливостей,
пчастично що містяться в C shell. Оскільки Bash можна розглядати як надмножество синтаксису колишнього shell,
плюбая програма, написана на доброму старому shell Баурна повинна працювати і в Bash.
Однак слід зазначити, що ОС Linux не є UNIX-системою, так як її код був повністю переписаний,
ппервоначально Лінусом, надалі з допомогою багатьох UNIX-програмістів і ентузіастів з Internet, тих, хто
має достатньо навичок і здібностей розвивати систему.
Ядро Linux не використовує коди UNIX або будь-якого іншого приватного джерела,
пі більшість програм Linux розроблені в рамках проекту GNU з Free Software Foundation у Cambridge, Massachusetts.
пНо в нього внесли внесок також програмісти всього світу.
Ось найпоширеніші командні оболочи Linux:
- Bourne shell оболонка Борна, стандарт для багатьох UNIX-подібних систем;
- bash - Bourne Again shell, «нова оболонка Борна» (використовується за умовчанням в Linux);
- csh - З shell оболонка Сі: синтаксис її командного мови схожий на
псинтаксис мови С;
- tcsh - tiny З shell, мінімальна оболонка Сі;
- pdksh - public domain Korn shell, загальнодоступна оболонка Корна;
- sash - stand-alone shell, автономна оболонка, може бути використана у разі, коли програмні бібліотеки недоступні.
Список всіх встановлених в системі програм-оболонок знаходиться в
пфайле /etc/shells.
Початкова оболонка для кожного користувача, що запускається для нього при
прегистрации в системі, вказується у файлі /etc/passwd .
це може бути не обов'язково bash. Адміністратор може взагалі певним користувачам заборонити
пвход в систему, вказавши як "оболонки", завантажується після реєстрації, /sbin/nologin.
пИли взагалі вказати спеціально розроблений скрипт, який дозволяє переглядати тоги журнали (логи), наприклад.
Для редагування файлу /etc/passwd в Linux існує спеціальна команда vipw,
пкоторая перевіряє правильність редагування (команда доступна лише адміністратора).
Опис файлу /etc/passwd, /etc/shadow і /etc/groups
надалі, при роботі в оболонці за замовчуванням, ви можете змінити поточну оболонку на будь-яку з
пустановленных (точніше, увійти в подоболочку). Щоб вийти з неї і вер-
пнуться в батьківську оболонку, введіть команду exit.
пВ початкової оболонці ця команда завершує сеанс роботи.
У будь-який оболонці можна запускати командні сценарії, що складаються
команд інший оболонки: перший рядок кожного сценарію містить
пуказание на те, в якій оболонці його слід виконувати, і поточна
поболочка запускає для нього зазначену як дочірній процес.
Як я вже говорила, за замовчуванням новому користувачеві призначається оболонка bash. Це
ппрекрасная оболонка, яка включає багато удосконалень і кращих
псвойств інших оболонок, і змінювати її я не рекомендую. Надалі,
пговоря «оболонка», я буду мати на увазі саме bash.
2. Розбір командного рядка, обрані функції bash
Інтерпретатор, отримавши командний рядок, виконує над нею ряд перетворень, використовуючи для цього свої потужні функції, а саме:
- Розкриває псевдоніми ( alias) для швидкого виклику найбільш використовуваних команд.
- Розкриває метасимволи або группрвые симовлы(*, ?, [, ], ~, {, }) для пошуку файлів за шаблонами імен.
- Підставляє змінні, які може використовувати командний процесор.
- Перенаправляє вихідні дані однієї команди в якості вхідних даних для іншої команди, використовуючи канал (pipe).
- Виконує об'єднання команд.
- Виконує команду, якщо вона - вбудована команда інтерпретатора, або запускає процес, якщо команда зовнішня.
- Перенаправляє стандартний ввід/вивід.
Для виконання трьох останніх функцій необхідно використання спеціальних операторів. Розберемо всі перераховані функції.
2.1. Псевдоніми
Псевдоніми команд призначені для забезпечення більш ефективного введення команд оболонки. За допомогою псевдоніма команда
ппрактически будь-якої складності може бути замінена довільній рядком. Для того щоб переглянути список аліасів і,
пякщо необхідності, додати в нього новий псевдонім, слід скористатися командою alias.
пВстроенная команда alias призначає псевдонім, тобто забезпечує зручний
псокращенный введення довгих команд. Без аргументів виводить список всіх наявних псевдонімів.
пНапимер, можна призначити команду "rm" псевдонімом для «rm-i», щоб не забути скористатися ключем-i.
пви теж можете призначити короткий псевдонім для будь-якої довгої команди.
Щоб псевдоніми були доступні при вході в систему, визначте їх у вашому файлі ~/.bash_profile
Команда unalias видаляє псевдонім зі списку.
2.2. Метасимволи
Ключове властивість більшості оболонок Linux/Unix - це здатність посилатися відразу більш ніж на один файл,
пвикористовуючи для цього спеціальні символи. Ці так звані "шаблон" (wildcards), дозволяють посилатися, скажімо, на всі файли,
псодержащие символ "n".
У лабораторній роботі 1 був описаний синтаксис використання группрвых символів, щоб їх можна було використовувати при виконанні команд.
Тут не вважаю зайвим повторитися.
Типи метасимволів
- * - Будь-який набір символів, у тому числі порожній рядок.
Наприклад, коли ви використовуєте символ "*" в імені файлу, shell замінює її всіма можливими іменами файлів з теки,
на який ви посилаєтеся.
Процес заміни "*" на імена файлів називається розширенням метасимволів і виконується самим інтерпретатором.
це важливо: конкретні команди, начебто ls, ніколи не бачать "*" в своєму списку параметрів.
Shell, розширюючи метасимволи, включає в список параметрів всі імена, що пройшли порівняння з шаблоном.
Однак, використання "*" не дасть збіги з іменами файлів, які починаються з крапки ("."). Ці файли сприймаються
"приховані", хоча насправді їх нікуди не ховали. Вони не показуються в списку, що видаються нормальної командою ls і не
виходять при використанні "*". Це застереження: якщо "метасимвол *" вибирав б файли, назви яких починаються на ".",
пона б також вибрала імена "." (посилання на поточний каталог) і ".." (посилання на батьківський каталог). Але це може бути небезпечно при
пвыполнении ряду команд.
- ? - Будь-який одиночний символ (дозволяє підставити строго один символ).
- [набір] - Будь-який одиночний символ з заданого набору,
пкоторый, як правило, є послідовністю
псимволов, наприклад [aeiouAEiou] для всіх голосних
пбукв, або діапазоном з дефісом, наприклад, [А-Z]
пдля всіх великих літер
- [^набір] - Будь-який символ одиночний, не заданий у наборі
- [!набір] - Будь-який одиночний символ, не заданий у наборі
Якщо ви хочете включити в набір символ мінуса, то помістіть
pego першим чи останнім. Щоб включити в набір заслони
пквадратную дужку, помістіть її першою. Щоб включити в набір
псимволы^, або ! не кладіть їх на перше місце.
2.3.Переменные інтерпретатора командного
Як будь-яка мова програмування, командний мова bash підтримує змінні.
пТип їх - строковий. Оператор присвоювання
пвыглядит так:
$имя_переменной=значення
Ім'я має починатися з букви і може складатися з латинських букв,
пцифр, знаку підкреслення. Якщо значення змінної містить спеціальні символи,
пв імені файлу, то при вказівці його імені в команді цей символ потрібно екранувати
пзнаком «\» (зворотній слеш) або укладати всі ім'я в подвійні лапки.
пВот ряд символів, які мають спеціальне значення для інтерпретатора командного,
пі їх використання не рекомендується:
~ ! @ # $ & % * ( ) [ ] { } " " \ : ; > < пробіл
пОперация підстановки значення змінної позначається символом $
(не плутайте з запрошенням bash). Вивести значення змінної можна
пкомандой echo:
$ cwd=/home/den/MyDownloads/packages
$ echo cwd # виводить назву змінної cwd
$ echo $cwd # виводить значення змінної /home/den/MyDownloads/packages
Встановлені таким чином змінні доступні тільки вбудованим
пкомандам bash. Щоб вони стали доступні дочірнім процесом (програм і командних сценаріїв, що запускається з-під bash), їх потрібно
ппоместить в оточення bash. Робиться це командою export.
Наприклад:
$ export HELLO="Hello from environment! " # пробіл потрібно екранувати лапками
Змінні оточення
Оточення (environment)- це набір змінних, значення яких може змінювати поведінку оболонки.
Коли оболонка починає роботу, вона встановлює для себе кілька змінних оточення. Імена їх стандартні. Програми і сценарії можуть запросити їх значення замість того, щоб намагатися з'ясувати потрібну їм інформацію самостійно.
пТаким чином, командний інтерпретатор визначає змінні оточення, які використовуються в поточному сеансі.
пКаждая введена нова команда фактично запускається як дочірній процес батьківського процесу, в якості якого,
пв даному випадку виступає командний інтерпретатор bash.
пПеременные оточення відрізняються від звичайних змінних тим, що вони доступні як для батьків, так і для процесів-нащадків.
пАвтоматическое визначення змінних оточення відбувається після аутентифікації користувача в системі.
пПрограмма login, у разі успішного завершення процесу аутентифікації, на основі файлу /etc/passwd який визначає
пкомандный інтерпретатор буде використовуватися у сеансі даного користувача. Після визначення інтерпретатора командного відбувається
пнастройка сеансу згідно конфігураційним файлів, поданим нижче.
пКонфигурационный файл
|
пОписание
|
/etc/profile
|
Визначає змінні оточення для всіх користувачів системи. Даний файл виконується при першому вході в систему і містить основні змінні оточення, такі як, мінлива пошуку розташування команд PATH, мінлива імені хоста HOSTNAME, мінлива, що визначає розмір історії команд HISTSIZE. Крім того даний файл генерує додаткові змінні оточення конфігураційних файлів, що знаходяться у каталозі /etc/profile.d .
|
/etc/bashrc
|
Виконується для всіх користувачів, при кожному запуску командного інтерпретатора bash. У цьому файлі визначається значення змінної PS1, а також додаткові псевдопимы команд (alias). Псевдонімом називається скорочена довільно заданий назва команди або послідовності команд, що дозволяє виконувати складні послідовності команд, не вводячи їх з клавіатури, а викликаючи їх через звернення до відповідного псевдоніму. Змінні, визначені в цьому файлі можуть бути змінені аналогічним користувальницьким файлом -/.bashrc, який має більш високий пріоритет.
|
-/.bashprofile
|
Використовується як файл, що містить індивідуальні настройки користувача. Виконується тільки один раз при вході користувача в систему. Крім того, даний файл здійснює запуск файлу -/.bashrc
|
~/.bashrc
| Цей файл містить змінні оточення і псевдоніми встановлені користувачем. Він виконується кожен раз при вході користувача в систему або при відкритті нового сеансу bash. Даний файл краще всього підходить для визначення користувачів змінних і псевдонімів.
|
~/.bash_logout
|
пця файл виконується кожен раз при виході з системи або завершення останнього сеансу інтерпретатора bash. За замовчуванням в цьому файлі міститься команда очищення екрану терміналу.
|
/etc/inputrc
| Цей файл містить опис інтерпретації різних сполучень клавіш, а також містить спеціальні комбінації клавіш, натискання яких викликає виконання заданих команд.
|
пПеременные оточення представляють собою досить зручний спосіб зберігання інформації, часто використовуваної в межах поточного сеансу
пработы з системою. При необхідності користувач може створити практично будь-які змінні оточення (намагайтеся не змінювати
пзначения змінних оточення, які вже перебувають у використанні) та зчитувати їх значення на протязі всього часу роботи з командною оболонкою.
пДля того, щоб створити тимчасову змінну оточення, слід ввести її назву і присвоїти йому відповідне значення. Наприклад,
export AB=/usr/dog/contagious/ringbearer/grind
У даному прикладі тимчасової змінної оточення AB присвоюється шлях до каталогу, розташованому досить глибоко" в ієрархії
пкаталогов файлової системи. Команда export вказує на необхідність експорту значення змінної АВ в оболонку, для того щоб зробити
pego доступним для інших оболонок, які можуть бути відкриті в межах поточного сеансу роботи з системою. Тепер до зазначеного вище
пкаталогу можна дістатися за допомогою виконання команди cd $AB
Єдиним недоліком тимчасових змінних оточення є те, що вони автоматично знищуються при закінчення поточного сеансу
пработы з системою. Для того щоб створити постійну (на відміну від тимчасової) змінну оточення, її необхідно внести в файл налаштування
пкомандной оболонки .bashrc.
пДля зміни конфігураційних файлів /etc/profile, /etc/bashrc необхідно бути root root.
Звичайні користувачі можуть змінювати конфігураційні файли ~/.bash_profile, ~/.bashrc та ~/.bash_Iogout, які перебувають у їхньому домашньому каталозі.
пВ ці конфігураційні файли можна включити установку своїх змінні оточення за допомогою команди export і використовувати їх в будь-якому сеансі.
Однією з найбільш часто змінюваних змінних оточення є мінлива PATH.
Можна також замінити або доповнити змінну оточення PATH в конфігураційному файлі ~/.bashrc.
PATH=$PATH:~
у даному прикладі мінлива PATH буде містити її поточне значення плюс домашній каталог як шлях пошуку виконуваних файлів.
Щоб ці зміни застосувались в оточенні поточної оболонки необхідно виконати команду source .bashrc
найпоширеніші змінні оточення командного оболонки:
- BASH - Містить повний шлях до команди bash (як правило, значення цієї
ппеременной одно /bin/bash).
- BASH_VERSION - Номер версії bash.
- DIRSTACK - Масив, що містить поточне значення стека каталогу.
- EDITOR - текстовий редактор за замовчуванням.
- EUID - Числовий ефективний ідентифікатор поточного користувача.
- FUNCNAME - ім'я поточної функції в скрипті.
- GROUPS - Масив, що містить список груп, до яких належить поточний
користувач.r
- HISTFILE - Розташування файлу історії команд. Як правило, історія команд зберігається у файлі~/..bash_historyr
- HISTFILESIZE - Число командних рядків, які можуть зберігатися у файліісторії.rппісля досягнення цього числа нові командні рядка заносяться в історію за рахунок видалення найбільш ранніх командних рядків. За замовчуванням розмір список недавно використаних команд дорівнює 1000 рядків.
- HOME - Домашній каталог користувача.
- HOSTNAME - Ім'я даного комп'ютера (вузла).
- HOSTTYPE - Тип комп'ютера.
- LANG - Поточний використовується за замовчуванням мову.
- LC_CTYPE - внутрішня змінна, яка визначає кодування символів.
- MAIL - Розташування файлу скриньки електронної пошти користувача. Як правило, це файл, розташований у каталозі /var/spool/mail, ім'я якого збігається з реєстраційним іменем користувача.
- MAILCHECK - Інтервал у хвилинах між перевірками пошти.
- OLDPWD - Каталог, який був поточним до моменту останньої зміни каталогу.
- OSTYPE - Поточна операційна система.
- PATH - Розділений символами двокрапки список каталогів, в яких проводиться пошук виконуваних файлів.
пКрайне важливий порядок ледования доменів каталогів. При виконанні команд перераховані в цієї змінної каталоги перевіряються
ппоследовательно зліва направо. Т.о., при виконанні команди foo, розташованої в каталогах /bin /usr/bin, буде виконана команда,
розташована в каталозі /bin. Для того щоб в аналогічній ситуації була виконана команда foo, розташована в каталозі /usr/bin,
пследует або вказати повний шлях до цієї команді, чи
пизменить порядок проходження доменів каталогів у змінній оточення PATH. Поточний каталог пошуку повинен бути заданий явно ("."),
оболонка не робить пошук в поточному каталозі за замовчуванням. Пошук програм, що запускаються в поточному каталозі таїть потенційну
небезпека внаслідок можливості ненавмисного виконання небезпечної програми, тому мінлива PATH зазвичай ініціалізується
пбез "." Для того, щоб додати до PATH шлях до своїх власних команд або сценаріїв оболонки, їх слід розмістити
пв підкаталозі /bin домашнього каталогу, який буде автоматично занесений в змінну PATH.
пНе всі виконувані команди розташовані в каталогах, перерахованих у змінній оточення PATH.
пдеякі команди вбудовані безпосередньо в оболонку. Інші команди можуть бути замінені з допомогою псевдонімів,
ппозволяющих замінити команди з параметрами практично будь-якої складності (з точки зору синтаксису) одним простим ім'ям.
пПомимо цього, існує можливість створення функцій, що зберігають в собі цілу послідовність команд.
- PPID - Ідентифікаційний номер процесу, відповідного команді, в результаті виконання якої була запущена поточна
поболочка(наприклад, процес, що породив оболонку).
- PS1, PS2, PS3, PS4 - Змінні, які визначають вид запрошення оболонки.
Змінні PS1, PS2 встановлюють первинне і вторинне запрошення інтерпретатора командного.
Первинне запрошення (PS1) вказує на готовність інтерпретатора до введення команд.
пЗначение цієї змінної має вигляд "$" для звичайних користувачів "#" для суперкористувача.
пВообще кажучи, запрошення командного рядка може містити в собі досить велика кількість різноманітних елементів
(дату, час, реєстраційне ім'я користувача, мережне ім'я комп'ютера і т.д.).
інтерфейс запрошення легко змінити відповідним чином поставивши значення змінної PS1.
У даній змінної міститься рядок виду [\u@h\W]\$, в якій кожного символу відповідає певне значення.
пДопустимые символи, що використовуються для формування первинного запрошення, наведені тут.
Вторинне запрошення (PS2) з'являється, якщо ви натиснули клавішу Enter, синтаксично не закінчивши введення команди.
Ця змінна містить другорядне запрошення, яке виникає при багаторядкової редагуванні тексту або незавершеному введенні команди.
пПо замовчуванням воно позначається як >.
PS3. Ця змінна містить запрошення, присутнє в операторі select, що використовується для організації
пинтерактивных консольних меню. За замовчуванням запрошення PS3 в операторі select відповідає значення #?.
PS4. Ця змінна використовується в основному при налагодженні сценаріїв командного інтерпретатора і за замовчуванням містить значення рядка «++».
Наприклад, запуск команди отримання інформації DNS:
[root@rhel5 ~]# nslookup >
- PWD - Поточний робочий каталог користувача. Це значення змінюється кожного разу при переході в інший каталог за допомогою команди cd.
- SECONDS - час роботи скрипта(сек.).
- SHELL - Поточний інтерпретатор команд.
- SHELLOPTS - Список параметрів інтерпретатора.
- SHLVL - Кількість запусків нових копій інтерпретатора команд.
- UID - Числовий ідентифікатор поточного користувача.
- USER - Ім'я поточного користувача.
- $# - Загальна кількість параметрів переданих скрипту.
- $* - Всі аргументи переданыне скрипту(виводяться в рядок).
- $@ - Теж саме, що і попередній, але параметри виводяться в стовпчик.
- $! - PID останнього запущеного в тлі процесу.
- $ - $ PID самого скрипта.
пнатисніть переглянути всі значення змінних поточному сеансі як
попределенных вами, так і змінних оточення, введіть команду set без параметрів або
env< або printenv.
Видалити змінну можна командою unset.
2.4. Підстановки і організація взаємодії між командами
Підстановка значень змінних оточення поточного сеансу роботи з системою може бути здійснена за допомогою
писпользования метасимвола знаку долара ($). В результаті оболонка автоматично замінює ім'я змінної на її значення.
пНапример,
ls-l $BASH
Підстановка результату обчислення арифметичного вираження
Існують дві синтаксичні форми підстановки результату обчислення арифметичного виразу:
$[вираз] і $((вираз)). Наприклад,
echo "I am $[2000-1957] years old."
Підстановка команд
пПодстановка команд дозволяє використовувати висновок однієї команди в командному рядку, що містить іншу команду.
пможна використовувати два альтернативних формату підставновки: $(команда) або `команда` (одинарні зворотні лапки). Наприклад,
ls ($pwd)
ls `pwd`
Розкриття символу тильди
Символ тильди (~) дозволяє швидко вводити назви каталогів.
~ Назву домашнього каталогу користувача
~/підкаталог Ім'я одного з підкаталогів у домашньому каталозі користувача
~+ Ім'я поточного каталогу
~- Ім'я попереднього каталогу
Розкриття фігурними дужками
пС допомогою фігурними дужками можна замість декількох однотипних команд ввести одну. У дужках повинен міститися список,
пэлементы якого повинні бути розділені комами. Інтерпретатор зчитує елементи по одному і з кожним з них формує
потдельную команду, яку потім виконує. Наприклад, команда
mkdir expenses/{Jan,Feb,Mar}
пэквивалентна
mkdir expenses/Jan
mkdir expenses/Feb
mkdir expenses/Mar
Канали
пМетасимвол каналу (|) вказує на необхідність організації взаємодії між командами шляхом використання в якості вхідних даних
(введення) команди результату виконання (виведення) іншої команди.
пДругими словами, з допомогою каналу (конвеєра) результати першої команди можуть бути передані як вхідні дані другій команді.
пНапример,
cat /etc/passwd | sort | head -3
Послідовності і групи команд
пИспользование послідовностей і груп команд дозволяють ввести кілька команд на одному рядку.
пкоманда1;command2 спочатку Виконати команду 1, потім команду 2
(command1;command2) Запустити окрему копію інтерпретатора, в якій виконати
послідовно команди 1 і 2
{ command1;command2 } Виконати команди 1 і 2 послідовно в поточному інтерпретаторі
пкоманда1 && command2 Виконати команду 2 тільки у разі успішного
виконання команди 1
пкоманда1 || command2 Виконати команду 2 тільки у випадку невдалого
виконання команди 1
пРезультатом виконання будь-якої команди (тобто результатом завершення відповідного процесу) є код завершення.
пУспешное завершення код 0, неуспішне 1. Значення коду завершення присвоюється визначеної змінної ? (знак питання).
пНапример, echo $?
Повторне виконання команд
Оболонка має засоби, що дозволяють викликати попередні команди і редагувати їх. Історія (history) команд оболонки
ппредставляет собою список використаних раніше команд. Цей список можна переглянути за допомогою командиhistory.r
Після введення командного рядка оболонка поміщає її в історію команд. Список раніше використовувалися команд зберігається у файлі, який
пробить можливим у будь-який час викликати з нього будь-яку потрібну командний рядок для повторного виконання. Після повторного виклику командному
пстроки вона може бути відредаговано. Історія команд зберігається у файлі .bash_history, який
пнаходится у домашньому каталозі користувача. За замовчуванням командна оболонка здатна "запам'ятати" до 1000 командних рядків.
Для того щоб переглянути список раніше використовувалися команд, виконайте командуhistory.r
Вона може вживатися або без параметрів, або з параметром, позволюящим вказати кількість відображуваних команд.
пКаждая командний рядок має свій номер в історії команд.
пСинтаксис розкриття історії:
!n
Виконати команду з вказаним номером
!! Виконати попередню команду
рядок! Виконати останню з команд, що починаються з заданої рядка
!?рядок? Виконати останню з команд, які містять вказаний рядок
Замість того щоб безпосередньо виконати командний рядок, що міститься в історії команд, її можна викликати для подальшого
редагування. Скористайтеся клавішами керування курсором "стрілка вгору" чи "стрілка вниз" для покрокового перегляду історії
команд і вибору необхідної командного рядка.
3. Вбудовані команди bash
пСписок вбудованих команд оболонки bash можна отримати по команді
help або знайти на man-сторінці в секції SHELL BUILTIN COMMANDS.
Ось кілька корисних вбудованих команд:
- echo [аргументи] - Висновок аргументів на екран.
- enable - Змушує оболонку замість вбудованої команди виконати виконуваний
файлу з таким же ім'ям. Корисно, якщо у вас є власний сценарій по імені, наприклад, echo.
- eval [аргументи] - Конструювання команди на льоту, із зазначених аргументів, і
потправка її на виконання.
- let - Обчислення виразів.
- source - Прочитати і виконати команди, що містяться
пв файлі. Застосовується для визначення користувачів змінних.
пі функцій.
- basename - Виділення локального імені.
- expr - вираз.
- read - Введення значення змінної.
- shift - Зміна списку параметрів.
- test - Перевірка умови.
пДругие вбудовані команди служать інструкціями командного мови bash.