Bash - командна оболонка Linux

У більшості дистрибутивів Linux за замовчуванням встановлена ​​командна оболонка Bash. Відзначимо, що між усіма командними оболонками, що відповідають стандарту POSIX Unix-подібних операційних систем, різниця невелика.

Bash запускається в текстовому режимі або додатку "Термінал" і працює інтерактивно. Це означає, що він очікує введення користувача, далі інтерпретує введену рядок як команду, яку треба виконати. Команди бувають різними: запуск програми, операції з файлами, виконання скрипта на мові самого Bash та ін.

Unix розроблялася як багато користувачів операційна система, доступ до якої користувачі здійснювали через термінали. Наприклад, в будівлі був один потужний комп'ютер, а в робочих приміщеннях фахівців розташовувалися термінали - точки доступу до ресурсів загальної машини.

Наприклад, в будівлі був один потужний комп'ютер, а в робочих приміщеннях фахівців розташовувалися термінали - точки доступу до ресурсів загальної машини

У зв'язку з поширенням персональних комп'ютерів, що почався в 80-х роках, розраховані на багато користувачів ОС виявилися не затребуваними масовим споживачем. Однак для серверів вони стали хорошим вибором.

Уявіть, що підключаєтеся по протоколу SSH до веб-сервера, на якому розміщуєте файли сайту. Працюючи в ОС GNU / Linux і запустивши програму "Термінал", ви даєте Bash'у команду на підключення до віддаленої машині під конкретним ім'ям користувача. Сервер відповідає вам і вимагає ввести пароль цього користувача. Все тому, що користуватися комп'ютером-сервером може далеко не одна людина.

На локальному комп'ютері в текстовому режимі Linux (якщо ви натиснете, наприклад, Ctrl + Alt + F2) емулюється віддалений доступ до машини через термінал. Тут Bash насамперед пропонує вам ввести логін, після чого - пароль. При введенні пароля на екрані нічого не відображається. Так зроблено спеціально, щоб не можна було підглянути навіть кількість символів. Якщо введена пара логін / пароль відповідають якому-небудь раніше зареєстрованому в системі користувачеві, то ви побачите запрошення командного рядка Bash'а на введення команди. У разі помилки потрібно заново вводити логін / пароль.

У графічному режимі додаток "Термінал" автоматично "бере" дані запустив його користувача і передає Bash'у. Таким чином, ви вже опиняєтеся представленими системі і перше, що бачите, - запрошення командного рядка.

Запрошення командного рядка має відносно стандартний синтаксис і виглядає приблизно так: username @ імя_компьютра: текущій_каталог знак.

Запрошення командного рядка має відносно стандартний синтаксис і виглядає приблизно так: username @ імя_компьютра: текущій_каталог знак

На скріншоті pl - ім'я користувача, comp - ім'я комп'ютера. Символ тильди ~ в Linux-системах - це скорочене позначення домашнього каталогу користувача (/ home / user). Саме цю директорію Bash робить поточної за замовчуванням. Знак долара $ позначає, що ми працюємо під звичайним користувачем. Якщо перебувати в системі під адміністратором, замість долара буде знак решітки #.

Після запрошення автоматично ставиться пробіл і очікується введення команди. На малюнку вище спочатку був просто натиснуто Enter. У другому рядку була введена команда переходу в іншу директорію. У третьому рядку ми бачимо результат її виконання - поточним каталогом став / opt, що відображено в запрошенні.

Існує безліч команд, які можна віддавати в Bash. В основному це команди запуску тієї чи іншої програми, які знаходяться в каталогах / bin, / usr / bin і ряді інших. Перевіряються каталоги записані в змінній $ PATH оболонки:

Перевіряються каталоги записані в змінній $ PATH оболонки:

Тут за допомогою команди echo ми просимо Bash видати нам значення змінної $ PATH. У висновку каталоги відокремлені один від одного за допомогою двокрапки.

Можна подивитися, які програми встановлені в тому чи іншому каталозі, після чого запустити одну з них:

Якщо програма має тільки графічний інтерфейс, то воно так і запуститься (якщо ви перебуваєте в графічному режимі, в разі текстового відбудеться помилка). При цьому Bash буде очікувати завершення роботи програми, то є інші команди вводити не вийде. Однак в "Терміналі" ви можете відкрити другу вкладку або створити друге вікно. При цьому запуститься інший процес для Bash.

Існують програми з текстовим інтерфейсом. Наприклад, редактор Nano:

Наприклад, редактор Nano:

В даному випадку Bash'у була дана команда nano, і прямо в терміналі був відкритий редактор GNU Nano. У ньому була введена пара слів. Щоб завершити роботу редактора, треба натиснути Ctrl + X, підтвердити збереження або відмовитися від нього. Після цього відбудеться повернення до командного рядка Bash.

Багато з запускаються в Bash програм не передбачають взаємодію з користувачем в інтерактивному режимі (в режимі діалогу). За змістом їх правильніше називати командами, а не програмами. Користувач вводить команду, вона виконується і передає управління назад Bash. Що робить команда, залежить від команди.

У Bash можна виконувати програми, що знаходяться не тільки в каталогах, перерахованих в $ PATH. Однак в цьому випадку адреса до неї треба вказувати явно. Крім того, слід не забувати, що у файлу повинна бути право на виконання.

Крім того, слід не забувати, що у файлу повинна бути право на виконання

Тут в домашньому каталозі був створений файл test.py, що містить код на мові програмування Python, що виводить на екран число 10. Код був написаний в Nano (на скріншоті не показано). Далі ми намагаємося виконати програму, звернувшись до файлу на його адресу. Точкою позначається поточний каталог. В даному випадку він домашній, тому це рівносильно ~ / test.py або /home/pl/test.py.

При першому виклику ми отримуємо помилку, так як у нас немає прав на виконання програми. За допомогою команди chmod ми додаємо таке право (параметр + x).

Існує безліч команд. Знати їх все як мінімум важко. Однак є ряд найбільш затребуваних. Це команди для здійснення операцій над файлами, установки програм, перегляду директорій і файлів, переміщення по дереву каталогів і т. П., Тобто всього того, що ми робимо в графічному режимі операційної системи. Багато з них будуть розглянуті в даному курсі. З деякими ми вже трохи познайомилися (cd, ls, echo, chmod).

Потреба в інших виникає рідше. У цих випадках на допомогу приходять доступні через Bash довідкові керівництва, інші джерела. В курсі в першу чергу буде приділено увагу особливостям роботи в Bash.

Також не будемо забувати, що Bash - це ще і скриптова мова програмування. У файл, зазвичай з розширенням .sh, може бути записаний не тільки список команд, але також інструкції мови (умовний оператор, цикли та ін.), Що "говорять" як і в яких випадках виконувати ті чи інші команди. Програмування в Bash в даному курсі не вивчається.

завдання

Досліджуйте самостійно, що роблять такі команди: date, cal, pwd, who, clear, exit. За допомогою команди which з'ясуйте, в яких каталогах знаходяться виконувані файли цих програм.

Курс з відповідями до завдань: android-додаток , pdf-версія .