103.1 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
103 GNU та команди Unix |
Тема: |
103.1 Робота у командному рядку |
Урок: |
1 з 2 |
Вступ
Новачки у світі адміністрування Linux і оболонки Bash часто відчувають себе трохи розгубленими, не маючи заспокійливих зручностей інтерфейсу GUI. Вони звикли мати доступ правою кнопкою миші до візуальних підказок і контекстної інформації, які надають утиліти графічного файлового менеджера. Тому важливо швидко освоїти використання відносно невеликого набору інструментів командного рядка, за допомогою яких ви можете працювати з вашими даними, так як ви працювали з ними у графічному інтерфейсі, а також використовувати додаткові їх можливості.
Отримання системної інформації
Дивлячись на блимаючий прямокутник командного рядка, ваше перше запитання, ймовірно, буде «Де я?» Або, точніше, «Де я зараз у файловій системі Linux і якщо, скажімо, я створив новий файл, де буде його розташування?» Те що вам потрібно, це ваш поточний робочий каталог, а команда pwd
дасть відповідь на це питання:
$ pwd /home/frank
Припустимо, що Френк наразі ввійшов у систему, і він тепер знаходиться у своєму домашньому каталозі: /home/frank/
. Якщо Frank створить порожній файл за допомогою команди touch
, не вказуючи жодного іншого місця у файловій системі, файл буде створено в /home/frank/
. Перелік вмісту каталогу за допомогою ls
покаже наш новий файл:
$ touch newfile $ ls newfile
Окрім вашого розташування у файловій системі, вам часто знадобиться інформація про систему Linux, яку ви використовуєте. Це може включати точний номер випуску вашого дистрибутива або версію ядра Linux, яка зараз завантажена. Для цього вам потрібен інструмент uname
. І, зокрема, uname
з опцією -a
(“all”).
$ uname -a Linux base 4.18.0-18-generic #19~18.04.1-Ubuntu SMP Fri Apr 5 10:22:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
У цьому випадку uname
показує, що на машині Франка встановлено ядро Linux версії 4.18.0 і працює Ubuntu 18.04 на 64-розрядному (x86_64
) ЦП.
Отримання інформації про команди
Ви часто будете користуватися документацію про команди Linux, з якими ви ще не знайомі. Сам командний рядок пропонує всі види корисної інформації про те, що роблять команди та як їх ефективно використовувати. Мабуть, найкориснішу інформацію можна знайти в багатьох файлах системи man
.
Як правило, розробники Linux пишуть файли man
і поширюють їх разом зі створеними ними утилітами. Файли man
– це високоструктуровані документи, вміст яких інтуїтивно поділено стандартними заголовками розділів. Якщо ввести man
і назву команди, ви отримаєте інформацію, яка включає назву команди, короткий опис використання, більш детальний опис, а також деякі важливі історичні та ліцензійні відомості. Наприклад:
$ man uname UNAME(1) User Commands UNAME(1) NAME uname - print system information SYNOPSIS uname [OPTION]... DESCRIPTION Print certain system information. With no OPTION, same as -s. -a, --all print all information, in the following order, except omit -p and -i if unknown: -s, --kernel-name print the kernel name -n, --nodename print the network node hostname -r, --kernel-release print the kernel release -v, --kernel-version print the kernel version -m, --machine print the machine hardware name -p, --processor print the processor type (non-portable) -i, --hardware-platform print the hardware platform (non-portable) -o, --operating-system print the operating system --help display this help and exit --version output version information and exit AUTHOR Written by David MacKenzie. REPORTING BUGS GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report uname translation bugs to <http://translationproject.org/team/> COPYRIGHT Copyright©2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO arch(1), uname(2) Full documentation at: <http://www.gnu.org/software/coreutils/uname> or available locally via: info '(coreutils) uname invocation' GNU coreutils 8.28 January 2018 UNAME(1)
Команда man
працює лише тоді, коли ви даєте їй точне ім’я команди. Однак, якщо ви не впевнені в назві команди, яку шукаєте, ви можете скористатися командою apropos
для пошуку в іменах та описах сторінок man
. Припускаючи, наприклад, що ви не можете згадати, що саме uname
дасть вам поточну версію ядра Linux, ви можете передати слово kernel
у apropros
. Ви, ймовірно, отримаєте багато рядків виведення але вони повинні включати такі:
$ apropos kernel systemd-udevd-kernel.socket (8) - Device event managing daemon uname (2) - get name and information about current kernel urandom (4) - kernel random number source devices
Якщо вам не потрібна повна документація до команди, ви можете швидко отримати основні дані про команду за допомогою type
. У цьому прикладі використовується type
для одночасного запиту чотирьох окремих команд. Результати показують нам, що cp
(“copy”) - це програма, яка розташована у каталозі /bin/cp
, а kill
(зміна стану запущеного процесу) є вбудованою оболонкою, тобто насправді є частиною самої оболонки Bash:
$ type uname cp kill which uname is hashed (/bin/uname) cp is /bin/cp kill is a shell builtin which is /usr/bin/which
Зауважте, що, крім звичайної двійкової команди, такої як cp
, uname
стала «хешованою». Це тому, що Френк нещодавно використовував uname
і, щоб підвищити ефективність системи, ця команда була додана до хеш-таблиці, щоб зробити її доступнішою під час наступного запуску. Якби Френк запустив type uname
після завантаження системи, він виявив би, що type
знову описує uname
як звичайний двійковий файл.
Note
|
Швидше очистити хеш-таблицю можливо запуском команди |
Іноді - особливо під час роботи з автоматизованими сценаріями - вам знадобиться простіше джерело інформації про команду. Команда which
, про яку наша попередня команда type
надала інформацію, не повертає нічого, крім абсолютного розташування команди. У цьому прикладі розглянуті команди uname
та which
.
$ which uname which /bin/uname /usr/bin/which
Note
|
Якщо ви хочете відобразити інформацію про «вбудовані» команди, ви можете скористатися командою |
Використання історії команд
Ви часто ретельно досліджуєте правильне використання команди й успішно запускаєте її разом із складним набором параметрів та аргументів. Але що станеться через кілька тижнів, коли вам потрібно запустити ту ж команду з тими ж опціями та параметрами, але ви не можете згадати деталі? Замість того, щоб починати відновлення команди з нуля, ви часто зможете відновити оригінальну команду, використовуючи history
.
Команда history
поверне останні команди, які ви виконували. Ви можете легко шукати ці команди, передаючи певний рядок до команди grep
. У цьому прикладі здійснюється пошук будь-якої команди, яка містить текст bash_history
:
$ history | grep bash_history 1605 sudo find /home -name ".bash_history" | xargs grep sudo
У прикладі повертається одна команда разом із порядковим номером 1605.
А якщо говорити про bash_history
, то насправді це ім’я прихованого файлу, який ви можете знайти в домашньому каталозі вашого користувача. Оскільки це прихований файл (позначений крапкою, що передує імені файлу), його буде видно лише за допомогою команди виведення вмісту каталогу за допомогою ls
з опцією -a
:
$ ls /home/frank newfile $ ls -a /home/frank . .. .bash_history .bash_logout .bashrc .profile .ssh newfile
Що міститься у файлі .bash_history
? Подивіться самі: ви побачите сотні і сотні ваших останніх команд. Однак ви можете бути здивовані, виявивши, що деякі з ваших останніх команд відсутні. Це тому, що, хоча вони миттєво додаються до динамічної бази даних history
, останні доповнення до вашої історії команд не записуються до файлу .bash_history
, доки ви не завершите сеанс.
Ви можете використовувати вміст history
, щоб зробити роботу з командним рядком набагато швидшою та ефективнішою, використовуючи клавіші зі стрілками вгору та вниз на клавіатурі. Якщо кілька разів натиснути клавішу вгору, командний рядок заповниться останніми командами. Коли ви дійдете до тієї, яку хочете виконати вдруге, ви можете запустити її, натиснувши Enter. Це дозволяє легко викликати та, за бажанням, змінювати команди кілька разів під час сеансу оболонки.
Вправи до посібника
-
Скористайтеся системою
man
, щоб визначити, як вказати командіapropos
вивести коротку команду, щоб вона виводила лише коротке повідомлення про використання, а потім завершувала роботу. -
Використовуйте систему
man
, щоб визначити, яка ліцензія авторського права призначена командіgrep
.
Дослідницькі вправи
-
Визначте архітектуру апаратного забезпечення та версію ядра Linux, які використовуються на вашому комп’ютері, у легкому для читання вихідному форматі.
-
Виведіть останні двадцять рядків динамічної бази даних
history
та файлу.bash_history
, щоб порівняти їх. -
Використайте інструмент
apropos
, щоб визначити сторінкуman
, де ви знайдете команду, яка вам знадобиться для відображення розміру підключеного фізичного блокового пристрою в байтах, а не в мегабайтах або гігабайтах.
Підсумки
На цьому уроці ви дізналися:
-
Як отримати інформацію про розташування вашої файлової системи та програмне забезпечення ОС.
-
Як знайти довідку щодо використання команд.
-
Як визначити розташування файлової системи та тип двійкових файлів команд.
-
Як знайти та повторно використовувати раніше виконані команди.
На цьому уроці обговорювалися наступні команди:
pwd
-
Виводить шлях до поточного робочого каталогу.
uname
-
Виводить інформацію щодо апаратної архітектури вашої системи, версію ядра Linux, дистрибутив і та номер його випуску.
man
-
Надає доступ до файлів довідки, що документують використання команд.
type
-
Виводить розташування файлової системи та вказує тип однієї або декількох команд.
which
-
Виводить розташування файлової системи для команди.
history
-
Виводить або повторно використовує команди, які ви раніше виконували.
Відповіді на вправи до посібника
-
Скористайтеся системою
man
, щоб визначити, як вказати командіapropos
вивести коротку команду, щоб вона виводила лише коротке повідомлення про використання, а потім завершувала роботу.Запустіть
man apropos
і прокрутіть вниз до розділу “Options”, доки не дійдете до абзацу--usage
. -
Використовуйте систему
man
, щоб визначити, яка ліцензія авторського права призначена командіgrep
.Запустіть
man grep
і прокрутіть униз до розділу “Copyright” документу. Зауважте, що програма використовує авторські права від Free Software Foundation.
Відповіді до дослідницьких вправ
-
Визначте архітектуру апаратного забезпечення та версію ядра Linux, які використовуються на вашому комп’ютері, у легкому для читання вихідному форматі.
Запустіть
man uname
, прочитайте розділ “Description” і визначте параметри команди, які відображатимуть лише ті результати, які вам потрібні. Зверніть увагу, як-v
надасть вам версію ядра, а-i
забезпечить інформацію про апаратну платформу.$ man uname $ uname -v $ uname -i
-
Виведіть останні двадцять рядків динамічної бази даних
history
та файлу.bash_history
, щоб порівняти їх.$ history 20 $ tail -n 20 .bash_history
-
Використайте інструмент
apropos
, щоб визначити сторінкуman
, де ви знайдете команду, яка вам знадобиться для відображення розміру підключеного фізичного блокового пристрою в байтах, а не в мегабайтах або гігабайтах.Один із способів — запустити
apropos
з рядкомblock
, прочитати результати, звернути увагу, щоlsblk
надає перелік блокових пристроїв (і, отже, буде найбільш вірогідним інструментом для наших потреб), запуститиman lsblk
, прокрутити розділ “Description” і звернути увагу, що-b
відображатиме розмір пристрою в байтах. Нарешті, запуститиlsblk -b
, щоб побачити, що вийде.$ apropos block $ man lsblk $ lsblk -b