Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Командний рядок



Зайшовши в ОС Linux, ви попадаєте в інтерфейс командного рядка. З цього моменту ви починаєте роботу с командним інтерпретатором. Він жде від користувача команду (можливо з опціями і аргументами). Інтерпретатор команд (shell, оболонка) - це спеціальна програма, яка здійснює функції інтерфейсу між користувачем та операційною системою. Команди, які вводяться користувачем з командного рядка, інтерпретуються оболонкою та посилаються як інструкції низького рівня в операційну систему. Початок командного рядка відзначається запрошенням інтерпретатора:

$ або %

Поява запрошення означає, що ви увійшли в систему; тепер можна вводити команди. Наприклад, команда date виводить на екран поточну дату і час:

$ date

Sun July 7 10:30:21 PST 1999

$

Інтерпретація командного рядка відбувається в відповідності з особливим синтаксисом. Першим словом, яке вводиться в командному рядку, повинно бути ім’я команди. Наступні слова автоматично сприймаються як опції та аргументи команди.

$ <команда> <опції та аргументи>

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

$ ls -l

Команда ls видає ім’я всіх файлів і каталогів в поточному, або заданому каталозі (аналог команди dir -w в DOS). З опцією -l команда ls видає для кожного файлу рядок з більш детальною інформацією: розмір файлу, дату і час останньої зміни, та ін. Опція -а дозволяє вивести на екран всі файли поточного каталогу, включаючи сховані файли (як правило файли конфігурації), а також посилання на поточний і батьківський каталоги (. та..).

$ ls -al

В даному прикладі використовувалась група опцій. Слід відзначити, що в таких випадках дефіс ставиться один.

Багато команд задаються разом з їх аргументами. Аргумент - це слово, яке вводиться в командному рядку після опцій:

$ ls -l mydata

Виводиться інформація про розмір, дату і час зміни тільки одного файлу mydata.

Слід відзначити, що командний рядок - це буфер тексту, який ви редагуєте. До натискання клавіші Enter, над введеним текстом можна виконувати операції редагування. Можливості редагування обмежені, але виправляти помилки все ж дозволяється:

Ctrl-u видаляється цілий рядок;

Ctrl-f переміщення на знак вперед;

Ctrl-b переміщення на знак назад;

Ctrl-d видаляється символ, на якому встановлено курсор;

Ctrl-h, Del або Backspace видаляється знак перед курсором;

Ctrl-c переривається виконання команди і знімається задача;

Ctrl-z призупиняється виконання команди і задача переводиться в розряд зупинених.

Слід зазначити, що деякі клавіші співпадають з клавішами, зарезервованими ОС, під якою виконується програма TELNET (в Windows, як відомо, Ctrl-C копіює вміст виділення в буфер). Пріоритет захвату клавіші програмою, або ОС повинен визначатися в кожному конкретному випадку.

В командному інтерпретаторі передбачено велику кількість ефективних засобів: спеціальні символи, оператори переадресації потоків (файлів) вводу-виводу, канали, сценарії і засоби керування задачами. Зокрема, в shell застосовуються універсальні символи підстановки. Символ "*" позначає яку завгодно послідовність символів, включаючи порожню; "?" - який завгодно один символ. В командному рядку можуть одночасно бути присутніми кілька спеціальних символів. Наприклад, зірочкою можна користуватися для звернення до файлів, імена яких містять визначену комбінацію символів:

$ ls

doc1 doc2 document docs mydoc monday tuesday

$ ls doc*

doc1 doc2 document docs

$ ls *day

monday tuesday

$ ls doc?

doc1 doc2 docs

Ці ж універсальні символи допускаються при використанні команди rm для одночасного видалення декількох файлів.

5.1.2 Стандартний ввід, стандартний вивід і переадресація потоків

