4. Коротке введення до командного рядку

Командний рядок - це найбільш прямий засіб відправки команд своїй машині. Якщо ви використовуватимете командний рядок GNU/Linux, то ви невдовзі побачите, що він є більш потужним і володіє більш широкими можливостями, ніж будь-який інший інтерпретатор команд. Ця потужність доступна завдяки тому, що ви маєте доступ не тільки до всіх програм X, а й до тисяч утиліт у консольному режимі (на противагу графічному режиму), які не мають графічних аналогів, з численними опціями і можливими комбінаціями, досягти яких у вигляді кнопок чи меню було б важче.

Слід зазначити, що для більшості людей для того, щоб розпочати діяти, потрібна певна допомога. Якщо ви ще не працюєте в консольному режимі і використовуєте графічний інтерфейс, то передусім вам треба запустити емулятор термінала. Зайдіть до головного в меню і ви знайдете кілька емуляторів в меню Система+Термінали. Виберіть емулятор на свій смак, наприклад Konsole чи RXvt. Залежно від вашого інтерфейсу користувача на панелі завдань також може бути іконка, яка його чітко визначає (Рисунок 1.2, “Іконка термінала на панелі KDE”).

Рисунок 1.2. Іконка термінала на панелі KDE

Іконка термінала на панелі KDE

Коли ви запускаєте цей емулятор термінала, насправді ви використовуєте shell. Це назва програми, з якою ви працюєте. Ви побачите перед собою запрошення:

[queen@localhost queen]$

Тут припускається, що ваше ім'я користувача - queen, а ваша машина називається localhost (це у разі, якщо ваша машина не є частиною існуючої мережі). Простір після запрошення призначено для введення ваших команд. Зверніть увагу, що коли ви root, знак $ в запрошенні змінюється на # (це вірно лише в конфігурації за умовчанням, оскільки в GNU/Linux ви можете налаштувати всі елементи під себе). Для того, щоб стати root'ом, наберіть su після запуску shell.

[queen@localhost queen]$ su
# Введіть пароль root'а; (на екрані він не з'явиться)
Password:
# exit (чи Ctrl-D) поверне вас назад до вашого звичайного облікового запису
[root@localhost queen]# exit
[queen@localhost queen]$

Коли ви вперше запускаєте shell, ви зазвичай потрапляєте до свого домашнього каталогу home/. Щоб вивести на екран ім'я каталогу, в якому ви в даний момент перебуваєте, наберіть команду pwd (яка означає вивести робочий каталог (Print Working Directory)):

$ pwd
/home/queen

Далі ми розглянемо кілька основних і дуже корисних команд.

4.1. cd: Зміна каталогу

Команда cd є такою ж самою, як і в DOS'і, але з додатковими можливостями. Вона виконує саме те, що заявлено в її абревіатурі - змінює робочий каталог. Ви можете використовувати . і .., які означають поточний і батьківський каталоги відповідно. Запуск cd без параметрів поверне вас назад у домашній каталог. Запуск cd - поверне вас назад в останній каталог, який ви відвідали. І, нарешті, ви можете вказати домашній каталог користувача peter, набравши cd ~peter (~ означає ваш власний каталог home/). Зверніть увагу, що як звичайний користувач, ви, як правило, не можете потрапити до каталогів home/ інших користувачів (тільки якщо вони не дозволили це, або ж якщо це не налаштування системи за умовчанням), якщо ви не root, тому давайте станемо root'ом і попрактикуємось:

$ su -
Password:
# pwd
/root
# cd /usr/share/doc/HOWTO
# pwd
/usr/share/doc/HOWTO
# cd ../FAQ-Linux
# pwd
/usr/share/doc/FAQ-Linux
# cd ../../../lib
# pwd
/usr/lib
# cd ~peter
# pwd
/home/peter
# cd
# pwd
/root

Тепер повернемося назад до стану звичайного користувача, набравши exit (чи натиснувши Ctrl-D).

4.2. Деякі змінні оточення і команда echo