Всі звичайні файли в ОС Linux (а також вхідна і вихідна інформація команд) мають однакову структуру - байтовий потік. Вхідні дані для команди направляються в потік даних, що називається стандартним вводом stdin, а вся вихідна інформація направляється в потік даних, що називається стандартним виводом stdout. Існує ще один стандартний потік - потік повідомлень про помилки stderr (по суті - другий вихідний потік). Оскільки стандартний ввід і стандартний вивід мають таку ж структуру, як і файли, вони вільно сполучаються з останніми. За допомогою операторів переадресації, стандартний ввід і стандартний вивід можна перенаправляти з файлу і в файл. За допомогою оператора переадресації ">" стандартний вивід можна переадресувати з команди в файл. За допомогою оператора переадресації "<" можна переадресувати стандартний ввід так, щоб дані вводились з існуючого файлу. Оператор ">>" служить для добавлення вмісту стандартного виводу до існуючого файлу.

Наприклад, вам необхідно сформувати файл, що містить лістинг поточного каталогу. Це можна зробити, направивши стандартний вивід команди ls в файл, а не на екран.

$ ls -l > dirlist

За допомогою оператора переадресації створюється файл dirlist, він заповнюється даними, що надходять з команди ls -l. Однак, сама переадресація організується до того, як почнуть надходити дані зі стандартного виводу. Якщо файл вже існує, він буде знищений і замінений новим файлом під тим же ім’ям. Команда, що генерує вихідні дані, виконується тільки після створення файлу переадресації.

Якщо користувач спробує використати один і той самий файл в якості вхідного і вихідного потока, виникне помилка. Оскільки переадресація виконується перед виконанням команди, вхідний файл буде знищено і замінено порожнім файлом з тим же ім’ям, тобто виникне втрата даних. Коли команда почне виконуватися, вона знайде порожній вхідний файл, і, як наслідок, користувач не отримає бажаного результату. Прикладом такої помилки може бути наступний рядок:

$ cat myletter > myletter

Ви можете додати стандартний вивід команди до вже існуючого файлу, додавши дані потоку в кінець файлу. В наступному прикладі файли myletter і oldletter по черзі дописуються в кінець файлу all_letters:

$ cat myletter >> all_letters

$ cat oldletter >> all_letters

Поєднавши команду cat з оператором переадресації, ви отримаєте легкий спосіб збереження інформації, що вводиться, в файл:

$ cat > mydat

This is a new line

for the cat command

^D

$

Виконання команди cat здійснюється до тих пір, доки користувач не натисне комбінацію клавіш Ctrl-D. В ОС Linux цей символ позначає кінець файлу (EOF). Аналогічною операцією в DOS можна вважати наступну команду:

C:\copy con mydat

(символом кінця файлу в DOS є Ctrl-Z)

Стандартний ввід можна переадресувати так само, як і стандартний вивід. Стандартний ввід може прийматися не з клавіатури, а з файлу. Так, взявши в якості вхідного потоку тільки що створений файл, отримаємо:

$ cat < mydat

This is a new line

for the cat command

$

Операції стандартного вводу і стандартного виводу можна об’єднувати:

$ cat < myletter > newletter

5.1.3 Програмні канали

Оскільки формат вхідної і вихідної інформації команд однаковий, вихідні дані однієї команди можна використати як вхідні для іншої. Для цього служать канали, які дозволяють стандартний вихідний потік однієї команди посилати в якості стандартного вхідного потоку для іншої команди. В одному командному рядку можна зв’язувати кілька команд, формуючи тим самим конвеєр, в якому кожна команда буде приймати на вхід вихідні дані попередньої команди.

Припустимо, необхідно послати список імен файлів поточного каталогу на принтер. Для цього необхідно як мінімум дві команди: ls и lpr. Тобто, необхідно направити вивід команди ls в якості вводу для команди lpr. Для утворення такого з’єднання в ОС Linux використовується оператор "канал" (| - вертикальна риска), поміщений між двома командами. За його допомогою стандартні потоки двох команд зв’язуються:

$ ls | lpr

Пересилатися по каналу з однієї команди в іншу може вміст цілого файлу:

$ cat mydata | lpr

Можна вивести на друк дані, що вводяться з клавіатури:

$ cat | lpr

This text will

be printed

^D

$

5.1.4 Задачі: перевід в фоновий режим, відміна і переривання

При виконанні якої-небудь команди ОС Linux розглядає її як належну до виконання задачу (завдання). Ви можете дати системі вказівку виконувати завдання в фоновому режимі, щоб мати можливість продовжувати виконувати інші команди. Оператор "&" (амперсанд) в кінці командного рядка сповіщає систему про те, що дана команда повинна виконуватися в фоновому режимі:

$ lpr mydata &

[1] 534

Друк файлу mydata здійснюється в фоновому режимі, користувач не чекає виконання цієї задачі, а продовжує працювати в нормальному режимі.

За допомогою команди jobs можна отримати список задач, що переведені в фоновий режим, а також номера і статус цих задач:

$ jobs

[1] + Running lpr intro

[2] - Running cat *.c > myprogs

Знак "+" позначає завдання, що обробляється в даний момент. Знак "-" позначає наступне завдання, що підлягає виконанню.

Поточну задачу можна перервати комбінацією клавіш Ctrl-z. При цьому вона приймає статус зупиненої. Запустити її на фоновому режимі можна командою bg; на передній фон (в пріоритетний режим) поточна задача відновлюється командою fg. Фонові і зупинені завдання знімаються (відмінюються) командою kill. Команди керування задачами реалізовано в командному інтерпретаторі.

$ jobs

[1] + Running lpr intro

[2] - Running cat *.c > myprogs

$ kill %2

В прикладі показана відміна 2-го завдання.

5.1.5 Операції керування файлами

Файли в ОС Linux організовано в каталоги. Всі каталоги з’єднуються один з одним, утворюючи ієрархічну деревовидну структуру. При звертанні до файлів необхідно вказувати не тільки ім’я, але й місце, яке він займає в цій файловій структурі. Ім’я файлу може містити які завгодно букви, знаки підкреслювання і цифри. Можна включати в імена крапки, коми, спеціальні і керуючі символи. Максимальна довжина імені файлу - 256 символів. Ім’я файлу може включати в себе розширення, причому не одне. Для відокремлення розширення від імені служить крапка. Існують спеціальні файли ініціалізації, які використовуються для зберігання параметрів конфігурації різноманітних програм, в тому числі й самого командного інтерпретатора. Як правило, це сховані файли, імена яких починаються з крапки.

Як вже говорилось, всі файли в ОС Linux мають один і той же формат - байтовий потік. Байтовий потік представляє собою просто послідовність байтів. Це дозволяє системі Linux розповсюджувати файлову концепцію на всі компоненти даних и навіть на апаратні засоби. Розглядаючи всі ці об’єкти (файли, каталоги, пристрої та ін.) як файли, Linux дозволяє спростити організацію даних і обмін ними. Кількість типів файлів залежить від конкретної реалізації ОС, однак існує чотири стандартних типи файлів: звичайні, файли-каталоги, байт-орієнтовані файли пристроїв і блок-орієнтовані файли пристроїв. Існують файли-символічні посилання, іменовані канали та ін.

Як відзначалось вище, файли мають один формат (байтовий потік), але можуть використовуватися по-різному. Найбільш суттєва різниця має місце між двійковими і текстовими файлами. Приклад двійкового файлу - програмний код після його компіляції. Команда file допомагає визначити, чим є той чи інший файл:

$ file monday reports hello.c

monday: ASCII text

reports: directory

hello.c: C source file

В багатьох випадках виникає необхідність продивлятися вміст файлу. Команди cat і more виводять вміст файлу на екран (more здійснює посторінковий вивід).

$ more mydata

Linux, DOS, Win95 - good, bad and ugly:-)

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





Дата публикования: 2015-04-06; Прочитано: 584 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.014 с)...