Усі процеси мають свої змінні оточення, а shell дозволяє вам побачити їх безпосередньо за допомогою команди echo. Деякі цікаві змінні:

  1. HOME: ця змінна оточення містить рядок, в якому відображений шлях до вашого домашнього каталогу.

  2. PATH: містить список всіх каталогів, у яких shell повинен шукати виконувані файли, коли ви набираєте команду. Зверніть увагу, на в відміну від DOS, shell за умовчанням не шукатиме команди и поточному каталозі!

  3. USERNAME: ця змінна містить ваше ім'я логіна.

  4. UID: ця змінна містить ваш ID користувача.

  5. PS1: визначає, як виглядатиме ваше запрошення, і найчастіше є комбінацією спеціальних послідовностей. Для одержання додаткової інформації ви можете прочитати bash(1) (сторінку керівництва), набравши в терміналі man bash.

Щоб shell вивів значення змінної, ви повинні вказати перед її ім'ям знак $. Ось приклад з командою echo:

$ echo Hello
Hello
$ echo $HOME
/home/queen
$ echo $USERNAME
queen
$ echo Hello $USERNAME
Hello queen
$ cd /usr
$ pwd
/usr
$ cd $HOME
$ pwd
/home/queen

Як бачите, shell підставляє значення змінної перед виконанням команди. У протилежному випадку наш приклад cd $HOME не спрацював би. По суті командний процесор спочатку замінив $HOME на її значення (/home/queen), тож рядок став cd /home/queen, чого ми й домагалися. Те ж відбувається і з прикладом echo $USERNAME.

[Підказка]Підказка

Якщо одна з ваших змінних оточення не існує, ви можете тимчасово їх створити, набравши export ІМ'Я_ЗМІН_ОТОЧ=значення. Після цього ви можете перевірити, чи були вони створені:

$ export USERNAME=queen
$ echo $USERNAME
queen

4.3. cat: Виведення на екран вмісту одного чи кількох файлів

Нічого додати, ця команда робить тільки одне: вона виводить вміст одного чи кількох файлів на стандартний пристрій виводу, зазвичай на екран:

$ cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/hda2 / ext3 defaults 1 1
/dev/hdc /mnt/cdrom auto umask=0022,user,iocharset=utf8,noauto,ro,exec,users 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0022,iocharset=utf8,sync 0 0
none /proc proc defaults 0 0
/dev/hda3 swap swap defaults 0 0
$ cd /etc
$ cat modprobe.preload
# /etc/modprobe.preload: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line.  Comments begin with
# a `#', and everything on the line after them are ignored.
# this file is for module-init-tools (kernel 2.5 and above) ONLY
# for old kernel use /etc/modules

nvidia-agp
$ cat shells
/bin/bash
/bin/csh
/bin/sh
/bin/tcsh

4.4. less: Пейджер

Назва утворилася від гри слів, пов'язаної з першим пейджером, що першим почав використовуватися в UNIX® під назвою more (more - більше; less - менше). Пейджер (page - сторінка) - це програма, яка дозволяє користувачеві переглядати великі файли по частинами, сторінка за сторінкою (точніше, екран за екраном). Причина, за якою ми розглядаємо less, а не more полягає в тому, що less більш інтуїтивна. Вам слід використовувати less для перегляду великих файлів, які не поміщаються на одному екрані. Наприклад:

less /etc/termcap

Для переміщення по цьому файлу використовуйте клавіші угору й униз. Для виходу натисніть Q. Можливості less значно ширше: натисніть H, щоб викликати довідку з різними доступними опціями.

4.5. ls: Виведення списку файлів

Команда ls (LiSt) еквівалентна команді dir в DOS, але зробити вона може більше, набагато більше. Насправді це пов'язано з тим, що файли також можуть робити набагато більше. Синтаксис команди ls:

ls [опції] [файл|каталог] [файл|каталог...]

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

  • -a: виведення списку всіх файлів, включаючи приховані файли. Нагадаємо, що в UNIX® приховані файли - це ті, чиї імена починаються з .; опція -A виводить список “майже” всіх файлів, тобто всіх файлів, які були б показані опцією -a за винятком “.” і “..

  • -R: рекурсивне виведення списку, тобто всі файли і підкаталоги в каталогах, вказаних у командному рядку.

  • -h: виведення для кожного файла його розміру в зручному для читання форматі. Це означає, що ви побачите розміри файлів з використанням суфіксів типу “K”, “M” і “G” наприклад, “234K” і “132M”. Будь ласка, зверніть увагу, що розміри вираховуються за основою 2, а не за основою 10. Це означає, що 1 K насправді дорівнює 1024 байтам, а не 1000 байт.

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

  • -i: виведення перед кожним файлом номеру inode (унікальний номер файла в файловій системі, див. Розділ 4, Файлова система Linux).

  • -d: обробка каталогів, вказаних у командному рядку так, як якби вони були звичайними файлами, замість виведення списку їх файлів.

Ось декілька прикладів:

  • ls -R: рекурсивно виводить список вмісту поточного каталогу.

  • ls -is images/ ..: виводить список з номерами inode і розміром у кілобайтах для кожного з файлів в каталозі images/, а також у батьківському каталозі стосовно до поточного.

  • ls -l images/*.png: виводить список всіх файлів в каталозі images/, чиї імена закінчуються на .png, включаючи файл .png, якщо такий існує.

4.6. Корисні комбінації клавіш

Існує велика кількість скорочених клавіатурних команд. Їх основна перевага полягає в тому, що вони заощаджують для вас час при наборі на клавіатурі. У цьому розділі припускається, що ви користуєтесь стандартним shell'ом, який за умовчанням поставляється із Mandriva Linux - bash, але ці клавіші також можуть працювати і в інших командних процесорах.

По-перше, клавіші зі стрілками. bash зберігає історію попередніх команд, які ви можете побачити за допомогою клавіш угору й униз. Ви можете прокрутити назад стільки рядків, скільки визначено в змінній оточення HISTSIZE. Крім того, від сеансу до сеансу історія залишається незмінною, тому ви збережете всі команди, введені вами у попередньому сеансі роботи.

Клавіші зі стрілками ліворуч і праворуч переміщають курсор ліворуч і праворуч в поточному рядку, дозволяючи вам редагувати свої команди. Але при редагуванні ви можете не тільки просто переміщатися на один символ за раз: Ctrl-A і Ctrl-E, наприклад, перемістять вас до початку і кінця поточного рядка. Клавіші Backspace і Del працюють так, як і повинні. Backspace і Ctrl-H еквівалентні. Del і Ctrl-D також можуть бути використані по черзі. Ctrl-K видалить все від поточної позиції курсору до кінця рядка, а Ctrl-W видалить слово перед курсором (так само як і Alt-Backspace).

Натискання Ctrl-D у порожньому рядку дозволить вам закрити поточний сеанс, що набагато простіше, ніж необхідність набору exit. Ctrl-C перерве виконувану в даний момент команду, тільки якщо ви не в процесі редагування свого командного рядка, у цьому випадку редагування буде скасовано і ви повернетеся назад до запрошення. Ctrl-L очищає екран. Ctrl-Z тимчасово зупиняє виконання завдання, тобто воно припиняється. Ця комбінація дуже корисна, якщо ви забули запровадити символ “&” після набору команди. Наприклад:

$ xpdf MyDocument.pdf

З цього моменту ви більше не зможете скористатися своїм командним процесором, бо пріоритетним завданням став процес xpdf. Щоб зробити процес фоновим і відновити роботу своєї консолі, просто натисніть Ctrl-Z і введіть bg.

І на завершення є комбінації Ctrl-S і Ctrl-Q, які використовуються для припинення і поновлення виведення на екран. Вони нечасто використовуються, але ви можете помилково набрати Ctrl-S (адже S і D на клавіатурі знаходяться близько друг від друга). Тож, якщо ви потрапите в таке становище, коли ви щось набираєте на клавіатурі, але в Термінал'і ніякі символи не з'являються, спробуйте натиснути Ctrl-Q. Зверніть увагу, що всі символи, введені вами між небажаної комбінацією Ctrl-S і Ctrl-Q будуть одразу ж виведені на екран.