Путівник по Linux

1. Вступ

1.1. З історії створення Linux

Річард Столмен

Річард Столмен

У 1983 році програміст, «філософ» руху вільних програм Річард Столмен, заснував проєкт GNU .

Метою цього проєкту було створення повноцінної Unix -подібної операційної системи і наповнення її лише відкритим програмним забезпеченням.

На початок 1990-х проєкт зібрав майже всі необхідні компоненти такої системи: бібліотеки, компілятори, текстові редактори, командну оболонку Unix, – за винятком основного компонента – ядра операційної системи.

Лінус Торвальдс

Лінус Торвальдс

У 1991 році фінський програміст Лінус Торвальдс створив ядро операційної системи GNU/Linux. Таким чином, з’явилася операційна система з ядром Linux і набором програм і бібліотек, розроблених в рамках проєкту GNU.

Процес розробки і удосконалення ядра постійно продовжується, а інші підсистеми (як-от компоненти GNU) також розвиваються.

Пінгвін Tux

Tux

На відміну від більшості інших операційних систем, система GNU/Linux не має єдиної «офіційної» комплектації.

Різні спільноти й компанії комбінують і поширюють програми GNU разом із ядром Linux та додатковим прикладним програмним забезпеченням у вигляді дистрибутивів Linux.

Пінгвін на ім’я Tux є логотипом і талісманом ядра Linux.

1.2. Де використовується Linux?

Linux є одним із найвидатніших прикладів розробки вільного програмного забезпечення. На відміну від власницьких операційних систем (на кшталт Microsoft Windows та macOS), початкові коди Linux доступні усім для використання, зміни та розповсюдження абсолютно вільно (в тому числі безкоштовно).

Система Linux, спочатку розроблена для використання окремими ентузіастами на своїх персональних комп’ютерах, пізніше набула неабиякої популярності як серверна операційна система (компанії, що надають послуги вебхостингу, використовують Linux на своїх вебсерверах).

Linux працює на багатьох апаратних платформах. Тепер ця операційна система досить успішно використовується як на суперкомп’ютерах, так і вбудована у багато інших пристроїв:

  • смартфони;
  • планшетні ПК;
  • маршрутизатори комп’ютерних мереж (роутери);
  • пристрої автоматики;
  • настільні комп’ютери тощо.

1.3. Дистрибутиви Linux

Типовий дистрибутив Linux складається з:

Більшість з включених програм у дистрибутиви Linux є вільними та/або програмами з відкритим кодом, проте, частина програм можуть бути і власницькими.

Як правило, дистрибутив складається з пакунків.

Під пакунком розуміється окрема програма або бібліотека.

Зазвичай, пакунок постачається у скомпільованій формі, зрозумілій системі керування пакунками.

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

  • інформацію про версію програми та/або пакунку;
  • ім’я розробника;
  • контрольну суму;
  • інформацію про залежності з іншими пакунками.

За допомогою цієї інформації система керування пакунками може оновлювати пакунок до новішої версії в автоматичному, напівавтоматичному чи ручному режимі, шукати потрібний пакунок тощо.

Зазвичай, базова система керування пакунками є досить низькорівневою утилітою, і її супроводжують більш високорівневі програми – менеджери пакунків або упорядники пакунків.

Упорядник пакунків завантажує програми із репозиторія та слідкує за залежностями, встановлюючи їх за потреби. Він також може оновити (автоматично або за командою) всю систему, якщо в репозиторії з’являться оновлені версії.

Системи керування пакунками операційних систем на основі Linux використовують різні формати пакунків. Основні типи форматів пакунків такі:

  • бінарні (двійкові) пакунки (тільки виконувані файли);
  • пакунки, що містять початкові коди програм.

Різноманіття дистрибутивів Linux

Існує величезна кількість дистрибутивів Linux – від повноцінних стільничних та серверних операційних систем до мінімальних середовищ, що, як правило, використовуються у вбудованих системах чи мають спеціалізоване призначення. Серед них:

  • Ubuntu
  • Debian
  • Linux Mint
  • Zorin OS
  • Manjaro
  • Arch Linux
  • Elementary OS
  • CentOS
  • openSUSE
  • Fedora та інші.

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

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

1.3.1. Ubuntu

Ubuntu – одна з найпопулярніших систем, яка має найбільше співтовариство досвідчених користувачів та Інтернет-ресурсів, зручна для користувача і проста для початківця.

На базі Ubuntu створені дистрибутиви Xubuntu і Lubuntu, які позиціонуються як дистрибутиви для малопотужних комп’ютерів.

Дистрибутив Ubuntu побудований на основі Debian GNU/Linux – іншого популярного дистрибутива Linux і спонсорується Canonical – компанією для розробки і популяризації проєктів вільного програмного забезпечення.

Ubuntu надає користувачу мінімальний набір програм загального призначення:

  • багатовіконне середовище робочого столу;
  • вебпереглядач Mozilla Firefox;
  • офісні програми Libre Office з можливістю читати і зберігати файли у форматі Microsoft Office;
  • редактор зображень та інші.

Інше програмне забезпечення у вигляді пакунків можна отримати і встановити із відповідних репозиторіїв.

Для операційних систем, основаних на Debian, і, зокрема, для Ubuntu, використовуються deb-пакунки.

Філософія Ubuntu

Ubuntu logo

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

Ще більш благородну мету операційної системи Ubuntu зміцнює її логотип, який зображує коло людей, які взялися за руки, як символ взаємодопомоги.

Кожна версія Ubuntu має номер, що складається з року та місяця, в якому відбувся випуск системи. Наприклад, перший випуск Ubuntu 4.10 вийшов у світ у жовтні 2004 року.

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

Наприклад, версія Ubuntu 16.04 LTS, яка вийшла 21 квітня 2016 року, носить ім’я Xenial Xerus (Гостинний Ксерус ). Це довготривалий реліз, про що свідчить напис LTS, тобто оновлення безпеки і програмного забезпечення для цього випуску будуть підтримуватися протягом 5 років (до 21 квітня 2021 року).

Так співпало, що на версії Ubuntu 17.10 закінчився алфавіт і все почалося спочатку. Кодове ім’я для цієї версії звучить Artful Aardvark (Спритний Трубкозуб ). Ця версія є проміжною і вона не є версією з довготривалою підтримкою.

Період підтримки для випусків, що не належать до LTS, становить 9 місяців.

Реліз версії Ubuntu 18.04 LTS з кодовою назвою Bionic Beaver (Біонічний Бобер), що вийшов 26 квітня 2018 року, також має довготривалу підтримку (оновлення безпеки та програмного забезпечення до квітня 2023 року).

У версіях з довготривалою підтримкою реалізовано багато покращень в плані стабільності і безпеки системи, адже розробниками виправлено і мінімізовано більшість багів і проблем. Проміжні версії, як правило, використовуються для тестування програмного забезпечення та нововведень у операційну систему.
Переглянути історію випусків Ubuntu можна на wiki-сторінці версій.
На сайті distrotest.net ви можете протестувати без встановлення будь-яку версію операційної системи Ubuntu (в тому числі, обрати іншу операційну систему серед багатьох представлених) у вікні браузера (можна використовувати усі функції системи, видалити та встановити програмне забезпечення, протестувати встановлені програми і навіть видалити або відформатувати жорсткий диск або системні файли).

Нові версії Ubuntu

Фінальною версією Ubuntu з довготривалою підтримкою (оновлення безпеки та програмного забезпечення до квітня 2025 року) для персональних комп’ютерів є реліз Ubuntu 20.04 LTS з кодовою назвою Focal Fossa (Фокусна Фоса ), що вийшов 23 квітня 2020 року.

Focal Fossa

Деякі нововведення в Ubuntu 20.04 LTS:

  • ядро Linux – 5.4 (підтримка ширшого кола процесорів, вдосконалення швидкості завантаження, енергозбереження та USB-C);
  • середовище робочого столу GNOME 3.36 (новий дизайн системного меню і папок, менше навантаження на процесор при анімації вікон, новий дизайн вікна блокування і екрану входу у систему);
  • нові версії популярних мов програмування, зокрема, за замовчуванням, в систему включений Python 3.8 (Python 2 більше не буде підтримуватися Ubuntu).

Рекомендовані системні вимоги:

  • 2 ГГц двоядерний процесор або кращий;
  • 4 Гб оперативної пам’яті;
  • 25 Гб вільного місця на жорсткому диску;
  • доступ до Інтернету (рекомендується, але не обов’язковий).
Більше деталей про нові версії можна дізнатися на офіційному сайті Ubuntu. Для завантаження дистрибутива Ubuntu можна скористатися кількома способами, описаними на сторінці завантажень офіційного сайту Ubuntu. Якщо Ваш комп’ютер не задовільняє рекомендованим системним вимогам, то зверніть увагу на похідні дистрибутиви UbuntuXubuntu , Lubuntu .

2. Встановлення Linux Ubuntu

2.1. Необхідні початкові умови

  • Завантажити iso-образ з дистрибутивом Ubuntu з офіційного сайту Ubuntu.
  • Записати завантажений образ однією зі спеціальних програм на USB-диск (флешку) (Додаток А. Створення завантажувальної флешки).
  • Перевірити підключення до мережі Інтернет (під час встановлення можуть бути завантажені додаткові пакунки програм, які не вмістилися на інсталяційний образ).

2.2. Процес встановлення

Далі описується встановлення операційної системи Ubuntu 20.04 LTS на «чистий» жорсткий диск.
Якщо жорсткий диск, на який здійснюється встановлення Ubuntu, містить важливі дані, перед тим, як продовжити, слід виконати резервне копіювання таких даних на інші носії.

2.2.1. Завантаження із інсталяційного образу

Вставити флешку із записаним образом Ubuntu в USB-порт, перезавантажити комп’ютер.

2.2.2. Вибір мови

Після перезавантаження відкриється вікно вітання, у якому потрібно обрати мову.

Встановлення Ubuntu

Вікно вітання Ubuntu: обираємо мову

2.2.3. Запуск встановлення

Коли мова обрана, на екрані вітання буде запропоновано два варіанти: Спробувати Ubuntu і Встановити Ubuntu.

Якщо обрати Спробувати Ubuntu, то система буде завантажена в Live-режимі, тобто без встановлення на комп’ютер і можна буде спробувати Ubuntu, а в подальшому перейти до встановлення. У випадку з вибором Встановити Ubuntu, відбудеться безпосередньо встановлення.

У випадку вибору варіанту Спробувати Ubuntu, відкриється робочий стіл Ubuntu.

Встановлення Ubuntu

Робочий стіл Ubuntu: знайомство із операційною системою

Для першого знайомства з Ubuntu можна спробувати запустити деякі вже встановлені у систему програми.

В Ubuntu будь-яку встановлену у систему програму можна знайти і відкрити через кнопку Показати програми , що розташована на панелі обраних застосунків. Для швидкого пошуку програми у рядок пошуку можна ввести її назву (або частину її назви) і її ярлик запуску з’явиться у списку.
Утиліта Показати програми в Ubuntu

Утиліта Показати програми в Ubuntu: відкриваємо застосунок Firefox

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

2.2.4. Розкладка клавіатури

Тут вам запропоновано вибрати мову розкладки клавіатури і натиснути Продовжити.

Встановлення Ubuntu

Встановлення Ubuntu: вибір мови розкладки клавіатури

2.2.5. Оновлення та інше програмне забезпечення

На кроці Оновлення та інше програмне забезпечення оберіть спосіб встановлення (звичайна установка чи мінімальна інсталяція) і активуйте обидва пункти у розділі Інші параметри, а саме:

  • Завантажити оновлення при встановленні Ubuntu.
  • Встановити стороннє програмне забезпечення для графіки, обладнання Wi-Fi та додаткових медіаформатів.

Натисніть кнопку Продовжити, щоб перейти до наступного кроку.

Встановлення Ubuntu

Встановлення Ubuntu: способи встановлення і завантаження програмного забезпечення з Інтернету

2.2.6. Тип встановлення

На кроці Тип встановлення потрібно обрати один із варіантів:

  1. Якщо на комп’ютері вже встановлена інша операційна система (або кілька, суть від цього не змінюється), з’явиться перший варіант Встановити Ubuntu поруч з… (даний варіант відсутній на скриншоті нижче, оскільки жорсткий диск, на який відбувається встановлення системи є «чистим»), в якому встановлювач сам знайде місце поруч зі встановленою системою, не заподіявши їй ніякої шкоди.
  2. Другий варіант, який пропонує Стерти диск і встановити Ubuntu. В цьому випадку зітреться все, що є на жорсткому диску і встановиться тільки Ubuntu.
  3. Третій варіант (який і обираємо) – Щось інше, пропонує створити і змінити розділи диска для Ubuntu самостійно (для досвідчених користувачів).
Встановлення Ubuntu

Встановлення Ubuntu: обираємо тип встановлення

Натискаємо кнопку Продовжити, щоб перейти до наступного кроку.

2.2.7. Таблиця розділів

На даному кроці необхідно створити нову таблицю розділів, у випадку встановлення на «чистий» жорсткий диск (він відображається у вікні підключених пристроїв з назвою sda)

Встановлення Ubuntu

Встановлення Ubuntu: підготовка до розбиття диска на розділи

Таблиці розділів: MBR і GPT

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

Раніше для цих цілей використовувався набір програм BIOS, але цей стандарт зараз вважається застарілим, а на зміну йому прийшла технологія UEFI, яка підтримує захищене завантаження, має графічний інтерфейс налаштувань і багато інших переваг.

UEFI, як більш сучасний інтерфейс, повністю підтримує всі функції BIOS, але не навпаки. В налаштуваннях UEFI, у які можна зайти відразу після увімкнення комп’ютера за допомогою натискання клавіш F2, Delete та інших, режим підтримки BIOS частіше всього називається Legacy (спадковий).

Отже, при увімкненні комп’ютера, UEFI (або BIOS) починає ініціалізувати обладнання та знаходить жорсткий диск.

Жорсткі диски у Linux називаються sda, sdb, sdc і т.д. (sda – перший жорсткий диск, sdb – другий і далі по аналогії). Підключені флешки і інші USB-пристрої так само ідентифікуються як жорсткі диски і теж отримують імена вигляду sd*.

Як відомо, цілком жорсткий диск майже ніколи не використовується – диск обов’язково розбивається на розділи (для операційної системи, для файлів користувача тощо).

Розділи у Linux на жорстких дисках називаються так: sda1, sda2, sda3 і т.д. Тобто назва розділу складається з назви диска і номера розділу.

Розбити диск на розділи можна двома стандартними способами: за допомогою MBR або GPT.

MBR

Застарілий стандарт таблиці розділів, розроблений ще за часів DOS , у 1983 році, але він використовується і до цих пір, хоча й містить багато обмежень.

Зокрема, незручним обмеженням MBR є те, що диск можна розділити лише на чотири основних розділи. Це пов’язано з обмеженим обсягом пам’яті, виділеним під таблицю розділів. Тому, у випадку використання способу розмітки MBR, розділи жорсткого диска можуть бути трьох типів: основні, розширені і логічні.

Пов’язані вони так:

  • безпосередньо жорсткий диск ділиться на основні розділи;
  • один з основних розділів може бути призначений розширеним (extended) і розділений на логічні (logical);
  • при цьому основних розділів може бути максимум чотири (з урахуванням розширеного);
  • розширений, якщо є, то завжди один, а логічних може бути скільки завгодно.

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

GPT

Сучасний стандарт управління розділами на жорсткому диску. Ось кілька переваг GPT:

  1. MBR підтримує диски до 2 ТБ, GPT – до 9 ЗБ.
  2. GPT підтримує більше чотирьох розділів (ядро Linux підтримує до 256 розділів).
  3. GPT використовує нову систему адресації LBA, замість застарілої CHS.
  4. Cлужбова інформація GPT дублюється на початку і у кінці диска.
  5. GPT перевіряє контрольні суми, що дозволяє виявити модифікацію таблиці розділів.
  6. GPT підтримує Unicode, а отже кириличні імена.

Отже, у таблиці розділів зберігається інформація про структуру жорсткого диска (кількість розділів, якого вони обсягу, у якій комірці пам’яті починаються і на якій закінчуються тощо). Не дивлячись на те, що таблиці розділів MBR і GPT відрізняються архітектурою, вони виконують одну й ту ж роботу.

Щоб дізнатися, яка таблиця розділів використовується на вашому диску, виконайте у терміналі команду

sudo fdisk -l

Результат виконання команди може бути таким:

Диск /dev/sda: 100,5 GiB, 107904958464 байтів, 210751872 секторів
Модель диска:
Одиниці: секторів з 1 * 512 = 512 байтів
Розмір сектора (логічного/фізичного): 512 байтів / 512 байтів
Розмір введення-виведення (мінімальний/оптимальний): 512 байтів / 512 байтів
Тип мітки диска: dos
Ідентифікатор диска: 0x80bc85fe

У рядку Тип мітки диска: присутнє значення dos, а це означає, що у вас використовується MBR.

У випадку використанян GPT значення буде gpt:

Диск /dev/sda: 51,75 GiB, 55548215296 байтів, 108492608 секторів
Модель диска:
Одиниці: секторів з 1 * 512 = 512 байтів
Розмір сектора (логічного/фізичного): 512 байтів / 512 байтів
Розмір введення-виведення (мінімальний/оптимальний): 512 байтів / 512 байтів
Тип мітки диска: gpt
Ідентифікатор диска: 3FF00BF0-665B-4F6E-8F2E-C28A25D1A951
UEFI використовує GPT там, де BIOS використовує головний завантажувальний запис MBR.

Для створення нової таблиці розділів натисніть по черзі кнопки Нова таблиця розділів…​ і Продовжити

Встановлення Ubuntu

Встановлення Ubuntu: створення нової таблиці розділів на жорсткому диску sda

У результаті цих дій отримаємо обсяг вільного місця на диску у МБайтах

Встановлення Ubuntu

Встановлення Ubuntu: нова таблиця розділів, створена на диску sda

2.2.8. Створення розділів

Створимо на диску розділи для різних задач.

Теорія

Точки монтування у Linux

Структура файлової системи у Linux відрізняється від Windows. Linux не призначає букви кожному диску і розділу, як у Windows. Замість цього встановлюється точка монтування для кожного диска або розділа.

Linux працює за принципом ієрархічного дерева каталогів, де кореневий каталог (позначається /) є основною точкою монтування, в яку, за замовчуванням, входять усі інші.

На відміну від Windows, у Linux всі використовувані розділи дисків, флешки, DVD-диски та інші зовнішні носії монтуються в підкаталоги кореня файлової системи, а не як окремі пристрої (як-от C:, D:, …).

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

Під час встановлення, Ubuntu надає можливість створити різні точки монтування. Деякі з них наведені у таблиці.

КаталогОпис
/bootпочатковий завантажувач і заголовки ядра
/devдрайвери і пристрої
/homeфайли, призначені для користувача
/optдодаткове програмне забезпечення
/srvсистемні сервіси
/tmpтимчасові файли
/usrзастосунки
/usr/localдані, доступні всім користувачам

У стандартній розбивці диска для встановлення Linux можуть використовуватись такі розділи:/

основний (системний) розділ, корінь файлової системи;/boot

файли завантажувача;/home

розділ для файлів користувача;swap

файл підкачки.

SWAP

Історично, swap у Linux розміщувався на окремому розділі із спеціальною файловою системою swap (розділ підкачки) без точки монтування, але в сучасних дистрибутивах продуктивність swap-файла не поступається swap-розділу.

Однак, стандартний встановлювач Ubuntu (до версії 17.04) не вміє створювати swap-файл при встановленні та інформує про це у вигляді попередження, якщо swap-розділ не визначений при розмітці диска. Починаючи з версії 17.04, Ubuntu пропонує за замовчуванням створювати swap у файлі (обсяг файла визначається як 5% від вільного на диску простору, але не більше 2 Гб).

Використання swap-файла має деякі переваги над swap-розділом: ​​він не займає окремий розділ, його легко створити, змінити його розмір або видалити.

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

Рекомендації щодо створення розділів у Linux

/

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

З огляду на все це, потрібно виділити достатню кількість дискового простору для цього розділу. Мінімальні вимоги для того, щоб вмістилися усі файли з інсталяційного диска ~ 8 ГБайт. При активному використанні (встановленні великої кількості програм, збільшення кешу програм, і т.д.) або при виникненні збоїв у роботі, що призводить до зростання обсягу каталогів з логами системи (/var/log), може знадобитися близько 20 ГБайт дискового простору. З кожним оновленням розмір системи буде ще збільшуватися на 200500 МБайт. Виходячи з цього, для кореневого розділу можна із запасом виділити до 50 ГБайт дискового простору.

Файлова система на даному розділі повинна бути стабільною, у іншому випадку, є ризик втратити всю систему при невдалому вимкненні комп’ютера. А тому, для системного розділу, підійде журнальна файлова система, наприклад, ext4.

/boot

У цьому розділі розміщуються файли налаштування і модулі завантажувача, які зчитуються при старті системи. Ці файли займають не так багато простору, близько 100 МБайт, але з часом будуть накопичуватися старі версії ядер, так що краще запастися місцем і виокремити, наприклад, до 512 МБайт.

Завдання цього розділу зводиться до того, щоб якомога швидше видавати файли під час завантаження. Журнал роботи тут не потрібний, оскільки він тільки сповільнить завантаження, а файли змінюються дуже рідко. Тому для цього розділу підійде файлова система ext2.

Створювати розділ /boot необов’язково, але його варто робити у разі встановлення кількох дистрибутивів Linux .

/home

Це розділ для ваших файлів (аналог диска d: у Windows). Тут будуть зберігатися ваші завантаження, документи, відео, музика, а також налаштування програм. Для цього розділу необхідно виділити увесь простір, що залишився. Файлова система, так само як і для кореня файлової системи, потрібна стабільна і швидка – ext4.

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

swap

Розділ swap використовується системою при нестачі оперативної пам’яті і для режиму сну, тому його необхідність визначається двома факторами: обсягом оперативної памяті і наміром використовувати «режим сну».

Режим UEFI і таблиця розділів GPT

Сучасні материнські плати персональних комп’ютерів і ноутбуків випускаються з інтерфейсом UEFI і це зумовлює виконувати розмітку диска при встановленні системи дещо інакше, як у випадку використання BIOS.

Зокрема, коли зв’язок між обладнанням і операційною системою на таких материнських платах здійснюється через увімкнений режим UEFI (а не Legacy BIOS), для розмітки диска створюється таблиця розділів GPT і файли завантажувача операційної системи повинні зберігатися в окремому розділі, який називається ESP (Extensible Firmware Interface System Partition).

Розділ ESP створюється першим на етапі розмітки диска в процесі встановлення системи у режимі UEFI з такими параметрами:

  • обсяг із запасом ~ 300 МБайт;
  • у списку Використовувати як: вказуть значення завантажувальний розділ EFI.
Створення завантажувального розділу EFI

Розмітка диску в режимі UEFI: створення завантажувального розділу EFI

Звичайно, можна використовувати режим Legacy BIOS, оскільки більшість материнських плат з UEFI дозволяють відтворювати його. У цьому режимі можна встановити Linux без створення додаткового розділу ESP.
Розмітку диска можна також виконати за допомогою утиліти GParted, яка міститься на завантажувальному Live-образі, і запускається у терміналі командою gparted.

Далі можна продовжити встановлення системи як зазвичай: створити розділ для завантажувача (за потреби), створити кореневий розділ, домашній розділ тощо.

Результат розмітки диску з розділом ESP для UEFI в Ubuntu у програмі GParted

Утиліта GParted в Ubuntu: результат розмітки диску з розділом ESP для UEFI

Висновки

У випадку використання режиму UEFI необхідно першим створювати завантажувальний розділ ESP.

Для типової настільної системи немає ніякого сенсу виокремлювати власні розділи для усіх точок монтування.

Якщо ви плануєте запускати більше двох операційних систем або використовувати шифрування кореневого розділу, то, можливо, буде потрібно виділити окремий розділ для /boot.

Рекомендується при встановленні розбивати жорсткий диск вручну, створюючи як мінімум 2 розділи (для кореня файлової системи / і для файлів користувача /home), що надалі полегшує процеси відновлення, перевстановлення системи або перехід на інший дистрибутив.
Практика
Якщо використовується режим UEFI, спочатку необхідно створити завантажувальний розділ EFI, а потім відразу перейти до створення кореневого і домашнього розділів. Якщо використовується звичайний BIOS, то розділ EFI не потрібно створювати і можна відразу перейти до створення розділу завантаження /boot (за потреби) та кореневого й домашнього розділів. Скористаємся цим варіантом встановлення.

Для створення розділів вибираємо пункт Вільне місце і натискаємо на плюс (+) при створенні кожного нового розділу.

Встановлення Ubuntu

Встановлення Ubuntu: створення розділу завантаження /boot

Встановлення Ubuntu

Встановлення Ubuntu: створення кореневого розділу /

Встановлення Ubuntu

Встановлення Ubuntu: створення домашнього розділу /home

На цьому розмітка диска завершена. Натискаємо Встановити зараз

Встановлення Ubuntu

Встановлення Ubuntu: остаточна розмітка диска

і підтверджуємо внесення змін на диск – натискаємо Продовжити, щоб продовжити встановлення.

Встановлення Ubuntu

Встановлення Ubuntu: підтвердження змін, внесених на диск

2.2.9. Ваше місцезнаходження?

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

Встановлення Ubuntu

Встановлення Ubuntu: налаштування часу у системі

2.2.10. Користувач

На етапі встановлення Хто ви? необхідно ввести ім’я користувача і пароль для основного користувача, від імені якого буде використовуватись система, а також ввести мережеве ім’я для комп’ютера.

Пароль варто записати, адже його часто треба буде вводити при налаштуванні системи.

Вхід у систему можна зробити автоматичним (якщо комп’ютером буде користуватися один користувач), у іншому випадку (наприклад, користувачів буде два) обираємо пункт Для входу потрібен пароль

Встановлення Ubuntu

Встановлення Ubuntu: ім’я користувача і пароль для входу, назва комп’ютера в мережі

Якщо все заповнено і активовано, натисніть Продовжити.

2.2.11. Завершальний етап встановлення

Тепер залишилося дочекатися поки завершиться встановлення Ubuntu (копіювання файлів на комп’ютер).

Встановлення Ubuntu

Встановлення Ubuntu: копіювання файлів

Після цього необхідно буде перезавантажити комп’ютер.

Встановлення Ubuntu

Встановлення Ubuntu: перезавантаження комп’ютера для завершення встановлення

На завершальному етапі встановлення в процесі перезавантаження комп’ютера треба витягнути інсталяційний носій (флешку) з образом.

2.2.12. Вхід у систему

Залишилося ввести логін і пароль

Встановлення Ubuntu

Встановлення Ubuntu: вхід у систему

для авторизації у системі

Встановлення Ubuntu

Встановлення Ubuntu: стільниця Ubuntu

3. Організація файлової системи у Linux

3.1. Поняття файла і каталогу

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

Для операційної системи Linux файл – окрема область даних на одному з носіїв інформації, у якої є власне ім’я. Більше того, усі пристрої, підключені до комп’ютера (починаючи з клавіатури і закінчуючи будь-якими зовнішніми пристроями, наприклад, принтерами і сканерами) Linux визначає як файли.

Звичайно, файл, який містить звичайні дані, сильно відрізняється від файла, призначеного для звернення до пристрою, тому у Linux визначені кілька різних типів файлів.

В основному користувач має справу з файлами трьох типів:

У файлових системах, в якості основного організаційного принципу, використовують каталоги. Говорять, що каталог містить в собі файли або інші каталоги.

Каталог у системі Linux лише посилається на файли або інші каталоги, фізичне розміщення даних на диску, зазвичай, ніяк не пов’язане з розміщенням каталогу.

Каталог – це список посилань на файли або інші каталоги. Каталог, на який є посилання в даному каталозі, називається підкаталогом або вкладеним каталогом.

Що таке каталог у Linux?

Каталог у файловій системі Linux найбільше нагадує бібліотечний каталог, що містить посилання на об’єднані за певними ознаками книги та інші розділи каталогу (файли і підкаталоги). Посилання на один і той же файл може міститися в декількох каталогах одночасно, що робить доступ до файла зручнішим.

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

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

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

Далі у підручнику, зазвичай, використовується більш відповідний термін для Linuxкаталог.

3.2. Назви файлів і каталогів

Головні відмінні ознаки файлів і каталогів – це їх імена.

У Linux імена файлів і каталогів можуть бути довжиною не більше 256 символів і можуть містити будь-які символи, крім /. Причина цього обмеження очевидна: символ / (прямий слеш) використовується як розділювач імен у складі шляху до файлів і каталогів, тому не повинен зустрічатися в самих іменах.

У Linux всі імена файлів і каталогів є чутливими до регістру, тобто спокійно можна створити в одному каталозі два файли з однаковими іменами, але записаними у різних регістрах, наприклад, Ubuntu.txt і ubuntu.txt.

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

  • спецсимволи: *, \, &, <, >, ;, (, ), ǀ, -;
  • пропуски і табуляції.

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

У Linux в іменах файлів і каталогів допустимо використовувати будь-які символи будь-якої мови.

Файли, створені у Linux, не завджи можна прочитати у іншій операційній системі. Щоб уникнути таких проблем, рекомендують давати назви файлам тільки символами ASCII, а для вмісту файлів використовувати універсальне кодування UTF-8.

3.3. Розширення файлів

Багатьом користувачам знайоме поняття розширення – частина імені файла після крапки, яка обмежується декількома символами і вказує на тип даних, які містяться у файлі.

У файловій системі Linux немає ніяких вказівок з приводу розширення: в імені файла може бути будь-яка кількість крапок (в тому числі і жодної), а після останньої крапки може бути будь-яка кількість символів.

У старих файлових системах, організованих за принципом 8 + 3 (наприклад, DOS, ISO-9660), в імені файла дозволяється не більше однієї крапки і розширення може бути не довше 3-х символів. Це обмеження визначило вигляд багатьох, із відомих сьогодні, розширень файлів, наприклад, .txt для текстових файлів.

Хоча розширення необов’язкові і не нав’язуються Linux, вони широко використовуються: розширення дозволяє людині або програмі, не відкриваючи файл, тільки по його імені визначити, якого типу дані в ньому містяться.

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

Визначення типу даних у файлі

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

У розпорядженні користувача Linux завжди є утиліта file, яка призначена саме для визначення типу даних, що містяться у файлі. Використання її показано на наступному прикладі.

teacher@teacher-VirtualBox:~/terminal_work$ file Epilogue.mp3
Epilogue.mp3: Audio file with ID3 version 2.3.0, contains:MPEG ADTS, layer III, v1, 320 kbps, 44.1 kHz, Stereo
teacher@teacher-VirtualBox:~/terminal_work$ file new_file.txt
new_file.txt: ASCII text

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

Застосунок file вміє розрізняти дуже багато типів даних і майже напевно видасть правильну інформацію. Ця утиліта ніколи не довіряє розширенню файла (якщо воно є), і аналізує самі дані.

Застосунок file розрізняє не лише різні дані, але і різні типи файлів, зокрема, може повідомити, якщо досліджуваний об’єкт не є звичайним файлом, а, наприклад, є каталогом. Це ілюструє наступний приклад.

teacher@teacher-VirtualBox:~/terminal_work$ file ./python_files
./python_files: directory

3.4. Дерево каталогів

У сучасних файлових системах використовується ієрархічна модель організації даних: існує один каталог, який об’єднує всі дані у файловій системі – це корінь файлової системи або кореневий каталог.

Кореневий каталог може містити файли і підкаталоги (каталоги першого рівня вкладеності). Підкаталоги, у свою чергу, також можуть містити файли і підкаталоги (каталоги другого рівня вкладеності) і т.д.

Таким чином, усе, що записано на диску – це файли, каталоги – обов’язково належить кореневому каталогу: або безпосередньо міститься в ньому, або на деякому рівні вкладеності.

Структуру файлової системи Linux можна уявити наочно у вигляді дерева, коренем якого є кореневий каталог, а у вершинах розташовані всі інші каталоги.

Ієрархія файлової системи Linux

Ієрархія файлової системи Linux

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

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

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

Шлях до файлів і каталогів у Linux

Всі файли і каталоги в Linux у файловій системі мають певну адресу, за допомогою якої можна отримати до них доступ.

Файлова система Linux дуже сильно відрізняється від файлової системи Windows у правилах утворення такої адреси. Найголовніша відмінність в тому, що адреса файла починається не з назви диска, наприклад, C:\ або D:\, як це відбувається у Windows, а з кореня (кореневого каталогу), до якого підключені всі інші каталоги. Його адреса – /.

Шляхи до файлів і каталогів Linux використовують прямий слеш / для поділу каталогів в адресі, на відміну від Windows, де використовується зворотний слеш \.

Наприклад, якщо у Windows повний шлях до файла на робочому столі виглядає так: C:\Users\Teacher\Desktop\, то шлях до файла у linux буде таким: /home/teacher/desktop/.

В операційній системі Linux може бути кілька видів шляхів до файла:

  • абсолютний (повний) шлях від кореня файлової системи – починається від кореня / і описує весь шлях до файла;
  • відносний шлях – шлях до файла відносно поточного каталогу;
  • шлях у файловій системі не від кореня, а шлях відносно домашнього каталогу поточного користувача.

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

3.5. Ієрархія компонентів системи

Дерево каталогів файлової системи Linux однакове (або майже однакове) в будь-якому дистрибутиві Linux.

У кореневому каталозі Linux-системи, зазвичай, знаходяться тільки підкаталоги зі стандартними іменами. Більше того, не тільки імена каталогів, але і типи даних, які можуть потрапити в той чи інший каталог, також регламентовані стандартом. Цей стандарт називається Filesystem Hierarchy Standard (стандартна структура файлових систем).

Опишемо коротко, що знаходиться у деяких з підкаталогів кореневого каталогу./bin

Назва цього каталогу походить від слова binaries (двійкові файли). В цьому каталозі зберігаються команди операційної системи./boot

boot – завантаження системи. В цьому каталозі розташовані файли-образи ядер Linux і завантажувачі системи (наприклад, завантажувач GRUB)./dev

В цьому каталозі знаходяться усі доступні в системі файли особливого типу, призначені для звернення до різних системних ресурсів і пристроїв (від англ. devices, звідси і скорочена назва каталогу)./etc

Каталог для системних конфігураційних файлів. Тут зберігається інформація про специфічні налаштування системи: дані про зареєстрованих користувачів, доступні ресурси, налаштування різних програм./home

Тут розташовані каталоги, що належать користувачам системи – домашні каталоги, звідси і назва home. Розмежування усіх файлів, що створюються користувачами, від інших системних файлів дає очевидну перевагу: серйозне пошкодження системи або необхідність оновлення не торкнеться найбільш цінної інформації – файлів, призначених для користувача./lib

Назва цього каталогу – скорочення від англ. libraries (бібліотеки). Бібліотеки – це зібрання найбільш стандартних функцій, необхідних багатьом програмам: операцій введення/виведення, малювання елементів графічного інтерфейсу та інших. Щоб не включати ці функції в текст кожної програми, використовуються стандартні функції бібліотек – це значно економить місце на диску і спрощує написання програм. У цьому каталозі містяться бібліотеки, необхідні для роботи найбільш важливих системних утиліт, які розміщені в каталогах /bin і /sbin./mht

Каталог для монтування (від англ. mount) – тимчасового підключення файлових систем, наприклад, на знімних носіях (флеш-диски, CD-ROM та інші)./proc

У цьому каталозі всі файли віртуальні – вони розташовуються не на диску, а в оперативній пам’яті. У цих файлах міститься інформація про програми (процеси), які виконуються в даний момент у системі./root

Домашній каталог адміністратора системи – суперкористувача root. Сенс розміщувати його окремо від домашніх каталогів інших користувачів полягає в тому, що /home може розташовуватися на окремому пристрої, який не завжди доступний (наприклад, на мережевому диску), а каталог root повинен бути присутнім у будь-якій ситуації./sbin

Каталог для найважливіших системних утиліт (назва каталогу – скорочення від system binaries): на додаток до утиліт /bin тут знаходяться програми, необхідні для завантаження, резервного копіювання, відновлення системи. Повноваження на виконання цих програм є тільки у суперкористувача./tmp

Цей каталог призначений для тимчасових файлів: у таких файлах програми зберігають проміжні дані, необхідні для роботи. Після завершення роботи програми тимчасові файли втрачають сенс і можуть бути видалені. Зазвичай, каталог /tmp очищається при кожному завантаженні системи./usr

Каталог /usr містить підкаталоги bin, etc, lib, sbin, як і в кореневому каталозі. Однак, у кореневий каталог потрапляють тільки утиліти, необхідні для завантаження і відновлення системи в аварійній ситуації, усі інші програми і дані розташовуються в підкаталогах /usr. Цей каталог містить усі встановлені пакунки програм./var

Назва цього каталогу – скорочення від variable (змінні дані). Тут розміщуються ті дані, які створюються в процесі роботи різними програмами і призначені для передачі іншим програмам і системам (черги друку, системні журнали, що містять протоколи роботи системи, тощо). На відміну від каталогу /tmp, сюди потрапляють ті дані, які можуть знадобитися після того, як програма, що їх створила, завершила роботу.

Стандарт FHS регламентує не тільки перераховані каталоги, а й їх підкаталоги, а іноді навіть наводить список конкретних файлів, які повинні бути присутніми у певних каталогах.

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

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

Короткий опис стандартної ієрархії каталогів Linux можна отримати, виконавши в терміналі команду man hier.

4. Термінал

Сучасні системи Linux дозволяють зробити практично все за допомогою програм з графічним інтерфейсом, починаючи від встановлення програмного забезпечення і закінчуючи налаштуванням системи. Але термінал теж не втрачає свою актуальність.

Термінал – це програма Linux, яка має інтерфейс командного рядка і є потужним інструментом, за допомогою якого здійснюється ефективне керування операційною системою.

За допомогою термінала можна:

  • встановлювати і запускати програми;
  • працювати з файлами;
  • налаштовувати систему та багато іншого.

При достатньому рівні знань, дії в терміналі виконуються набагато швидше і ефективніше.

Наприклад, не потрібно шукати пункти меню, клікати кілька разів мишкою, виконувати пошук програми у системі тощо. Досить просто набрати одну команду, передати їй потрібні параметри, натиснути Enter і комп’ютер виконає всі потрібні дії.

У даному випадку, команда – це ім’я програми, яке вводиться в терміналі для її запуску. Разом з ім’ям в команді можуть бути присутніми опції і параметри.
Для запуску термінала в Ubuntu натисніть сполучення клавіш Ctrl+Alt+T або використайте утиліту Показати програми .
Термінал в Ubuntu

Термінал в Ubuntu

Після запуску термінала у його вікні з’являється послідовніть символів, на зразок: teacher@teacher-VirtialBox:~$, яку можна розшифрувати так (@ і : – символи розділювачів):teacher

ім’я поточного користувача в системі.teacher-VirtualBox

назва комп’ютера.~

(символ тильда) поточний каталог, в якому будуть виконуватись введені команди, інша назва – домашній каталог користувача (у даному випадку /home/teacher).$

символ запрошення до введення команд.

Спробуємо термінал у дії. Введемо команду lsb_release -a у терміналі, щоб дізнатися інформацію про поточну версію Ubuntu

teacher@teacher-VirtualBox:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal

Щоб отримати інформацію про поточне ядро системи Ubuntu використовують команду uname -a

teacher@teacher-VirtualBox:~$ uname -a
Linux teacher-VirtualBox 5.8.0-36-generic #40~20.04.1-Ubuntu SMP Wed Jan 6 10:15:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Для отримання лише назви ядра можна виконати команду uname -r

teacher@teacher-VirtualBox:~$ uname -r
5.8.0-36-generic

4.1. Запуск програм

Запуск програм можна здійснювати не лише через Показати програми Утиліта Показати програми в Ubuntu, але і за допомогою термінала.

Наприклад, щоб відкрити програму текстового редактора gedit, який вбудований в Ubuntu за замовчуванням, необхідно ввести у терміналі латинськими малими літерами команду – назву програми gedit

teacher@teacher-VirtualBox:~$ gedit

Виконання команди запускає у терміналі процес, пов’язаний з текстовим редактором gedit, тому закриття термінала призведе до переривання процесу, відповідно до закриття програми.

Коли в терміналі Linux виконується якась команда, нам потрібно почекати її завершення, щоб виконати наступну. Або відкрити нове вікно термінала для виконання іншої команди.

Запуск програми у терміналі можна зробити по іншому

teacher@teacher-VirtualBox:~$ gedit & exit

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

4.2. Правила роботи

Робота у командному рядку термінала Linux може виконуватися за допомогою великої кількості команд. Багато з них, наприклад, для навігації по каталогам, перегляду вмісту файлів і каталогів, встановлення програм вже присутні у системі.

Команди термінала Linux чутливі до регістру. sudo, SUDO, sUdO – не одне й те ж саме, спрацює тільки перший варіант команди. У більшості випадків у записі команд використовуються малі літери, але іноді регістр все ж переключається, у разі використання разом із командою опцій і параметрів (chown -R).

При використанні імен файлів і каталогів також важливо правильно вводити назви: file1 і File1 – різні файли, навіть, якщо вони знаходяться в одному каталозі.

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

Для прикладу, якщо у домашньому каталозі користувача (/home/teacher) ввести Зав і натиснути клавішу Tab, автодоповнення спрацює лише для одного слова Завантаження, назва якого повністю з’явиться в рядку.

Якщо ж ввести За і двічі натиснути клавішу Tab, на екрані з’являться можливі варіанти назв каталогів

teacher@teacher-VirtualBox:~$ За
Завантаження/     Загальнодоступні/

Введення літери З і подвійне натискання клавіші Tab дасть наступний результат

teacher@teacher-VirtualBox:~$ З
Завантаження/     Загальнодоступні/ Зображення/

При введенні команд потрібно бути обережним із використанням пропусків. Наприклад, команда chown-R видасть помилку (правильно chown -R), так як команда і опція склеїлися.

Щоб створити/відкрити/видалити файл або каталог, у назві яких є пропуск, можна взяти все ім’я в лапки або замінити пропуск на зворотний слеш \ і пропуск. Якщо цього не зробити, то, наприклад, команда mkdir, що створює каталог, створить 2 каталоги: Назва і каталогу, а використання інших команд просто видасть помилку.

teacher@teacher-VirtualBox:~/Документи$ mkdir Назва каталогу
teacher@teacher-VirtualBox:~/Документи$ ls
каталогу  Назва
teacher@teacher-VirtualBox:~/Документи$ mkdir Назва\ каталогу2
teacher@teacher-VirtualBox:~/Документи$ ls
 каталогу   Назва  'Назва каталогу2'
teacher@teacher-VirtualBox:~/Документи$ mkdir "Назва каталогу3"
teacher@teacher-VirtualBox:~/Документи$ ls
 каталогу   Назва  'Назва каталогу2'  'Назва каталогу3'

Сполучення клавіш Ctrl+C і Ctrl+V для копіювання і вставки у терміналі не працюють. Тому необхідно використовувати сполучення клавіш Ctrl+Shift+C і Ctrl+Shift+V відповідно або користуватись контекстним меню.

Якщо натискати на клавіатурі клавіші або , в поточному рядку термінала будуть з’являтися команди, які вже були виконані. Для очищення вікна термінала користуються командою clear.

4.3. Синтаксис команд

Команди у терміналі можуть виконуватися без параметрів, з параметрами, що дозволяють вказати дані, з якими буде працювати програма, і з опціями, за допомогою яких можна налаштувати поведінку.

Більшість стандартних команд дотримуються синтаксису

команда опції параметр1 параметр2 …

Опції часто необов’язкові і уточнюють той чи інший аспект роботи програми. Вони записуються у формі:

  • риска та символ (наприклад, -o)
  • дві риски та слово (наприклад, --output).

Наведемо кілька прикладів для команди ls.

Без опцій і параметрів

teacher@teacher-VirtualBox:~$ ls
Відео      Завантаження      Зображення  Стільниця  pythonguide
Документи  Загальнодоступні  Музика      Шаблони    snap

З параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls pythonguide/
basketball_teams.py  cities_facts.py  quest.py

або

teacher@teacher-VirtualBox:~$ ls ./pythonguide
basketball_teams.py  cities_facts.py  quest.py

З опцією -l, яка дозволяє вивести вміст каталогу у вигляді деталізованого списку

teacher@teacher-VirtualBox:~$ ls -l
загалом 40
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Відео
drwxr-xr-x 6 teacher teacher 4096 січ 10 12:31 Документи
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Завантаження
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Загальнодоступні
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Зображення
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Музика
drwxr-xr-x 3 teacher teacher 4096 січ 10 12:01 Стільниця
drwxr-xr-x 2 teacher teacher 4096 січ  9 15:14 Шаблони
drwxrwxr-x 2 teacher teacher 4096 січ 10 13:21 pythonguide
drwxr-xr-x 3 teacher teacher 4096 січ 10 10:54 snap

З опцією -l і параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls -l pythonguide/
загалом 12
-rwxrwxrwx 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwxrwx 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwxrwx 1 teacher teacher  491 сер  5  2017 quest.py

З двома опціями -l і -a (показати приховані каталоги і файли) та параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls -l -a pythonguide/
загалом 20
drwxrwxr-x  2 teacher teacher 4096 січ 10 13:21 .
drwxr-xr-x 17 teacher teacher 4096 січ 10 13:30 ..
-rwxrwxrwx  1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwxrwx  1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwxrwx  1 teacher teacher  491 сер  5  2017 quest.py

Можна комбінувати дві опції так

teacher@teacher-VirtualBox:~$ ls -la pythonguide/
загалом 20
drwxrwxr-x  2 teacher teacher 4096 січ 10 13:21 .
drwxr-xr-x 17 teacher teacher 4096 січ 10 13:30 ..
-rwxrwxrwx  1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwxrwx  1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwxrwx  1 teacher teacher  491 сер  5  2017 quest.py

4.4. Об’єднання команд

У командному рядку Linux можна об’єднувати відразу кілька команд. Наприклад, необхідно виконати спочатку одну команду, за нею другу і так далі. Для цього завдання необхідно написати у командному рядку одну інструкцію, яка це все виконає, використавши службові символи ; && || |.

Наприклад, необхідно виконати спочатку одну команду. Потім, коли вона відпрацює (поверне управління в командний рядок), потрібно запустити другу команду. Для цього служить символ крапка з комою ;.

Таким чином, якщо у терміналі виконати команди для оновлення програмного забезпечення операційної системи Ubuntu

sudo apt update; sudo apt upgrade

то спочатку запуститься перша команда sudo apt update, а коли управління повернеться у термінал, то запуститься друга команда sudo apt upgrade. Це називається послідовним виконанням команд. Незалежно від того, як виконалася попередня команда, друга команда повинна буде запуститися.

Символи && і || означають не що інше, як логічне І та АБО. Тому коли записати

команда1 && команда2 && команда3

то це означає, що команда команда2 буде виконана тільки в тому випадку, якщо команда команда1 була виконана успішно. Кожна наступна команда виконується тільки при успішному виконанні попередньої.

Якщо виконати конструкцію

команда1 || команда2 || команда3

то команда команда2 буде виконана тільки тоді, якщо команда1 повернула помилку. Кожна наступна команда буде працювати тільки тоді, якщо попередня повернула помилку.

Якщо виконати інcтрукцію

команда1 | команда2

то результат виконання команда1 буде переданий на вхід команда2.

4.5. Шлях до файлів і каталогів

При роботі у терміналі Linux дуже часто необхідно разом із використанням команд вказувати шлях до файлів або каталогів файлової системи.

Розглянемо докладніше як виглядають шляхи в Linux на основі кількох прикладів. Для демонстрації будемо користуватися командою ls, яка призначена для перегляду вмісту каталогів.

Наприклад, у нас є каталог pythonguide в домашньому каталозі користувача з трьома файлами у ньому

teacher@teacher-VirtualBox:~/pythonguide$ ls
basketball_teams.py  cities_facts.py  quest.py

Ось так буде виглядати абсолютний (повний) шлях до файла basketball_teams.py

teacher@teacher-VirtualBox:~$ ls /home/teacher/pythonguide/basketball_teams.py
/home/teacher/pythonguide/basketball_teams.py

Відносний шлях щодо поточного каталогу pythonguide до файла cities_facts.py буде таким

teacher@teacher-VirtualBox:~$ ls pythonguide/cities_facts.py
pythonguide/cities_facts.py

або

teacher@teacher-VirtualBox:~$ ls ./pythonguide/cities_facts.py
./pythonguide/cities_facts.py

Відносний шлях, який починається від домашнього каталогу, що позначається ~, до файла quest.py буде таким

teacher@teacher-VirtualBox:~$ ls ~/pythonguide/quest.py
/home/teacher/pythonguide/quest.py

В кожному каталозі є два приховані посилання, які можна побачити за допомогою команди ls, виконавши її з параметром -a (показати приховані файли та каталоги)

teacher@teacher-VirtualBox:~/pythonguide$ ls -a
.  ..  basketball_teams.py  cities_facts.py  quest.py

Перше посилання (.) вказує на поточний каталог, друге (..) вказує на каталог рівнем вище. Ці посилання відкривають широкі можливості для навігації по каталогам за допомогою термінала.

Наприклад, щоб посилатися на файл quest.py у поточному каталозі pythonguide, можна використовувати конструкцію ./quest.py. Така конструкція є важливою при виконанні програми.

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

Друге посилання дозволяє отримати доступ до файлів у каталозі вище поточного

teacher@teacher-VirtualBox:~/pythonguide$ ls ../pythonguide/cities_facts.py
../pythonguide/cities_facts.py

4.6. Довідка по команді

За назвою команди можна дізнатися для чого вона застосовується, як використовується і які доступні для неї опції. Для цього використовують конструкцію назва_команди --help

teacher@teacher-VirtualBox:~$ pwd --help
pwd: pwd [-LP]
    Виводить назву поточного робочого каталогу.

    Параметри:
      -L	Вивести значення $PWD, якщо вона вказує поточний робочий каталог.
      -P	Вивести фізичне розташування каталогу, без символічних посилань.

    Зазвичай `pwd' працює як ніби вказано `-L'.

    Код завершення:
    Команда завершується невдало, якщо вказано неправильний параметр чи
    не вдалося отримати доступ до поточного робочого каталогу.

Або можна використати альтернативний варіант – команду man

man назва_команди

4.7. Навігація файловою системою

Коли ви відкриваєте термінал в Ubuntu, то відразу знаходитеся у своєму домашньому каталозі

teacher@teacher-VirtualBox:~$
Значок ~ (тильда) – означає домашній каталог поточного користувача.

Щоб дізнатися поточний каталог (відобразити повний шлях до поточного каталогу), у терміналі досить набрати команду pwd

teacher@teacher-VirtualBox:~$ pwd
/home/teacher

Наступна команда, яка використовується в навігації – це ls. Якщо ввести у терміналі ls, відобразиться вміст поточного каталогу

teacher@teacher-VirtualBox:~$ ls
Відео      Завантаження      Зображення  Стільниця  pythonguide
Документи  Загальнодоступні  Музика      Шаблони    snap

Безпосередньо для навігації в терміналі використовується команда cd.

Спочатку записується команда cd, потім шлях, куди потрібно перейти. Ось так виглядає перехід в каталог pythonguide:

teacher@teacher-VirtualBox:~$ cd pythonguide
teacher@teacher-VirtualBox:~/pythonguide$

або

teacher@teacher-VirtualBox:~$ cd pythonguide/
teacher@teacher-VirtualBox:~/pythonguide$

або

teacher@teacher-VirtualBox:~$ cd ./pythonguide
teacher@teacher-VirtualBox:~/pythonguide$

Підведемо підсумки використання вищезгаданих команд на такому прикладі

teacher@teacher-VirtualBox:~$ pwd 
/home/teacher
teacher@teacher-VirtualBox:~$ ls 
Відео      Завантаження      Зображення  Стільниця  pythonguide
Документи  Загальнодоступні  Музика      Шаблони    snap
teacher@teacher-VirtualBox:~$ cd Стільниця/ 
teacher@teacher-VirtualBox:~/Стільниця$ ls 
python_work  terminal_work
teacher@teacher-VirtualBox:~/Стільниця$ cd python_work/ 
teacher@teacher-VirtualBox:~/Стільниця/python_work$ ls 
crack.py  files  hello.py  install.py  project_subtitles
teacher@teacher-VirtualBox:~/Стільниця/python_work$ python3 hello.py 
Hello, Ubuntu 
teacher@teacher-VirtualBox:~/Стільниця/python_work$ cd .. 
teacher@teacher-VirtualBox:~/Стільниця$ cd ~ 
teacher@teacher-VirtualBox:~$
  1. Дізнаємося поточне розташування у файловій системі з використанням команди pwd (після запуску термінала поточний каталог – домашній каталог користувача /home/teacher).
  2. Читаємо вміст поточного каталогу /home/teacher з використанням команди ls.
  3. Переходимо у каталог Стільниця з використанням команди cd.
  4. Читаємо вміст каталогу Стільниця (всередині каталоги python_work і terminal_work).
  5. Переходимо у каталог python_work з використанням команди cd.
  6. Читаємо вміст каталогу python_work (всередині, окрім інших об’єктів, присутній файл hello.py з програмою для виведення вітального повідомлення).
  7. Запускаємо на виконання файл hello.py (ввести python3 та ім’я файла).
  8. Відображення привітання Hello, Ubuntu! у вікні термінала.
  9. Переходимо на рівень вгору в дереві каталогів з використанням інструкції cd ...
  10. Переходимо у домашній каталог користувача з використанням інструкції cd ~.

4.8. Файли і каталоги

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

4.8.1. Створення текстових файлів

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

Рекомендується, так чи інакше, перевести всю текстову інформацію на використання кодування UTF-8, оскільки фактично тільки це кодування нормально розпізнається всюди і завжди.

Текстовий файл у терміналі Linux можна створити кількома способами.

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

Для створення текстового файла необхідно ввести команду touch, потім шлях і назву нового файла

touch /шлях/до/файла/назва_файла.txt

Наприклад, створимо текстовий файл в поточному каталозі terminal_work з назвою file.txt

teacher@teacher-VirtualBox:~/terminal_work$ touch file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt

Команда ls показує, що у поточному каталозі terminal_work з’явився створений файл file.txt.

Зберегти у файл із термінала

Інколи, виведення результатів роботи деяких термінальних команд може бути занадто об’ємним. Наприклад, виведення списку програм, які можуть бути оновлені у системі, у вікно термінала за допомогою команди

sudo apt list --upgradable

набагато зручніше перенаправити в текстовий файл і вже переглянути цей список за допомогою зручного текстового редактора.

Перенаправлення введення/виведення у Linux

Стандартні потоки введення/виведення у Linux є одним з найбільш поширених засобів для обміну інформацією між процесами, а перенаправлення є однією з найбільш популярних конструкцій командного інтерпретатора. Ця особливість термінала дозволяє перенаправляти результат виконання команд у файл, або вміст файла на введення команди, об’єднувати команди разом.

У Linux все вважається файлами, у тому числі, і стандартні потоки введення/виведення – це також файли. У кожному дистрибутиві є три основні файли потоків:

  1. stdin або 0 – стандартний потік введення (цей файл пов’язаний з клавіатурою і більшість команд отримують дані для роботи з нього);
  2. stdout або 1 – стандартний потік виведення (у цей файл команди відправляють усі результати своєї роботи, він пов’язаний з екраном, або, якщо бути точним, то з терміналом, в якому виконуються команди);
  3. stderr 2 – стандартний потік повідомлень про помилки, відлагодження (виведення помилок на екран).

За замовчуванням, stdinстандартний потік введення – очікує даних від клавіатури. Використаємо команду cat для демонстрації роботи стандартного потоку введення. У терміналі виконаємо команду cat та будемо вводити дані і натискати клавішу Enter

teacher@teacher-VirtualBox:~/terminal_work$ cat
Hello
Hello
Ubuntu
Ubuntu
and
and
Python!
Python!

У даному випадку стандартний потік введення отримує введені з клавіатури дані і відразу виводить на stdoutстандартний потік виведення (на екран у вікні термінала).

Стандартний потік введення припиняє роботу після досягнення EOF (кінця файла), який вказує на те, що даних для читання більше немає. EOF викликається натисканням сполучення клавіш Ctrl+D.

Але можна змусити програму читати дані не з клавіатури, а з файла за допомогою оператора <

teacher@teacher-VirtualBox:~/terminal_work$ cat < new_file.txt
1
2
3
4
5

У даному прикладі команда cat відправляє отримані вхідні дані з файла new_file.txt (послідовність цифр, записаних в окремих рядках) на екран термінала в якості стандартного потоку виведення і зупиняється після того як отримує кінець файла (EOF).

Коли у терміналі виконуються команди (наприклад, echo, date, uptime або інші)

teacher@teacher-VirtualBox:~$ echo "Hello, Python!"
Hello, Python!
teacher@teacher-VirtualBox:~$ date
неділя, 10 січня 2021 15:24:48 +0200
teacher@teacher-VirtualBox:~$ uptime
 15:24:54 up  1:54,  1 user,  load average: 0,24, 0,09, 0,03

то результати виконання цих команд – це stdoutстандартний потік виведення.

А ось так виглядає stderrстандартний потік повідомлень про помилки

teacher@teacher-VirtualBox:~$ apt update
Зчитування переліків пакунків... Виконано
E: Неможливо відкрити 'lock' файл /var/lib/apt/lists/lock - open (13: Відмовлено у доступі)
E: Неможливо заблокувати директорію /var/lib/apt/lists/
W: Проблема з роз'єднанням файла /var/cache/apt/pkgcache.bin - RemoveCaches (13: Відмовлено у доступі)
W: Проблема з роз'єднанням файла /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Відмовлено у доступі)

в якому рядки з помилками починаються з літери E (error), а рядки з попереджувальною інформацією починаються з літери W (warning).

Отже, створити текстовий файл можна перенаправленням виведення будь-якої команди у текстовий файл. У загальному випадку команда має такий вигляд

яка_небудь_команда > /шлях/до/файла/назва_файла.txt

Наприклад, збережемо виведення довідки команди ls у файл (якщо такий файл вже існує, то він буде перезаписаний; для перегляду вмісту файла використаємо команду cat)

teacher@teacher-VirtualBox:~/terminal_work$ ls --help > ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ls_help.txt
Використання: ls [КЛЮЧ]... [ФАЙЛ]...
Виводить дані щодо ФАЙЛів (типово у поточному каталозі).
Впорядковує у алфавітному порядку, якщо не вказано ні --sort, ні один з
параметрів -cftuSUX.

Обов'язкові аргументи для довгих форм запису параметрів є обов'язковими і для скорочених форм.
  -a, --all                  не ігнорувати записи, що починаються з .
  -A, --almost-all           не виводити неявні . і ..
      --author               разом з -l, виводити автора кожного файла
  -b, --escape               виводити вісімкові керівні послідовності
                             замість неграфічних знаків
      --block-size=РОЗМІР    використовувати блоки розміром РОЗМІР.
...

Якщо вказати одинарний символ >, то файл буде постійно перезаписуватися при повторному виконанні команди. Щоб нова інформація додавалась у кінець файла (тобто, файл не перезаписувався), необхідно використовувати подвійний символ >>. Команда може мати такий вигляд

teacher@teacher-VirtualBox:~$ date >> log.txt # вивести поточні дату й час
teacher@teacher-VirtualBox:~$ whoami >> log.txt # вивести ім'я поточного користувача
teacher@teacher-VirtualBox:~$ cat log.txt
неділя, 10 січня 2021 15:26:36 +0200
teacher

Якщо необхідно створити порожній текстовий файл, то використовують команду echo і переданий їй порожній рядок (дві одинарні лапки)

teacher@teacher-VirtualBox:~/terminal_work$ echo '' > empty_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
empty_file.txt  file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat empty_file.txt

teacher@teacher-VirtualBox:~/terminal_work$

Базові правила зберігання стандартного потоку виведення термінала у текстовий файл представлені у наступній таблиці.

СинтаксисВідображення у терміналіВідображення у файліІснуючий файл
stdoutstderrstdoutstderr
>нітактакніперезапис
>>нітактакнідозапис
2>такнінітакперезапис
2>>такнінітакдозапис
&>нінітактакперезапис
&>>нінітактакдозапис
| treeтактактакніперезапис
| tree -aтактактакнідозапис
Використання текстового редактора

Ще один спосіб створення текстових файлів пов’язаний з використанням будь-якого текстового редактора. У цьому випадку необхідно у терміналі ввести команду запуску текстового редактора і шлях до файла. У найпростішому випадку можна використати консольний текстовий редактор nano

nano file.txt

Або можна використати gedit – текстовий редактор з графічним інтерфейсом, який вбудований у дистрибутив Ubutnu за замовчуванням

gedit file.txt

4.8.2. Створення каталогів

У терміналі усі команди, якщо вони виконуються без додаткових параметрів, «прив’язуються» до поточного каталогу.

Створення каталогів виконується командою mkdir. Розглянемо кілька прикладів використання.

  1. Створити каталог з іменем dir1
mkdir dir1
  1. Створити три каталоги одночасно всередині поточного каталогу
mkdir {dir1,dir2,dir3}
  1. Створити вкладені один в одного три каталоги (використовується опція -p – створювати батьківські каталоги) всередині поточного каталогу
mkdir -p ./dir1/dir2/dir3

Створимо новий каталог linuxguide у поточному каталозі terminal_work (використаємо команду ls для наочності створення)

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ mkdir linuxguide
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  linuxguide  ls_help.txt

4.8.3. Видалення файлів і каталогів

Для видалення каталогів використовують команду rmdir у такому вигляді

rmdir назва_каталогу

Наприклад, виконаємо команду rmdir у поточному каталозі terminal_work для видалення каталогу linuxguide (використаємо команду ls для наочності видалення)

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  linuxguide  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ rmdir linuxguide
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt

Для видалення файлів використовується команда rm. Використовується дуже просто: пишеться команда rm і шлях до файла, який необхідно видалити

teacher@teacher-VirtualBox:~/terminal_work$ ls
empty_file.txt  file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ rm empty_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$

Команда rm дозволяє видаляти не тільки файли, але і каталоги разом із їхнім вмістом. Наприклад, якщо необхідно видалити каталог з іменем dir1 і рекурсивно (опція -r) його вміст (усі вкладені каталоги і файли), треба виконати наступну команду

rm -r dir1

Видалити два каталоги і рекурсивно їхній вміст

rm -r dir1 dir2

Також можна використати опцію -f, яка означає, що система під час видалення не буде запитувати підтвердження на видалення. У підсумку, команда для видалення файла file1 без підтвердження

rm -f file1

або команда для рекурсивного видалення каталогу dir1 без підтвердження

rm -rf dir1

4.8.4. Переміщення та перейменування

Для переміщення і перейменування файлів і каталогів використовується команда mv.

Формат запису команди перейменовування є таким

mv назва_файла нова_назва_файла

Якщо останній аргумент є ім’ям існуючого каталогу, то mv переміщує усі задані файли в цей каталог

mv назва_файла назва_каталогу
Якщо останній аргумент не є каталогом і аргументами зазначено більш ніж два файли, то з’явиться повідомлення про помилку.

Наприклад, перейменуємо у поточному каталозі файл file.txt у файл з назвою new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ mv file.txt new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt

Перемістимо щойно перейменований файл new_file.txt у каталог Документи, який знаходиться від поточного каталогу terminal_work на рівень вгору у дереві каталогів

teacher@teacher-VirtualBox:~/terminal_work$ ls 
ls_help.txt  new_file.txt 
teacher@teacher-VirtualBox:~/terminal_work$ ls ../Документи/ 
teacher@teacher-VirtualBox:~/terminal_work$ mv new_file.txt ../Документи/ 
teacher@teacher-VirtualBox:~/terminal_work$ ls 
ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls ../Документи/ 
new_file.txt

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

  1. Переглядаємо список файлів у поточному каталозі terminal_work за допомогою команди ls.
  2. У каталозі terminal_work присутній файл new_file.txt.
  3. Переглядаємо каталог Документи, куди будемо переміщувати файл new_file.txt. Він є порожнім.
  4. Виконаємо переміщення файла new_file.txt у каталог Документи за допомогою команди mv.
  5. Файл new_file.txt відсутній у поточному каталозі terminal_work.
  6. Як бачимо, файл new_file.txt був переміщений у каталог Документи.

4.8.5. Копіювання файлів і каталогів

Для копіювання файлів і каталогів використовується команда cp.

Розглянемо кілька прикладів копіювання.

  1. Скопіювати файл new_file.txt у поточний каталог terminal_work і назвати копію файла other_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ cp new_file.txt other_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt  other_file.txt
  1. Скопіювати каталог NewAge у каталог Music (опція -a – показати приховані файли і каталоги) (1), а потім скопіювати файл Epilogue.mp3 у каталог Music/NewAge/ (2)
teacher@teacher-VirtualBox:~/terminal_work$ ls
Epilogue.mp3  ls_help.txt  Music  NewAge  new_file.txt  other_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/
teacher@teacher-VirtualBox:~/terminal_work$ ls NewAge/
teacher@teacher-VirtualBox:~/terminal_work$ cp -a NewAge/ Music/ 
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/
NewAge
teacher@teacher-VirtualBox:~/terminal_work$ cp Epilogue.mp3 Music/NewAge/ 
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/NewAge/
Epilogue.mp3

4.8.6. Зміна прав доступу до файлів і каталогів

Права доступу і типи файлів

Будь-який файл і каталог у Linux має користувача-власника і групу-власника. Тобто, будь-який файл і каталог належить якомусь користувачу системи і певній групі.

Крім того, у будь-якого файла і каталогу є три групи прав доступу:

  • для користувача-власника;
  • для членів групи-власника;
  • для усіх інших користувачів системи.

Кожна група складається з прав:

  • на читання;
  • на запис;
  • на запуск файла на виконання.

Переглянути права доступу на файли і каталоги у певному каталозі можна з використанням термінала. Для цього необхідно перейти у каталог (наприклад, у домашній каталог користувача) і виконати команду у терміналі ls (показати вміст каталогу), додавши опцію -l (у вигляді списку)

teacher@teacher-VirtualBox:~$ ls -l
...
drwxr-xr-x  2 teacher teacher 4096 січ 14 14:31 Документи
...
-rwxr-xr-x  1 teacher teacher    0 гру 31 15:15 test

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

drwxr-xr-x

drwxr-xr-x – це символьна форма запису прав доступу у Linux. Давайте розшифруємо її.

Даний запис складається з 10 символів.

Перший символ позначає тип файла і може набувати значень, наведених у таблиці.

ПозначенняТип файлаПризначення
-звичайний файлнайпоширеніший тип файлів в системі Linux (текстові файли, виконувані файли, файли зображень, архіви, бібліотеки програм тощо)
dкаталогфайли, в якості даних яких виступають списки інших файлів і каталогів. Саме у даних, що містить каталог, здійснюється зв’язок імені файла (словесного позначення) з його індексним дескриптором (ім’ям-числом). Звідси випливає, що один і той самий файл може існувати під різними іменами та/або у різних каталогах: усі імена будуть пов’язані із одним і тим же індексним дескриптором (механізм жорстких посилань)
lсимвольне посиланняфайли, які вказують на інші файли у системі за їхніми іменами (але не за індексними дескрипторами), їх часто називають м’якими посиланнями. Символьні посилання можуть вказувати як на звичайні файли, так і на каталоги або інші типи файлів (по суті, це ті ж ярлики Windows). Існують також жорсткі посилання. Різниця між жорсткими і м’якими посиланнями в тому, що м’які посилання посилаються на ім’я файла, в той час як жорсткі посилання прямо посилаються на оригінальний файл. Крім того, жорсткі посилання не працюють з файлами, розташованими на інших розділах або у інших файлових системах
pіменований тунельфайли, що дозволяють здійснювати обмін даними між локальними процесами, перенаправляючи результат одного процесу на вхід іншого
cсимвольний файл пристроюфайли пристроїв, які призначені для звернення до апаратного забезпечення комп’ютера (дисків, принтерів тощо). Коли відбувається звернення до файла пристрою, то ядро ​​операційної системи надсилає запит драйверу цього пристрою. Характерною особливістю таких файлів є те, що їхній вміст (якщо він є) не буферизується (тобто, не зберігається у пам’яті). Оскільки у них немає буфера, вони дозволяють передавати тільки по одному символу за один раз
bблочний файл пристроюці файли є периферійними пристроями і, на відміну від символьних файлів, їх вміст буферизується. Наприклад, файлами цієї категорії є жорсткі диски, розділи на жорсткому диску, флеш-диски, CD-ROM і т.д. Приклади файлів блокового доступу: /dev, /hda, /dev, /sda5. При записі даних на жорсткий диск або на флешку немає сенсу записувати дані відразу ж після їх надходження, оскільки буде даремно витрачатися ресурс пристрою і енергія. Можна почекати, поки набереться достатня кількість даних, а потім записати їх за один раз. Ці дані і збираються у буфері. За допомогою таких файлів, файлова система і багато інших програм можуть звертатися до драйверів апаратних пристроїв. Зчитувати і записувати інформацію на блокові пристрої можна у довільному порядку, причому блоками певного розміру
sфайл сокетуце файли, що забезпечують прямий зв’язок між процесами і можуть передавати інформацію між процесами, запущеними у різних середовищах або навіть на різних машинах. Це означає, що за допомогою сокетів програми можуть обмінюватися даними, навіть, по мережі. По суті, сокет працює так само як тунель, але тільки в обидві сторони

Тобто, у випадку запису drwxr-xr-x, це каталог.

Ідентифікація типів файлів у Linux

Для того, щоб ідентифікувати і класифікувати типи файлів, що є у Linux, необхідно використати команду ls (для перегляду вмісту каталогу) з опцією -l (детальний перегляд)

ls -l назва_файла

Результат роботи поданої конструкції перенаправимо (керуючий символ |) на вхід команди grep, яка виконає вибірку потрібних рядків і підсвічування типу файла. Остаточний варіант команди

ls -l назва_файла | grep "^x"

де x – позначення типу файла, яке приймає наступні значення: -, d, l, p, c, b, s.

Далі наведені приклади визначення різних типів файлів у Linux.

Звичайний файл (-)

teacher@teacher-VirtualBox:~$ ls -l /etc/passwd | grep "^-"
-rw-r--r-- 1 root root 2414 тра 12 10:13 /etc/passwd

Каталог (d)

teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^d"
drwxr-xr-x  2 root    root         420 тра 20 08:47 block
...

Символьне посилання (l)

teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^l"
lrwxrwxrwx  1 root    root           3 тра 20 08:47 cdrom -> sr0
...
lrwxrwxrwx  1 root    root          28 тра 20 08:47 log -> /run/systemd/journal/dev-log
...

Іменований тунель (p)

teacher@teacher-VirtualBox:~$ ls -l pipe1
prw-r--r-- 1 teacher teacher 0 тра 20 13:41 pipe1

Символьний файл пристрою (c)

teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^c"
crw-r--r--  1 root    root     10, 235 тра 20 08:47 autofs
...

Блочний файл пристрою (b)

teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^b"
...
brw-rw----  1 root    disk      8,   0 тра 20 08:47 sda
brw-rw----  1 root    disk      8,   1 тра 20 08:48 sda1
brw-rw----  1 root    disk      8,   2 тра 20 08:47 sda2
brw-rw----  1 root    disk      8,   3 тра 20 08:47 sda3
brw-rw----  1 root    disk      8,   5 тра 20 08:48 sda5
...

Файл сокету (s)

teacher@teacher-VirtualBox:~$ ls -l /tmp/.X11-unix/X0 | grep "^s"
srwxrwxrwx 1 teacher teacher 0 тра 20 08:50 /tmp/.X11-unix/X0

Наступні 9 символів позначають права доступу. Їх можна розділити на 3 групи, по 3 символи в кожній групі. Ось ці три групи

rwx r-x r-x
  1. Позначає права доступу власника файла або каталогу (uuser).
  2. Позначає права доступу на файл або каталог для групи (ggroup).
  3. Позначає права доступу на файл або каталог для всіх інших (oother).

У цих трьох груп однакова комбінація символів, яка завжди має такий порядок

rwx
ПозначенняОпис
rread, тобто, право доступу на читання файла або каталогу
wwrite, тобто, право на зміну і видалення файла або каталогу
xeXecute, тобто, право на запуск файла як програми або вхід у каталог

Якщо на місці якогось символу із цієї трійки знаходиться символ - (мінус), то це означає відсутність відповідних прав. Наприклад

r-x

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

r--

відсутні права на:

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

У нашому випадку, напис drwxr-xr-x можна прочитати так:

  • d – позначає каталог;
  • rwx – у власника каталогу є повні права – на читання, запис і виконання (вхід усередину каталогу);
  • r-x – у групи є лише права – на читання каталогу і виконання (вхід усередину каталогу);
  • r-x – в усіх інших є лише права – на читання каталогу і виконання (вхід усередину каталогу).

Права доступу до каталогів

Природно, що по відношенню до каталогів трактування понять право на читання, право на запис і право на виконання дещо змінюється.

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

Право на запис також можна зрозуміти – маючи таке право, ви зможете створювати і видаляти файли в цьому каталозі, тобто просто додавати в каталог або видаляти з нього записи, що містять ім’я якогось файла і відповідні посилання.

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

Може здатися, що право на читання каталогу не дає нічого нового в порівнянні з правом на виконання каталогу. Однак, різниця в цих правах все-таки є. Якщо задати тільки право на виконання, ви зможете увійти в каталог, але не побачите там жодного файла. Якщо ви маєте право доступу в якомусь із підкаталогів цього каталогу, то ви можете перейти в нього (командою cd), але, як то кажуть, наосліп, по пам’яті, тому що списку файлів і підкаталогів поточного каталогу ви не побачите.

Підсумовуючи, можна сформулювати наступні права доступу до каталогу:

  • r – право на читання каталогу (можна прочитати вміст каталогу, тобто отримати список об’єктів, що знаходяться у ньому);
  • w – право на зміну вмісту каталогу (можна створювати і видаляти об’єкти в цьому каталозі, причому, якщо ви маєте право на запис, то видаляти ви зможете навіть ті файли, які вам не належать);
  • x – право на виконання, яке дозволяє увійти в каталог (це право завжди перевіряється в першу чергу, і навіть якщо ви маєте усі потрібні права на об’єкт, який знаходиться глибоко в ланцюжку каталогів, але не маєте права на виконання для доступу хоча б до одного каталогу на шляху до цього файла, то до нього ви так і не проб’єтеся).

Розглянемо запис прав доступу у числовому режимі.

Для прикладу, є наступна символьна комбінація прав доступу на певний каталог

drwxrwxr-x

Символ d означає, що це каталог. Наступні 9 символів, що позначають права доступу, поділимо на 3 групи по 3 символи в кожній групі

rwx rwx r-x

Перетворимо символи, що позначають права доступу, у двійковий вигляд за таким правилом:

  • якщо є символ, то це 1;
  • якщо є мінус (або пропуск), то це 0.

Тепер комбінація прав доступу буде виглядати наступним чином

111 111 101

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

7 7 5

У записі 775 кожна цифра позначає певну групу:

  • перша цифра – права для власника;
  • друга цифра – права для групи;
  • третя цифра – права для усіх інших.
Для легкого запам’ятовування прав доступу у числовому представленні використовуйте такі позначення: r – це 4, w – це 2, x – це 1. Відсутніть прав (-) позначається 0.

Використовуючи вищезгадане правило, перетворимо символьне представлення прав доступу (rwxrwxr-x) на числове, виконавши звичайне додавання, наведене у таблиці.

Символьний режимДодавання прав доступуЧисловий режим
rwx =4+2+1 == 7
rwx =4+2+1 == 7
r-x =4+0+1 == 5

Результати такого додавання можна тлумачити так: 7 (rwx)

читати, записувати, виконувати; 6 (rw‐)

читати, записувати; 5 (r‐x)

читати, виконувати; 4 (r‐‐)

читати; 3 (‐wx)

записувати, виконувати; 2 (‐w‐)

записувати; 1 (‐‐x)

виконувати; 0 (‐‐‐)

ніяких прав (нічого не можна робити).

Команда chmod

Для того, щоб змінити права доступу, використовують команду chmod у двох варіантах: символьному або числовому. Розглянемо обидва випадки.

Символьний режим

У випадку символьного використання визначимо наступний шаблон

chmod ПерсонаДіїПрава ім'я_файла_або_каталогу

Замість Персона необхідно використовувати сукупність або один з таких символів:u

user(користувач, власник файла або каталогу);g

group (група до якої належить файл або каталог);o

other (усі інші);a

all (усі, разом взяті – власник, група та усі інші).

Ці символи визначають суб’єкт, якому будуть встановлені, видалені чи змінені права.

Замість Дії необхідно вказувати один із символів, що позначають дію, яку можна буде виконати з правами:+

додавання прав;-

видалення прав.

Замість Права перераховують символи прав доступу:r

read (читання);w

write (запис);x

eXecute (виконання).

Порядок слідування прав доступу має бути обов’язково таким: rwx. Приклади використання: rwx, wx, rx, r, w, x.

Замість ім’я_файла_або_каталогу вказується шлях до файла або каталогу.

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

chmod -R ПерсонаДіїПрава ім'я_каталогу

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

sudo chmod ПерсонаДіїПрава ім'я_файла_або_каталогу

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

Додамо (а потім видалимо) права для групи на зміну файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt 
teacher@teacher-VirtualBox:~/terminal_work$ chmod g+w new_file.txt 
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw-r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt 
teacher@teacher-VirtualBox:~/terminal_work$ chmod g-w new_file.txt 
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt 
  1. Спочатку для групи виставлені права лише на читання (r--) файла new_file.txt.
  2. Додаємо для групи права на зміну файла new_file.txt за допомогою команди chmod g+w new_file.txt.
  3. Група може читати і змінювати файл new_file.txt (для групи тепер права rw-).
  4. Видаляємо для групи права на зміну файла new_file.txt за допомогою команди chmod g-w new_file.txt.
  5. Для групи знову виставлені права лише на читання (r--) файла new_file.txt.

Видалимо права на читання для групи і усіх інших користувачів для файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod go-r new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw------- 1 teacher teacher 10 тра 17 22:54 new_file.txt

Додамо для групи права на читання і зміну для файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw------- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod g+rw new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw---- 1 teacher teacher 10 тра 17 22:54 new_file.txt

Змінимо права на файли і каталоги всередині каталогу python_files. Спочатку, для вмісту каталогу python_files маємо таку картину з правами доступу

teacher@teacher-VirtualBox:~/terminal_work$ ls -l ./python_files/
загалом 28
-rwxrwx--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx--- 1 teacher teacher  493 тра 17 22:46 quest.py
-rw-r--r-- 1 teacher teacher   74 тра 19 12:00 result_cat.txt
-rw-r--r-- 1 teacher teacher   37 тра 19 11:33 Test_module.txt
-rw-r--r-- 1 teacher teacher   74 тра 19 11:55 test_other.txt
-rw-r--r-- 1 teacher teacher   37 тра 19 11:33 test.txt

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

teacher@teacher-VirtualBox:~/terminal_work$ chmod -R o+wx ./python_files/
teacher@teacher-VirtualBox:~/terminal_work$ ls -l ./python_files/
загалом 28
-rwxrwx-wx 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx-wx 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx-wx 1 teacher teacher  493 тра 17 22:46 quest.py
-rw-r--rwx 1 teacher teacher   74 тра 19 12:00 result_cat.txt
-rw-r--rwx 1 teacher teacher   37 тра 19 11:33 Test_module.txt
-rw-r--rwx 1 teacher teacher   74 тра 19 11:55 test_other.txt
-rw-r--rwx 1 teacher teacher   37 тра 19 11:33 test.txt
Числовий режим

Розглянемо приклад використання числової форми запису зміни прав доступу.

Встановимо для файла new_file.txt, який зараз має права на читання і зміну лише для власника і групи (rw-rw---- або 660), права на читання, зміну і виконання для усіх інших користувачів (rw-rw-rwx або 667)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw---- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod 667 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw-rwx 1 teacher teacher 10 тра 17 22:54 new_file.txt
Символьний режимЧисловий режимЗначення
r--------400власник має право читання; ніхто інший не має права виконувати жодних дій
rw-r--r--644усі користувачі мають право читання; власник може редагувати
rw-rw----660власник і група можуть читати і редагувати, решта не мають права виконувати жодних дій
rw-rw-r--664усі користувачі мають право читання; власник і група можуть редагувати
rw-rw-rw-666усі користувачі можуть читати і редагувати
rwx------700власник може читати, записувати і запускати на виконання; ніхто інший не має права виконувати жодних дій
rwxr--r--744кожен користувач може читати, власник має право редагувати та запускати на виконання
rwxr-xr-x755кожен користувач має право читати і запускати на виконання; власник може редагувати
rwxrwxrwx777кожен користувач може читати, редагувати та запускати на виконання

4.8.7. Зміна власника і групи: команда chown

Для зміни власника і групи файла або каталогу використовується команда chown. Застосуємо наступний шаблон виконання даної команди

sudo chown ім'я_нового_власника:ім'я_нової_групи ім'я_файла_або_каталогу

Якщо необхідно змінити лише групу, то шаблон буде таким

sudo chown :ім'я_нової_групи ім'я_файла_або_каталогу

Якщо необхідно змінити лише власника, то шаблон буде таким

sudo chown ім'я_нового_власника ім'я_файла_або_каталогу

Для рекурсивної зміни власника і групи файла або каталогу у шаблон необхідно додати параметр -R

sudo chown -R ім'я_нового_власника:ім'я_нової_групи ім'я_файла_або_каталогу

При зміні власників і груп файлів та каталогів корисно дізнатися:

  1. Ім’я поточного користувача за допомогою команди whoami
teacher@teacher-VirtualBox:~/terminal_work$ whoami
teacher
  1. У які групи входить поточний користувач, використовучюи команду groups
teacher@teacher-VirtualBox:~/terminal_work$ groups teacher
teacher : teacher adm cdrom sudo dip plugdev lpadmin sambashare epoptes
  1. Список користувачів у системі, використовуючи інструкцію cat /etc/passwd
teacher@teacher-VirtualBox:~/terminal_work$ cat /etc/passwd
...
teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash
...
student:x:1001:1001:Учень,,,:/home/student:/bin/bash
...

Для прикладу, змінимо поточного власника (teacher) файла pset7.sql на нового (student)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 teacher teacher 1178 лип  8  2016 pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ sudo chown student pset7.sql
[sudo] пароль до teacher:
teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student teacher 1178 лип  8  2016 pset7.sql

Аналогічно, можна змінити поточну групу (у даному випадку teacher) для файла pset7.sql на нову (наприклад, plugdev)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student teacher 1178 лип  8  2016 pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ sudo chown :plugdev pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student plugdev 1178 лип  8  2016 pset7.sql

4.8.8. Пошук файлів і каталогів

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

Команда find

В загальному випадку команда find виглядає наступним чином

find шлях параметри критерії шаблон

де шлях

це шлях до каталогу, в якому виконується пошук (можна вказувати кілька каталогів); параметри

додаткові параметри (глибина пошуку, пошук лише файлів тощо); критерії

за яким критерієм відбуватиметься пошук (за ім’ям, за датою створення тощо); шаблон

пошук за певним шаблоном, який формується завдяки символам і ?.

Символ позначає будь-яку кількість будь-яких символів. Символ ? позначає один будь-який символ.

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

пошук в поточному каталозі;/

пошук від кореневого каталогу;~

пошук в домашньому каталозі.

Ось кілька параметрів, які є корисними при пошуку:-maxdepth

максимальна глибина пошуку по каталогам (для пошуку в поточному каталозі необхідно вказати 1);-print

виведення повних імен файлів і каталогів;-type f

пошук лише файлів;-type d

пошук лише каталогів.

Серед поширених критеріїв можна виокремити такі:-name

пошук файлів і каталогів по імені, використовуючи шаблон;-iname

пошук файлів і каталогів по імені, використовуючи шаблон (не враховуючи регістр літер у назві);-user

пошук файлів і каталогів, що належать зазначеному користувачу;-group

пошук файлів і каталогів, що належать зазначеній групі користувачів;-size -n +n n

пошук файлів і каталогів з розміром менше (-), більше (+) або рівному n одиниць;-mtime -n +n

пошук файлів і каталогів, створених або модифікованих менше ніж (-) або більше ніж (+) n днів тому;-perm

пошук файлів і каталогів за правами доступу.

Наведемо кілька прикладів пошуку файлів і каталогів за допомогою команди find у каталозі terminal_work.

Для пошуку (показу) усіх файлів і каталогів у поточному каталозі необхідно виконати у терміналі команду

teacher@teacher-VirtualBox:~/terminal_work$ find .
.
./Epilogue.mp3
./images
./images/animals
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
./python_files
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py
./python_files/test.txt
./python_files/Test_module.txt
./new_file.txt
./pset7.sql
./Jamala - 1944 (Official Music Video).mp4
./other_file.txt
./ls_help.txt
./Music
./Music/NewAge
./Music/NewAge/Epilogue.mp3
./Тестова програма.mp4

Аналогічний результат буде отриманий з використанням такої інструкції

find . -print

Для пошуку усіх файлів і каталогів у певному каталозі (наприклад, у каталозі images) необхідно виконати такі команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images
./images
./images/animals
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png

Щоб здійснити пошук лише файлів, слід використовувати параметр -type з ключем f (для пошуку лише каталогів використовується параметр -type з ключем d), як показано на прикладі

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -print
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type d -print
./images
./images/animals
./images/screenshots

Для пошуку файлів за назвою у певному каталозі і за вказаним шаблоном (шаблон ∗.jpg, вказаний у лапках, означає знайти усі файли, що закінчуються на .jpg) необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg"
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Наступна команда виведе у вікно термінала список файлів і каталогів, які починаються на певний символ (наприклад, літеру d – у каталозі images присутній лише файл dog.jpg з такими властивостями)

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -name "d*"
./images/animals/dog.jpg

Якщо необхідно знайти файли, що починаються з певних літер (наприклад, від a до f), то тут буде зручно застосувати синтаксис регулярних виразів

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "[a-f]*.png"
./images/screenshots/etcher.png

Дана команда дозволить відшукати усі файли, які закінчуються на .png і починаються з літер від a до f, у каталозі images.

Якщо необхідно не враховувати регістр при пошуку за ім’ям, то використовують критерій -iname. Наприклад, у випадку пошуку файлів і каталогів без врахування регістру літер у назві необхідно використати такий синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -iname "test*"
./python_files/test.txt
./python_files/Test_module.txt
teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -name "test*"
./python_files/test.txt

Коли ж необхідно знайти файли або каталоги лише в поточному каталозі або у каталозі з певним рівнем вкладеності (1, 2 чи іншим), то використовують параметр -maxdepth. У випадку пошуку файлів з рівнями вкладеності необхідно виконати команди

teacher@teacher-VirtualBox:~/terminal_work$ find . -maxdepth 1 -type f -name "*.txt"
./new_file.txt
./other_file.txt
./ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ find . -maxdepth 2 -type f -name "*.txt"
./python_files/test.txt
./python_files/Test_module.txt
./new_file.txt
./other_file.txt
./ls_help.txt

Зокрема, можна шукати файли або каталоги, які не відповідають певному шаблону, використовуючи логічний оператор заперечення -not. Наприклад, спочатку знайдемо усі файли у каталозі python_files

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py
./python_files/test.txt
./python_files/Test_module.txt

а потім здійснимо пошук лише файлів, які не закінчуються на *.txt

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f -not -name "*.txt"
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py

Якщо необхідно видалити знайдені файли (у даному випадку, із закінченням *.py) використовують опцію -delete

find ./python_files -type f -name "*.py" -delete

Для пошуку порожніх файлів або каталогів використовують опцію -empty. У випадку пошуку порожніх файлів команда матиме вигляд

find . -type f -empty

А у випадку пошуку порожніх каталогів команда буде наступною

find . -type d -empty

Для комбінування кількох критеріїв можна використовувати -o (orлогічний оператор АБО). Наприклад, необхідно знайти файли, назва яких починається на літеру c, або які закінчуються на *.txt

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f -name "c*" -o -name "*.txt"
./python_files/cities_facts.py
./python_files/test.txt
./python_files/Test_module.txt

Пошук файлів або каталогів можна здійснювати за правами доступу до них. Наприклад, знайдемо файли, що мають права доступу 664 (перша цифра 6 – це у двійковому вигляді 110, а це означає, що власник такого файла має право як читати, так і редагувати файл; друга цифра 6 – аналогічно для членів групи-власника; 4 у двійковому вигляді виглядає як 010, що дає іншим користувачам права тільки для читання)

teacher@teacher-VirtualBox:~/terminal_work$ find . -type f -perm 664
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Окрім того, можна здійснити пошук файлів тільки для читання для поточного користувача

find /etc -maxdepth 1 -type f -perm /u=r

або знайти лише виконувані файли для усіх інших

find /bin -maxdepth 1 -type f -perm /a=x

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

find . -user teacher

Щоб знайти файли і каталоги, що належать групі, наприклад, з назвою teacher, необхідно виконати команду

find . -group teacher

Пошук файлів і каталогів за датою в Linux здійснюється за допомогою критерія -mtime. Наприклад, якщо необхідно знайти усі файли і каталоги, які були модифіковані за останні 3 дні

find . -mtime -3

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

find . -mtime +7

Пошук файлів і каталогів в Linux, які були змінені протягом останніх 120 хвилин, можна здійснити за допомогою команди

find . -mmin -120

Важливим аспектом пошуку є пошук файлів або каталогів за розміром.

Позначення одиниць вимірювання, які можна використовувати у пошуку за розміром, є такими: k – кілобайти, M – мегабайти, G – гігабайти, b – байти.

Для прикладу, у каталозі images містяться три графічні файли

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg"
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

з такими розмірами: dog.jpg (359,3 кБ), gepard.jpg (69,9 кБ), giraffe.jpg (112,3 кБ).

Файли, які більші розміром за 200 кілобайт можна знайти командою

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg" -size +200k
./images/animals/dog.jpg

а файли, розмір яких знаходиться у межах від 50 кілобайт до 350 кілобайт, можна знайти за допомогою такої команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg" -size +50k -size -350k
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Якщо необхідно знайдені файли відсортувати за зростанням (за алфавітом) використовують наступний синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f | sort
./images/animals/dog.jpg
./images/animals/gepard.jpg
./images/animals/giraffe.jpg
./images/screenshots/etcher.png
./images/screenshots/multiboot.png
./images/screenshots/usb.png

У випадку сортування за спаданням отримаємо такий результат

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f | sort -r
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/animals/dog.jpg

У розглянутих конструкціях сортування за назвами використовувались:sort

команда для сортування;-r

опція команди sort для сортування у зворотному порядку.

Над знайденими файлами можна виконувати довільні команди. Для цього використовується опція -exec. Наприклад, виставимо права доступу 777 (rwxrwxrwx) – будь-який користувач може читати, редагувати та запускати на виконання – на каталог python_files.

Спочатку переглянемо властивості даного каталогу

teacher@teacher-VirtualBox:~/terminal_work$ ls -l
...
drwxr-xr-x 2 teacher teacher     4096 тра 17 22:46  python_files
...

Зараз каталог python_files має права доступу 755 (rwxr-xr-x) – будь-який користувач має право читати і запускати на виконання, лише власник може редагувати. Для зазначеної зміни прав доступу необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type d -exec chmod 777 {} \;

Можна пересвідчитись, що права доступу для каталогу python_files змінились

teacher@teacher-VirtualBox:~/terminal_work$ ls -l
...
drwxrwxrwx 2 teacher teacher     4096 тра 17 22:46  python_files
...

Використовувати опцію -exec можна також для сортування за розміром результатів пошуку файлів. Це ілюструють наступні команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n
24 ./images/screenshots/etcher.png
56 ./images/screenshots/multiboot.png
72 ./images/animals/gepard.jpg
76 ./images/screenshots/usb.png
112 ./images/animals/giraffe.jpg
352 ./images/animals/dog.jpg
teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n -r
352 ./images/animals/dog.jpg
112 ./images/animals/giraffe.jpg
76 ./images/screenshots/usb.png
72 ./images/animals/gepard.jpg
56 ./images/screenshots/multiboot.png
24 ./images/screenshots/etcher.png

Виведені числа – це значення розміру файлів у кілобайтах. При цьому виконувались такі команди:ls

команда, яка виводить список файлів або каталогів (з опцією -s одночасно показує розмір файлів);sort

команда для сортування;-n

сортування за числовими значеннями;-r

опція команди sort для сортування у зворотному порядку.

Якщо необхідно вивести певну кількість (використовується команда head), наприклад, 2 знайдених (відсортованих) файлів використовують наступний синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n -r | head -2
352 ./images/animals/dog.jpg
112 ./images/animals/giraffe.jpg
Команди whereis і which

У системі встановлено багато різних програм. Щоб дізнатися розміщення бінарних файлів, початкових кодів, що відносяться до встановленої програми, можна виконати команду whereis.

Для прикладу, знайдемо інформацію про пакунок firefox

teacher@teacher-VirtualBox:~/terminal_work$ whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Команда ж which відображає повний шлях до встановленої програми. Для нашого прикладу отримаємо такий результат

teacher@teacher-VirtualBox:~/terminal_work$ which firefox
/usr/bin/firefox

4.8.9. Перегляд вмісту і пошук у текстових файлах

Команда less

Доволі часто виникає необхідність здійснити пошук якогось тексту у текстових файлах. Щоб переглянути вміст текстових файлів у терміналі, використовують команду less.

В загальному вигляді команда має такий синтаксис

less шлях/до/файла/ім'я_файла

Відкриємо текстовий файл In the Heart of Africa (формат Plain Text UTF-8) для перегляду у терміналі (завантажений файл був перейменований в In_the_Heart_of_Africa.txt)

less In_the_Heart_of_Africa.txt

Для керування переглядом тексту можна використовувати клавіші , , PageUp, PageDown, Home, End, а для виходу із режиму перегляду клавішу з літерою q.

Якщо необхідно переглядати текст з певного рядка, то вказують опцію + і номер рядка, з якого необхідно виконувати перегляд. Дізнаємось про автора завантаженої книги

less +11 In_the_Heart_of_Africa.txt

З використанням команди less є зручним пошук слів у тексті.

Для пошуку певного тексту треба ввести прямий слеш / і текст для пошуку. У тексті будуть виокремлені фрагменти тексту, що шукалися, а перехід між ними можна здійснити за допомогою клавіш n (перехід до наступного знайденого тексту) і N (перехід до попереднього знайденого тексту).

Окрім того, для переходу на конкретний рядок у тексті використовують наступний синтаксис: 11g – перейти на 11-й рядок.

Для того, щоб відобразити номери рядків у файлі, можна вказати опцію -N

less -N In_the_Heart_of_Africa.txt

або ввести її під час перегляду текстового файла.

Команди head і tail

За назвами вказаних команд легко здогадатися, що команда head відображає голову текстового файла, а tail – його хвіст.

Виконання команди head виведе перші 10 рядків текстового файла.

В загальному вигляді синтаксис команди head є наступним

head опції шлях/до/файла/ім'я_файла

Виведемо у вікно термінала перші 10 рядків з файла In_the_Heart_of_Africa.txt

teacher@teacher-VirtualBox:~/terminal_work$ head In_the_Heart_of_Africa.txt
The Project Gutenberg EBook of In the Heart of Africa, by Samuel White Baker

This eBook is for the use of anyone anywhere at no cost and with
almost no restrictions whatsoever.  You may copy it, give it away or
re-use it under the terms of the Project Gutenberg License included
with this eBook or online at www.gutenberg.org


Title: In the Heart of Africa

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

teacher@teacher-VirtualBox:~/terminal_work$ head -1 In_the_Heart_of_Africa.txt
The Project Gutenberg EBook of In the Heart of Africa, by Samuel White Baker

Виконання команди tail виведе останні 10 рядків файла.

У загальному вигляді синтаксис команди буде таким

tail опції шлях/до/файла/ім'я_файла

Виведемо у вікно термінала останні 10 рядків з файла In_the_Heart_of_Africa.txt

teacher@teacher-VirtualBox:~/terminal_work$ tail In_the_Heart_of_Africa.txt


Most people start at our Web site which has the main PG search facility:

     http://www.gutenberg.org

This Web site includes information about Project Gutenberg-tm,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how to
subscribe to our email newsletter to hear about new eBooks.

Якщо необхідно вивести певну кількість рядків з кінця текстового файла, то потрібно вказати опцію (як і у випадку з head) - і кількість рядків

teacher@teacher-VirtualBox:~/terminal_work$ tail -4 In_the_Heart_of_Africa.txt
This Web site includes information about Project Gutenberg-tm,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how to
subscribe to our email newsletter to hear about new eBooks.
Команди cat і tac

Команда cat використовується для перегляду текстового файла повністю і, в основному, для перегляду невеликих текстових файлів, наприклад, будь-яких конфігураційних файлів. У загальному вигляді команда має наступний синтаксис

cat опції шлях/до/файла/ім'я_файла

Приклади використання

teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt
текст першого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt
текст другого файла

При перегляді вмісту файлів можна використовувати опцію -n для відображення номерів рядків

teacher@teacher-VirtualBox:~/terminal_work$ cat -n ./python_files/cities_facts.py
     1	cities = {
     2	    'Rome': {
     3	                'country': 'Italy',
     4	                'population': 2868000,
     5	                'fact': 'Rome is one of the oldest cities in the world, the capital of Ancient Rome. Therefore, Rome is often called the "eternal city".'
     6	            },
     7	    'Canberra': {
     8	                'country': 'Australia',
     9	                'population': 381448,
...

За допомогою перенаправлення стандартного потоку виведення термінала і команди cat можна виконати ряд цікавих дій:

  1. Створити копію вказаного файла (test.txt) і зберегти її під новим ім’ям (test_other.txt)
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt
текст першого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt > ./python_files/test_other.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test_other.txt
текст першого файла
  1. Додати текст із одного файла (Test_module.txt) в інший (test_other.txt)
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt
текст другого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt >> ./python_files/test_other.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test_other.txt
текст першого файла
текст другого файла
  1. Об’єднати кілька файлів (test_other.txt, Test_module.txt) в один і створити його (result_cat.txt)
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt ./python_files/Test_module.txt > ./python_files/result_cat.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/result_cat.txt
текст першого файла
текст другого файла

Команда tac – аналогічна команді cat і має такий самий синтаксис, тільки відображає рядки у зворотному порядку

teacher@teacher-VirtualBox:~/terminal_work$ tac ./python_files/result_cat.txt
текст другого файла
текст першого файла
Команда wc

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

Кілька стандартних опцій, які має утиліта:

  • -c (--bytes) – показує кількість байтів;
  • -l (--lines) – показує кількість рядків;
  • -L (--max-line-length) – виводить довжину найбільшого рядка;
  • -m – виводить кількість символів;
  • -w (--words) – показує кількість слів у файлі;
  • --files0-from=File) – отримує імена файлів із списку, що міститься у файлі з іменем File.

Виконання команди wc без опцій має на увазі викориcтання опції: -clw. Ось простий приклад виконання команди wc

teacher@teacher-VirtualBox:~$ wc log.txt
 2  7 58 log.txt

де перша колонка – кількість рядків, друга – кількість слів, третя – кількість байтів.

4.8.10. Виконувані файли

Що таке виконуваний файл?

У Windows виконувані файли мають розширення .exe (в основному), а всередині містять набір байтів. У Linux виконуваним може бути навіть текстовий файл. Що ж таке виконуваний файл з точки зору Linux?

Фактично, це будь-який файл, який позначений, як виконуваний і який Linux зможе запустити на виконання. Це означає: у кожного файла є спеціальна властивість-перемикач, яка ніяк не залежить ні від імені, ні від вмісту, ні від розширення, і яка відповідає за виконуваність.

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

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

Насправді, магічна властивість-перемикач виконуваності є одним з трьох прав доступу.

У кожного файла є три групи прав доступу – для користувача-власника, для групи-власника і для усіх інших, кожна група складається в свою чергу з трьох прав: на читання (r), зміну (w) та виконання (x). Ці атрибути визначають, що система може робити з цим файлом. Право на виконання і є тим самим перемикачем виконуваності.

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

Створення виконуваного файла

Щоб файл став виконуваним, для нього необхіднно встановити права на виконання для файлів як програм.

Це можна зробити за допомогою термінала, скориставшись таким синтаксисом

chmod +x шлях/до/файла/ім'я_файла

Це аналогічно наступній команді

chmod ugo+x шлях/до/файла/ім'я_файла

або

chmod a+x шлях/до/файла/ім'я_файла

Для прикладу, за допомогою термінала створимо новий файл my_script.txt і зробимо його виконуваним (результатом виконання файла буде виведення на екран повідомлення It works!)

teacher@teacher-VirtualBox:~/terminal_work$ echo 'echo "It works!"' > my_script.txt 
teacher@teacher-VirtualBox:~/terminal_work$ cat my_script.txt 
echo "It works!"
teacher@teacher-VirtualBox:~/terminal_work$ ./my_script.txt 
bash: ./my_script.txt: Відмовлено у доступі
teacher@teacher-VirtualBox:~/terminal_work$ ls -l my_script.txt 
-rw-r--r-- 1 teacher teacher 17 тра 20 16:38 my_script.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod +x my_script.txt 
teacher@teacher-VirtualBox:~/terminal_work$ ls -l my_script.txt 
-rwxr-xr-x 1 teacher teacher 17 тра 20 16:38 my_script.txt
teacher@teacher-VirtualBox:~/terminal_work$ ./my_script.txt 
It works!

Розглянемо виконані команди і дії.

  1. Створюємо файл my_script.txt і записуємо у нього за допомогою команди echo рядок echo "It works!".
  2. Переглядаємо вміст щойно створеного файла my_script.txt на наявність записаної команди echo "It works!" для виведення повідомлення. Для перегляду вмісту файла використовується команда cat.
  3. Запускаємо файл на виконання. Символи ./ у записі запуску файла ./my_script.txt означають, що файл запускається з поточного каталогу. Так як файл не є виконуваним, командна оболонка повідомляє про відмову в доступі.
  4. Перевіряємо права доступу до файла командою ls -l (детально переглянути вміст каталогу). Дійсно, власник файла може лише читати і змінювати файл, група і усі інші користувачі лише читати. Ніхто не має прав запускати даний файл.
  5. Встановлюємо атрибут виконуваності для файла (право на запуск) для усіх за допомогою команди chmod +x my_script.txt.
  6. Ще раз перевіряємо права доступу для файла і пересвідчуємось, що права на виконання мають усі.
  7. Запускаємо знову файл на виконання командою ./my_script.txt і спостерігаємо повідомлення It works! на екрані.

Що відбувається, коли файл виконується?

Для виконання файла спочатку вводиться ім’я файла (або шлях до файла), який необхідно запустити в командному рядку і натискається клавіша Enter.

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

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

В Linux усі виконувані бінарні файли на початку файла мають заголовок ELFWindows у виконуваних файлах заголовок MZ).

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

Якщо файл не бінарний, тоді вважається, що це текстовий файл – скрипт або сценарій.

У перших двох байтах сценарію зчитується послідовність символів #!. Якщо символи #! присутні, тоді перший рядок сценарію, починаючи з третього байта, ядро Linux ​​сприйме як команду.

Виконання сценарію, що містить зазначену послідовність, призведе до запуску зазначеної після #! команди, останнім параметром якої буде ім’я самого файла сценарію.

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

#!/bin/bash
echo "Hello, Ubuntu!"

Для програм, написаних на мові Python версії 3, так

#!/usr/bin/python3
print("Hello, Python!")
У всіх інтерпретованих мовах програмування # – це символ коментаря. Тобто, рядок у скрипті, що починається з коментаря, програмою не виконується.

Якщо у файлі в першому рядку немає символів #!, тоді все залежить від програми командної оболонки, в якій запускається програма. Якщо використовується bash, то облонка вважає, що файл містить програму, написану на мові сценаріїв командного рядка, запускає копію себе і передає цій копії файл на інтерпретацію (так відбулося у нашому випадку з файлом my_script.txt).

Якщо у файлі дійсно знаходиться програма, то командна оболонка її виконує. У інших випадках на екрані з’являються повідомлення про помилки.

Ви можете зробити файл виконуваним в Linux не лише через термінал. Така функціональність є у всіх файлових менеджерах, зокрема в Nautilus (застосунок Файли), який є вбудованим в Ubuntu.

Натисніть правою кнопкою миші на ваш файл програми або скрипта, щоб відкрити контекстне меню, потім виберіть Властивості (Ctrl+I), далі вкладку Права і поставте позначку Дозволити виконання файла як програми

Виконання файлів як програм в Ubuntu

Виконання файлів як програм в Ubuntu

Крім того, виконувані файли можна запускати прямо з файлового менеджера подвійним кліком, але для цього необхідно встановити відповідний параметр в налаштуваннях Nautilus. А саме, необхідно перейти по шляху Файли  Налаштування  Параметри  Поведінка  Виконувати текстові файли і позначити пункт Перепитувати, що робити

Виконання текстових файлів як програм в Ubuntu

Виконання текстових файлів як програм в Ubuntu

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

Виконання чи перегляд вмісту виконуваних текстових файлів в Ubuntu

Виконання чи перегляд вмісту виконуваних текстових файлів в Ubuntu

Запуск скриптів

Характерним прикладом незвичайних, на перший погляд, виконуваних файлів Linux є скрипти.

Скрипти – це звичайні текстові файли (відрізняються від інших текстових файлів за розширенням .sh, .py та іншими), що містять набір інструкцій для програми-інтерпретатора.

Якщо для них встановлено атрибут виконуваності (x), то для їх відкриття використовується спеціальна програма-інтерпретатор (наприклад, командна оболонка bash). Далі інтерпретатор читає послідовно рядок за рядком і виконує всі команди, які містяться у файлі.

Є кілька способів виконати запуск скрипта у Linux. Його можна запустити, як будь-яку іншу програму, через термінал або ж запустити оболонку і повідомити їй, який файл потрібно виконувати. В цьому випадку не потрібно навіть атрибута виконуваності.

Розглянемо приклад скрипта helloubuntu.sh, який містить такий код

#!/bin/bash
echo "Hello, Ubuntu!"

Перший рядок – це командна оболонка, за допомогою якої виконується другий рядок – виведення повідомлення Hello, Ubuntu! на екран.

Командна оболонка може бути не лише /bin/bash, але і /bin/sh, /usr/bin/python3 та іншою.

Щоб отримати шлях до виконуваного файла командної оболонки у терміналі використовують команду whereis з назвою оболонки, наприклад, whereis bash.

Щоб виконати скрипт в зазначеній оболонці, потрібно встановити для нього права на виконання (дозволимо виконувати запуск файла helloubuntu.sh усім категоріям користувачів – власнику, групі файла та іншим). Виконання усіх дій у терміналі може бути таким

teacher@teacher-VirtualBox:~/terminal_work$ ls -l helloubuntu.sh
-rw-r--r-- 1 teacher teacher 34 тра 20 18:08 helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ./helloubuntu.sh
bash: ./helloubuntu.sh: Відмовлено у доступі
teacher@teacher-VirtualBox:~/terminal_work$ chmod ugo+x helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ls -l helloubuntu.sh
-rwxr-xr-x 1 teacher teacher 34 тра 20 18:08 helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ./helloubuntu.sh
Hello, Ubuntu!

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

При запуску скриптів важливим моментом є місце, де знаходиться скрипт. Якщо просто ввести helloubuntu.sh то пошук буде виконаний тільки глобально, в каталогах, які записані у змінну $PATH і, навіть, якщо ви перебуваєте зараз в тому каталозі, де знаходиться скрипт, то він не буде знайдений.

У Linux $PATH – це змінна середовища, яка використовується для вказівки командній оболонці, де шукати виконувані файли. Програми/скрипти, розташовані в каталозі $PATH, можуть бути виконані безпосередньо у вашій командній оболонці без вказівки повного шляху до них. Для перегляду значень змінної $PATH виконайте у терміналі команду: echo $PATH.

Також, до назви скрипта необхідно додавати повний шлях, наприклад, для того ж поточного каталогу (./)

./helloubuntu.sh

або повний шлях від кореня домашнього каталогу

teacher@teacher-VirtualBox:~$ /home/teacher/terminal_work/helloubuntu.sh
Hello, Ubuntu!

Якщо не хочеться вказувати повний шлях до скрипта, досить перемістити скрипт в один із каталогів, які вказані у змінній $PATH. Один з них, що призначений для ручного встановлення програм, – /usr/local/bin.

teacher@teacher-VirtualBox:~$ sudo cp /home/teacher/terminal_work/helloubuntu.sh /usr/local/bin
teacher@teacher-VirtualBox:~$ ls -l /usr/local/bin
загалом 4
-rwxr-xr-x 1 root root 34 тра 20 18:54 helloubuntu.sh
teacher@teacher-VirtualBox:~$ helloubuntu.sh
Hello, Ubuntu!

Файл скрипта helloubuntu.sh був скопійований за допомогою команди cp з каталогу /home/teacher/terminal_work/, де він спочатку знаходиться, у каталог /usr/local/bin. Тепер запуск скрипта helloubuntu.sh не потребує вказівки повного шляху до нього.

Інший спосіб запуску скриптів є запуск спочатку командної оболонки (bash, sh), а потім передавання їй скрипта

teacher@teacher-VirtualBox:~/terminal_work$ bash helloubuntu.sh
Hello, Ubuntu!
Файл-посилання – це особливий тип файла, який, по суті, вказує на інший файл або місце розташування у файловій системі комп’ютера. Такі файли часто використовують для більш легкого доступу до файлів.

У Linux існує два види файлів-посилань: жорсткі та символьні.

Символьні посилання – це файли особливого типу, єдиним вмістом яких є довільний рядок, який може вказувати на існуючий файл. Тобто, символьні посилання містять адресу потрібного файла у файловій системі. Коли ви звертаєтеся до символьного посилання, насправді, ви звертаєтеся до файла, на який посилання вказує.

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

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

Основні властивості символьних посилань:

  • можуть посилатися на файли і каталоги;
  • після видалення, переміщення або перейменування файла стають недійсними;
  • права доступу і номер inode відрізняються від початкового файла;
  • права доступу для символьних посилань значення не мають (права доступу завжди rwxrwxrwx);
  • при зміні прав доступу для початкового файла, права на посилання залишаться незмінними;
  • можна посилатися на інші розділи диска;
  • містять тільки ім’я файла, а не його вміст.

Жорстке посилання також дозволяє швидко отримати доступ до ресурсу з іншого місця або під іншим ім’ям. Жорсткі посилання – це інша назва того самого файла. Це дозволяє мати один і той же файл у декількох місцях.

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

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

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

Розглянемо деякі властивості жорстких посилань:

  • працюють тільки в межах однієї файлової системи (причина проста: лічильник посилання зберігається у самому inode, а останній не може спільно використовуватися у різних файлових системах);
  • не можна посилатися на каталоги, лише на файли;
  • мають ту ж інформацію inode і набір дозволів, що і у початкового файла;
  • дозволи на посилання змінюються при зміні дозволів файла;
  • можна переміщувати та перейменовувати і, навіть, видаляти файл без шкоди посиланням.

Відмінності між символьними і жорсткими посиланнями

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

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

Для створення символьних посилань існує утиліта ln, яка має наступний синтаксис

ln опції файл_початковий файл_посилання

Опції можуть мати такі значення:-s

створення символьного посилання;-r

створення символьного посилання з відносним шляхом до файла;-P

створення жорсткого посилання;-f

видалення існуючих посилань;-i

запитати чи видаляти вже існуючі посилання з таким ім’ям.

Для початку, створимо каталог testlinks і перейдемо у нього

teacher@teacher-VirtualBox:~/terminal_work$ mkdir testlinks && cd testlinks

Тепер створимо початковий файл з ім’ям source, який буде містити текст symbolic links, і переглянемо вміст цього файла, використовуючи команду cat

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ echo "symbolic links" > source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat source
symbolic links

Початковий файл готовий. Далі створимо символьне посилання на файл source за допомогою команди ln з опцією -s і переглянемо вміст файла за цим символьним посиланням командою cat

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ln -s source softlink
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat softlink
symbolic links

Як бачимо, вміст у файлі-посиланні і початковому (оригінальному) файлі однаковий.

При створенні символьних посилань, імена файлів можуть бути як абсолютними, так і відносними.

Але використовуючи утиліту ls, можна побачити, що вказані файли мають відмінності

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls -li
загалом 4
1700690 lrwxrwxrwx 1 teacher teacher  6 тра 27 15:44 softlink -> source
1700689 -rw-r--r-- 1 teacher teacher 15 тра 27 15:40 source

Незважаючи на те, що вміст однаковий, тут ми бачимо, що адреса inode (у першій колонці) і права доступу до файлів (у другій колонці) відрізняються, крім того, явно показано, що softlink – це символьне посилання Linux на початковий файл source (можна легко ідентифікувати символьне посилання по маленькій літері l на початку рядка з правами доступу).

Тепер видалимо початковий файл source командою rm і переглянемо вміст файла-посилання softlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ rm source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat softlink
cat: softlink: Немає такого файла або каталогу # символьне посилання не працює, оскільки початковий файл був видалений
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls
softlink # символьне посилання залишилося після видалення оригінального файла

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

Розглянемо особливості процесу створення жорстких посилань. Знову створимо початковий файл source, але вже з текстом hard links

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ echo "hard links" > source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat source
hard links

Створимо жорстке посилання hardlink на файл source, викликавши утиліту ln без параметрів, і переглянемо вміст файла-посилання hardlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ln source hardlink
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat hardlink
hard links

Вміст файлів (початкового і жорсткого посилання) однаковий. Якщо переглянути інформацію про ці файли за допомогою утиліти ls, то побачимо, що inode і права доступу також співпадають

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls -li
загалом 8
1700689 -rw-r--r-- 2 teacher teacher 11 тра 27 16:04 hardlink
1700689 -rw-r--r-- 2 teacher teacher 11 тра 27 16:04 source

Зверніть увагу на номер в третій колонці – цифру 2, яка означає, що є два екземпляри початкового файла. Тобто, початковий файл source, так і жорстке посилання на нього hardlink, мають номер 2 у списку, тому що кожен з них є посиланням чи екземпляром того ж файла. Якщо додати нове жорстке посилання на оригінальний файл, тоді цифра збільшиться ще на 1 пункт, і буде показувати цифру 3.

Файл залишиться на диску, поки є жорстке посилання на нього. Коли лічильник екземплярів скидається до 0, файл видаляється. Тобто, якщо створити, наприклад, 5 жорстких посилань, то поки не буде видалено усі ці посилання, файл буде існувати.

Видалимо початковий файл source і переглянемо вміст файла-посилання hardlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ rm source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat hardlink
hard links

Як бачимо, нічого не сталося і жорстке посилання, як і раніше, вказує на потрібну ділянку диска. Це головна відмінність жорсткого посилання від символьного.

4.8.12. Файли-архіви

У Linux з файлами архівів зустрічаються дуже часто. У вигляді архівів поширюються пакунки програм, початкові коди, а також багато інших файлів. Це можуть бути резервні копії системи, бази даних або звичайні архіви файлів.

Архівування в Linux це не одне і те ж, що і стиснення файлів Linux.

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

tar – найбільш поширений архіватор, який використовується в Linux-системах. Сам по собі tar не є архіватором в звичному розумінні цього слова, тому що він самостійно не використовує стиснення.

Для стиснення використовуються багато інших програм, в залежності від алгоритму стиснення, наприклад, zip, gz, xz і т.д.

Отже, tar створює нестиснений архів, у який поміщаються вибрані файли і каталоги, при цьому зберігаючи деякі їх атрибути (такі як права доступу). Після цього отриманий файл .tar стискається архіватором, наприклад, gzip або bzip2. Ось чому архіви зазвичай мають розширення .tar.gz або .tar.bz2 (для архіваторів gzip і bzip2 відповідно).

Автоматичний запуск деяких утиліт стиснення для щойно створеного архіву підтримується в tar і інших подібних програмах за допомогою спеціальних опцій.

Розглянемо синтаксис команди tar. У загальному випадку команда tar має вигляд

tar опції параметри назва_архіву.tar /шлях/до/файлів_для_архівації

а при розпакування архіву

tar опції параметри назва_архіву.tar

Значення деяких опцій, які визначають режим роботи команди tar, наведені у таблиці.

ОпціяОпція (довгий запис)Опис
-c--createстворити новий архів
-r--appendприєднати файли в кінець архіву
-t--listсформувати список вмісту архіву
-u--updateоновити архів більш новими файлами з тим самим іменем
-x--extractвидобути файли із архіву

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

ПараметрПараметр (довгий запис)Опис
-C--directory=каталогзмінити каталог перед виконанням певної дії
-f--fileзаписати результат архівації у файл
-j--bzip2перенаправити виведення результату архівації в команду bzip2 (стиснення)
-p--same-permissionsзберегти усі права доступу
-v--verboseвивести детальну інформацію під час процесу архівації
--totalsвивести підсумкову інформацію після завершення процесу архівації
-z--gzipперенаправити виведення результату архівації в команду gzip (стиснення)

Розглянемо створення архівів за допомогою команди tar. Для цього використаємо для експериментів каталог testarchives з наступними файлами

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 12
1700701 -rwxrwx--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
1700707 -rwxrwx--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
1700708 -rwxrwx--- 1 teacher teacher  491 сер  5  2017 quest.py

Створимо файл-архів з назвою py_files, який буде містити три файли basketball_teams.py, cities_facts.py, quest.py, з детальним виведенням інформації про архівацію

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --create --totals --verbose --file py_files.tar basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 15MiB/s)

Використаємо скорочений запис для архівації файлів і переглянемо чи був створений архів py_files.tar

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -cvf py_files.tar basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 15MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py

Для перегляду архівів, не розпаковуючи їх, використовують запис команди tar у такому вигляді

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -tf py_files.tar
basketball_teams.py
cities_facts.py
quest.py

Для розпакування (видобування) архіву із виведенням назв файлів архіву на екран необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xvf py_files.tar
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py

Щоб виконати розпакування в інший каталог, використовують параметр -C. Створимо каталог other_files всередині testarchives і скористаємось командою tar

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ mkdir other_files
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
other_files  py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls other_files/
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xvf py_files.tar -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls other_files/
basketball_teams.py  cities_facts.py  quest.py

Як вже було сказано, tar тільки створює архів, але не стискає. Для цього використовуються згадані утиліти bzip2 і gzip. Файли, стиснуті з їх допомогою, мають відповідні закінчення назв файлів: .tar.bz2 і .tar.gz.

Щоб створити стиснений архів за допомогою bzip2, використовують параметр -j і у назві архіву додається формат .bz2

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -cjvf py_files_compression.tar.bz2 basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 18MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 28
1700728 -rwxr-x--- 1 teacher teacher  1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher  1492 сер  5  2017 cities_facts.py
1700732 -rw-r--r-- 1 teacher teacher  1205 тра 28 12:25 py_files_compression.tar.bz2
1700716 -rw-r--r-- 1 teacher teacher 10240 тра 28 11:54 py_files.tar
1700730 -rwxr-x--- 1 teacher teacher   491 сер  5  2017 quest.py

Як бачимо, розмір архіву py_files.tar без стиснення має значення 10240 Байт (шоста колонка у таблиці), розмір архіву py_files_compression.tar.bz2 із стистенням має значення 1205 Байт.

Використовуючи архіватор gzip, вказується параметр -z і інше закінчення архіву .gz

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -czvf py_files_compression.tar.gz basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 18MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 32
1700728 -rwxr-x--- 1 teacher teacher  1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher  1492 сер  5  2017 cities_facts.py
1700732 -rw-r--r-- 1 teacher teacher  1205 тра 28 12:25 py_files_compression.tar.bz2
1700733 -rw-r--r-- 1 teacher teacher  1159 тра 28 12:33 py_files_compression.tar.gz
1700716 -rw-r--r-- 1 teacher teacher 10240 тра 28 11:54 py_files.tar
1700730 -rwxr-x--- 1 teacher teacher   491 сер  5  2017 quest.py

Розмір архіву py_files_compression.tar.gz, стисненого за допомогою архіватора gzip складає 1159 Байт.

Варто пам’ятати, що при розпакуванні архівів, стиснутих за допомогою gzip або bzip2, необхідно вказувати відповідні параметри (-j і -z відповідно)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xjvf py_files_compression.tar.bz2 -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xzvf py_files_compression.tar.gz -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
zip
zip – це утиліта архівування та стиснення, тому її можна використовувати для архівування, стиснення і розпаковування файлів і каталогів у Unix-подібних операційних системах. Програма встановлена за замовчуванням у дистрибутив Ubuntu.

Для перевірки роботи утиліти zip використаємо каталог testarchives, який містить три файли basketball_teams.py, cities_facts.py, quest.py і один каталог python_tasks, який, у свою чергу, містить два файли (hello.py і my_script.txt)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  python_tasks  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt

Щоб створити архів із трьох файлів у каталозі testarchives за допомогою утиліти zip, необхідно виконати наступну команду в терміналі (вказувати для назви файла-архіву розширення .zip необов’язково)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip py_files.zip basketball_teams.py cities_facts.py quest.py
  adding: basketball_teams.py (deflated 79%)
  adding: cities_facts.py (deflated 63%)
  adding: quest.py (deflated 59%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 20
1700728 -rwxr-x--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
1700744 -rw-r--r-- 1 teacher teacher 1548 тра 28 13:49 py_files.zip
1700739 drwxr-xr-x 2 teacher teacher 4096 тра 28 13:45 python_tasks
1700730 -rwxr-x--- 1 teacher teacher  491 сер  5  2017 quest.py

Аналогічно можна створити архів вмісту каталогу python_tasks

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip py_tasks.zip python_tasks/
  adding: python_tasks/ (stored 0%)

Зверніть увагу, що в архів додався лише батьківський каталог. Щоб у архів рекурсивно додавались усі файли і підкаталоги, що містяться у батьківському каталозі, необхідно використати опцію -r

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks.zip python_tasks/
updating: python_tasks/ (stored 0%)
updating: python_tasks/hello.py (deflated 23%)
updating: python_tasks/my_script.txt (deflated 2%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  py_files.zip  python_tasks
cities_facts.py      py_tasks.zip  quest.py

Якщо вказати існуючий архів і перелік файлів чи каталогів, які необхідно дадати до нього, то програма zip оновить вміст існуючого архіву з доданими новими файлами або каталогами

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks.zip python_tasks/ quest.py
updating: python_tasks/ (stored 0%)
updating: python_tasks/hello.py (deflated 23%)
updating: python_tasks/my_script.txt (deflated 2%)
  adding: quest.py (deflated 59%)

Щоб переглянути вміст zip-архіву без розпакування, слід виконати команду unzip з опцією -l

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks.zip
Archive:  py_tasks.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 13:54   python_tasks/
       44  2018-05-28 13:54   python_tasks/hello.py
       43  2018-05-20 18:03   python_tasks/my_script.txt
      491  2017-08-05 16:35   quest.py
---------                     -------
      578                     4 files

Для розпакування zip-архівів використовують команду unzip (якщо у каталозі, у який виконують розархівування, вже знаходяться файли з таким ж іменами, з’явиться діалог з вибором потрібної дії)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_tasks.zip
Archive:  py_tasks.zip
replace python_tasks/hello.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: python_tasks/hello.py
replace python_tasks/my_script.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: python_tasks/my_script.txt
replace quest.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: quest.py

Якщо ж необхідно видобути з архіву не усі файли або каталоги, а лише визначені, то у записі команди unzip треба вказати назви цих файлів (окрім того, якщо необхідно, щоб каталог розпакування був не поточний, а інший, то ще вказується опція -d)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_files.zip quest.py -d python_tasks/
Archive:  py_files.zip
  inflating: python_tasks/quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py

Важливою особливістю команди zip є створення зашифрованого архіву. Це означає, що користувачам необхідно буде ввести пароль для вилучення або перегляду вмісту такого архіву.

Щоб створити зашифрований архів, необхідно використовувати опцію -e

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -e py_files_encryption.zip basketball_teams.py cities_facts.py quest.py
Enter password:
Verify password:
  adding: basketball_teams.py (deflated 79%)
  adding: cities_facts.py (deflated 63%)
  adding: quest.py (deflated 59%)

При розпакуванні такого зашифрованого архіву необхідно буде ввести правильний пароль

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_files_encryption.zip
Archive:  py_files_encryption.zip
[py_files_encryption.zip] basketball_teams.py password:
replace basketball_teams.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: basketball_teams.py
  inflating: cities_facts.py
  inflating: quest.py

Команда zip підтримує кілька рівнів стиснення:-0

лише архівувати (без стиснення);-1

найшвидший (найгірше стиснення);-9

повільний (найкраще стиснення);-6

рівень за замовчуванням.

Наприклад, створимо архів py_tasks.zip із каталогу python_tasks і його вмісту з найвищим рівнем стиснення (9)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r -9 py_tasks.zip python_tasks/
  adding: python_tasks/ (stored 0%)
  adding: python_tasks/quest.py (deflated 59%)
  adding: python_tasks/hello.py (deflated 23%)
  adding: python_tasks/my_script.txt (deflated 2%)

Використання команди zip при створенні архівів дозволяє вибірково додавати файли і підкаталоги у архів. Для цього використовують опцію -x. Наприклад, необхідно у архів py_tasks_choice.zip рекурсивно додати лише файли quest.py і hello.py з каталогу python_tasks (не включаючи файл my_script.txt)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks_choice.zip python_tasks/ -x python_tasks/my_script.txt
  adding: python_tasks/ (stored 0%)
  adding: python_tasks/quest.py (deflated 59%)
  adding: python_tasks/hello.py (deflated 23%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks_choice.zip
Archive:  py_tasks_choice.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 14:40   python_tasks/
      491  2017-08-05 16:35   python_tasks/quest.py
       44  2018-05-28 13:54   python_tasks/hello.py
---------                     -------
      535                     3 files

Щоб видалити файл hello.py із вже створеного архіву py_tasks_choice.zip, разом із командою zip використовують опцію -d

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -d py_tasks_choice.zip python_tasks/hello.py
deleting: python_tasks/hello.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks_choice.zip
Archive:  py_tasks_choice.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 14:40   python_tasks/
      491  2017-08-05 16:35   python_tasks/quest.py
---------                     -------
      491                     2 files

Аналогічно, для видалення групи файлів із створеного архіву py_tasks_choice.zip одного типу (наприклад, .py) можна використовувати наступну команду

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -d py_tasks_choice.zip "*.py"

5. Адміністрування системи

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

5.1. Користувачі і групи

5.1.1. Суперкористувач

У всіх системах на базі Linux завжди є один обліковий запис, який називається root або суперкористувач.

Суперкористувач має право на виконання будь-яких дій і зміни будь-яких параметрів. Більшість системних процесів працюють від імені root.

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

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

Суперкористувач в Ubuntu «захований» всередині системи, а управлінням і налаштуванням системи займаються звичайні користувачі зі спеціальними адміністративними привілеями.

При встановленні системи Linux створюється обліковий запис адміністратора.

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

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

Головна відмінність адміністратора від суперкористувача якраз і полягає в необхідності вводити пароль для виконання будь-якої потенційно небезпечної дії. Якщо система запитує у вас пароль, значить ви збираєтеся якось втрутитися в її працездатність.

Тому для адміністративних дій, які вимагають прав суперкористувача, використовують команду sudo.

sudo – це назва програми, що надає привілеї root для виконання адміністративних дій.

sudo дозволяє легко контролювати доступ до важливих застосунків у системі. За замовчуванням, при встановленні Ubuntu першому користувачеві (тому, який створюється під час встановлення) надаються повні права на використання sudo. Тобто, фактично перший користувач (адміністратор) має ту ж свободу дій, що і root.

Використовується команда sudo у терміналі і має такий синтаксис

sudo команда

Далі система запропонує ввести свій пароль.

При введенні паролів, символи, що вводяться, не відображаються на екрані. Це нормально і зроблено в цілях безпеки, просто необхідно ввести до кінця і натиснути Enter .

Після введення пароля вказана команда виконується від імені root.

5.1.2. Групи користувачів

Linux, в цілому, і Ubuntu, зокрема, – системи, розраховані на багато користувачів, тобто на одному комп’ютері може бути кілька різних користувачів (облікових записів), кожен зі своїми власними налаштуваннями, даними і правами доступу до різних системних функцій.

Крім користувачів у Linux для розмежування прав існують групи. Кожна група, так само як і окремий користувач, має певний набір прав доступу до різних компонентів системи і кожен користувач – член цієї групи – автоматично отримує всі права групи.

Тобто, групи потрібні для групування користувачів за принципом однакових повноважень на будь-які дії. Наприклад, якщо при використанні команди sudo з’являється наступне повідомлення

student@teacher-VirtualBox:~$ sudo apt update
[sudo] пароль до student:
student немає у файлі sudoers. Запис про подію додано до звіту.

то це означає, що користувач (в даному випадку student) не має прав суперкористувача на використання команди sudo, адже не входить у однойменну групу.

Давайте переглянемо список користувачів (облікових записів) і груп, які вже присутні у системі. Для цього можна скористатися кількома способами.

Щоб вивести тільки список ідентифікаторів груп поточного користувача, необхідно використовувати команду id з опцією -G

teacher@teacher-VirtualBox:~$ id -G
1000 4 24 27 30 46 116 126

Якщо необхідно отримати імена груп поточного користувача, то використовується опція -n

teacher@teacher-VirtualBox:~$ id -Gn
teacher adm cdrom sudo dip plugdev lpadmin sambashare

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

teacher@teacher-VirtualBox:~$ id -Gn student
student adm dialout fax cdrom floppy tape audio dip video plugdev scanner
Вся інформація (крім паролів) про облікові записи користувачів зберігається у файлі /etc/passwd. Список груп, присутніх у системі, знаходиться у файлі /etc/group.
Паролі облікових записів зберігаються у файлі /etc/shadow. Права, встановлені на цей файл, не дозволяють прочитати їх проcтому користувачу. Від імені суперкористувача переглянути вміст файла /etc/shadow у терміналі можна за допомогою команди cat наступним чином: sudo cat /etc/shadow.

Відкриємо файл /etc/passwd текстовим редактором gedit за допомогою термінала, увівши команду

gedit /etc/passwd

У результаті отримаємо список облікових записів

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...
teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
student:x:1001:1001:Учень,,,:/home/student:/bin/bash

Один рядок відповідає опису одного облікового запису і складається з кількох полів, розділених двокрапкою. Наприклад, рядок teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash можна прочитати так:

  • teacher – ім’я користувача для входу у систему;
  • x – необов’язковий зашифрований пароль;
  • 1000 – числовий індентифікатор користувача (UID);
  • 1000 – числовий індентифікатор основної групи (GID);
  • Teacher,,, – необов’язкове поле, яке використовується для вказівки додаткової інформації про користувача (наприклад, повне ім’я користувача);
  • /home/teacher – домашній каталог користувача;
  • /bin/bashкомандний інтерпретатор користувача.
Системними обліковими записами в Ubuntu вважаються усі користувачі з UID < 1000.

Відкриємо файл /etc/group текстовим редактором gedit через термінал, ввівши команду

gedit /etc/group

Ось так виглядає частина списку із кількох десятків присутніх у системі груп

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,teacher
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:teacher
floppy:x:25:
tape:x:26:
sudo:x:27:teacher
audio:x:29:pulse
dip:x:30:teacher
...

Наприклад, рядок sudo:x:27:teacher можна прочитати так:

  • sudo – назва групи (перебування у цій групі надає дозвіл на використання команди sudo);
  • x – необов’язковий зашифрований пароль;
  • 27 – числовий індентифікатор групи (GID);
  • teacher – список користувачів, які знаходяться у групі.

Кожна група дозволяє читання або запис певного файла або каталогу системи, тим самим регулюючи повноваження користувача.

Щоб дізнатися назви груп, до яких належить конкретний користувач (наприклад, teacher), необхідно у терміналі написати наступну команду

teacher@teacher-VirtualBox:~$ groups teacher
teacher : teacher adm cdrom sudo dip plugdev lpadmin sambashare

Як бачимо з результату, користувач teacher має однойменну групу. Вона є головною (основною) і була створена автоматично при створенні самого користувача. Крім того, користувач teacher має додаткові групи, серед яких:

  • adm – використовується для завдань моніторингу системи (дозволяє читати логи з каталогу /var/log);
  • cdrom – надає користувачам доступ до дисковода оптичних дисків;
  • sudo – дозволяє використовувати команду sudo;
  • plugdev – дозволяє монтувати знімні пристрої (USB, CD та інші);
  • lpadmin – дозволяє керувати принтерами та очікуванням завдань, відправлених іншими користувачами;
  • sambashare – дозволяє створювати спільні ресурси у файловому обміні між Windows і Ubuntu.
Для створених файлів і каталогів призначається головна група користувача, який їх створив.

Виконаємо у терміналі команду ls, яка показує вміст домашнього каталогу користувача (~), вказавши опцію -l (у вигляді списку)

teacher@teacher-VirtualBox:~$ ls -l ~
загалом 48
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Відео
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:38 Документи
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Завантаження
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Загальнодоступні
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Зображення
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Музика
drwxr-xr-x 3 teacher teacher 4096 кві 30 21:17 Стільниця
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Шаблони
-rw-r--r-- 1 teacher teacher 8980 кві 30 18:41 examples.desktop
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:43 pythonguide

Можна пересвідчитися, що власник усіх каталогів teacher (третя колонка списку) і група теж teacher (четверта колонка списку).

5.1.3. Зміна користувача в терміналі

Для виконання певних адміністративних задач в терміналі від імені адміністратора, коли активним є обліковий запис звичайного користувача з обмеженими привілеями, можна використовувати команду su. Дана команда перемикає вас у сеанс іншого облікового запису (наприклад, адміністратора).

Використання команди su можна розглянути на такому прикладі. Перебуваючи в обліковому записі користувача з обмеженими правами (student) вводимо в терміналі команду su teacher для переходу в обліковий запис teacher, який має адміністративні права, і вказуємо пароль облікового запису teacher

student@teacher-VirtualBox:~$ su teacher
Пароль:
teacher@teacher-VirtualBox:/home/student$

Після того, як ви зробите все, що вам було потрібно, ви можете ввести команду exit і знову переключитися в режим звичайного користувача з обмеженими правами

teacher@teacher-VirtualBox:/home/student$ exit
exit
student@teacher-VirtualBox:~$
Щоб дізнатися ім’я користувача, від якого будуть виконуватися команди в терміналі, необхідно ввести команду whoami.

Команда sudo запускає с правами суперкористувача тільки одну команду. При виконанні команди sudo система запитує поточний пароль користувача, а потім виконує команду від імені суперкористувача.

За замовчуванням, Ubuntu пам’ятає введенний пароль 15 хвилин, і протягом цього часу при повторному використанні не буде запитувати його. Якщо у терміналі необхідно виконати велику кількість команд і кожен раз введення пароля не влаштовує, то можна відкрити сеанс суперкористувача, який дозволить позбутися цих незручностей

teacher@teacher-VirtualBox:~$ sudo su
[sudo] пароль до teacher:
root@teacher-VirtualBox:/home/teacher# exit
exit
teacher@teacher-VirtualBox:~$
Пам’ятайте, що використання суперкористувача вкрай небезпечне, адже необережні дії із виконанням команд у терміналі можуть нашкодити працездатності системи. Тому, при виконанні команд від імені суперкористувача будьте дуже уважними.

5.1.4. Права доступу до файлів і каталогів

Як вже відомо, будь-який файл і каталог належить якомусь користувачеві системи і певній групі. Змінюючи власників того чи іншого файла і різні групи прав доступу до нього, можна гнучко керувати доступом до цього файла.

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

Файловий менеджер Nautilus і права доступу

У програмі Nautilus (файловий менеджер Ubuntu, інша назва – Файли), можна натиснути правою кнопкою миші на файлі або каталозі (або на кількох вибраних файлах або каталогах), відкрити Властивості (Ctrl+I), перейти на вкладку Права і переглянути права доступу, власника і групу.

Права доступу в Ubuntu

Права доступу в Ubuntu: встановлення прав доступу для каталогу python_work

Крім того, можна змінити права доступу для вкладених файлів і каталогів, клікнувши у вікні вкладки Права на кнопку Змінити права для вкладених файлів….

Права доступу в Ubuntu

Права доступу в Ubuntu: встановлення прав доступу для файлів і каталогів (тек), які знаходяться у каталозі python_work

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

З подібної організації прав доступу у системі випливає вкрай важливий наслідок.

Конкретному користувачу Ubuntu належить тільки його домашній каталог і весь його вміст. У системі цей каталог знаходиться за адресою /home/ім’я_користувача.

Усі інші файли системи, включаючи всі застосунки, системні налаштування і т.д., що розташовуються поза /home, належать переважно root. І це недарма, адже їм усім виставлені права на зміну тільки для користувача-власника. Таким чином, ніхто, окрім root, не може втрутитися в роботу системи і щось змінити у системних файлах.

Як редагувати системні файли за допомогою графічного інтерфейсу?

Інколи виникають задачі, коли необхідно запустити програму з графічним інтерфейсом від імені суперкористувача, (наприклад, текстовий редактор для редагування системного файла).

Рекомендованим способом виконання операцій, що вимагають підвищених дозволів при роботі за допомогою графічного інтерфейсу користувача, є використання так званого бекенда адміністратора, який використовує спеціальний префікс admin://.

Якщо необхідно відкрити файл від імені суперкористувача у файловому менеджері Nautilus, необхідно натиснути Ctrl+L, щоб можна було б увести в адресний рядок admin://, потім – шлях до каталогу, що містить файл, який необхідно відредагувати, і ввести свій пароль.

Окрім того, файловий менеджер Nautilus можна запустити через термінал в режимі адміністратора за допомогою команди

sudo nautilus

Також, у файловий менеджер можна додати функцію Відкрити як адміністратор. Для цього необхідно виконати у терміналі наступну команду

sudo apt install nautilus-admin

і перезапустити файловий менеджер Nautilus. Тепер, відкривши Nautilus, можна натиснути правою кнопкою миші на потрібному каталозі/файлі та обрати команди Open as administrator або Edit as administrator.

5.1.5. Створення користувача

Створимо нового користувача з ім’ям student та паролем, а потім додамо його в групу users. Усі дії будемо виконувати через термінал.

Для створення користувача, використаємо команду useradd, яка має синтаксис

useradd опції ім'я_користувача

В нашому випадку команда для додавання нового користувача буде наступною

sudo useradd -m -s /bin/bash student

У даному записі команди useradd використано дві опції:

  • -m (вказує, що необхідно створити домашній каталог, якщо він не існує);
  • -s зі значенням /bin/bash (командна оболонка, яка використовується користувачем, за замовчуванням /bin/sh).

Взагалі, при створенні нового користувача командою useradd можна переглянути параметри, які будуть використовуватися за замовчуванням, увівши у терміналі команду useradd з опцією -D

teacher@teacher-VirtualBox:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Встановлення пароля для нового користувача student відбувається введенням команди

sudo passwd student

і наступним введенням пароля.

Для додавання користувача student у групу users необхідно використати команду usermod, яка має такий же синтаксис, як і useradd. Додавання користувача у групу матиме такий вигляд

sudo usermod -G users -a student

Опція -a вказує на приєднання користувача student, а опція -G вказує на групи (у даному випадку на єдину групу users), до яких треба приєднати, записані через кому без пропусків.

Більш простий спосіб створення нового користувача – використання команди adduser.

У системах Ubuntu команда adduser пов’язана зі скриптом, який обробляє процедуру створення користувача

sudo adduser ім'я_користувача

При роботі скрипта з’явиться кілька запитань, на які треба дати відповіді, наприклад так

teacher@teacher-VirtualBox:~$ sudo adduser student
[sudo] пароль до teacher:
Додається користувач "student"...
Додається нова група "student" (1001)...
Додається новий користувач "student" (1001) з групою "student"...
Створюється домашня директорія "/home/student"...
Копіюються файли з "/etc/skel"..
Введіть новий пароль UNIX:
Повторіть новий пароль UNIX:
passwd: пароль було успішно змінено
Зміна інформації про користувача student
Введіть нове значення або натисніть ENTER для значення за замовчанням
	Повне ім'я []: Учень
	Номер кімнати []:
	Робочий телефон []:
	Домашній телефон []:
	Інше []:
chfn: ім'я «Учень» містить не ASCII-символи
Чи є ця інформація вірною? [Т/н]
teacher@teacher-VirtualBox:~$

Для видалення користувача із системи можна використовувати команду deluser.

Наступна команда видалить користувача student і його домашній каталог (опція --remove-home) із системи

sudo deluser --remove-home student

Налаштування за замовчуванням команди deluser знаходяться у файлі /etc/deluser.conf, який можна відкрити і переглянути, виконавши команду

sudo gedit /etc/deluser.conf

5.1.6. Застосунок Users & Groups

Управління користувачами, обліковими записами і групами в Ubuntu можна виконувати також із використанням програми Користувачі та групи. Даний застосунок звільняє від використання термінала при створенні і редагуванні користувачів та груп в Ubuntu, окрім того, у програмі можна також керувати привілеями.

Програму можна встановити із репозиторія Ubuntu командою

sudo apt install gnome-system-tools

або через Ubuntu Software Ubuntu Software (Програми Ubuntu), написавши у рядку пошуку gnome-system-tools.

Детальніше про встановлення програм в Ubuntu читайте у розділі 5.2 і розділі 6.

Після встановлення, програму можна запустити через застосунок Показати програми Утиліта Показати програми в Ubuntu

Користувачі та групи в Ubuntu

Користувачі та групи – програма для налаштування облікових записів, груп, привілеїв

Основні дії, що можна виконувати у програмі Користувачі та групи, наведені нижче.

Зміна назви для обраного користувача і типу облікового запису за допомогою кнопок Змінити.

Користувачі та групи в Ubuntu

Користувачі та групи: зміна назви користувача і типу облікового запису

Додавання нового облікового запису (кнопка Додати)

Користувачі та групи в Ubuntu

Користувачі та групи: додавання нового облікового запису

Введення і підтвердження пароля (кнопка Гаразд)

Користувачі та групи в Ubuntu

Користувачі та групи: встановлення пароля для нового облікового запису

Зміна типу нового облікового запису на Користувач

Користувачі та групи в Ubuntu

Користувачі та групи: обліковий запис звичайного користувача

Створення нового облікового запису Учень завершено

Користувачі та групи в Ubuntu

Користувачі та групи: створення нового облікового запису Учень завершено

Розширені параметри (контактна інформація, привілеї) облікового запису Учень (кнопка Розширені параметри)

Користувачі та групи в Ubuntu

Користувачі та групи: розширені параметри облікового запису Учень

Параметри груп (кнопка Керування групами у головному вікні програми Користувачі та групи)

Користувачі та групи в Ubuntu

Користувачі та групи: група sudo

Членство у групах

Користувачі та групи в Ubuntu

Користувачі та групи: обліковий запис Учень не входить у групу sudo

Після додавання користувача в групи, необхідно перезайти в систему, щоб зміни почали діяти.

Програмою Користувачі та групи можна також видалити користувача, виконавши нескладні налаштування.

5.2. Встановлення і видалення програм

Встановлення програмного забезпечення, оновлення, обробка залежностей, видалення програм є дуже важливими діями у адміністрування операційної системи Ubuntu.

В Ubuntu існує багато способів встановлення програм. Тут можна скористатися і вбудованим в систему застосунком Ubuntu Software (Програми Ubuntu) Ubuntu Software, і упорядником пакунків (наприклад, Synaptic), і встановлювати програми з репозиторіїв за допомогою команд у терміналі, а також завантажувати пакунки програм з Інтернету, після чого встановлювати їх – також різними способами.

5.2.1. Ubuntu Software (Програми Ubuntu)

Одним із варіантів перегляду, встановлення і видалення програм в Ubuntu є використання Ubuntu Software Ubuntu Software (Програми Ubuntu).

Ubuntu Software

Ubuntu Software (Програми Ubuntu)

Для встановлення конкретної програми, необхідно обрати категорію, в якій вона може бути, знайти її назву і обрати для встановлення. Або виконати пошук програми за назвою або частиною назви.

Крім того, в Ubuntu Software (Програми Ubuntu) можна переглянути встановлені, оновлені програми у системі, а, за потреби, і видалити програму із системи.

5.2.2. Synaptic

Synapticупорядник пакунків – програма, що дозволяє керувати пакунками в Ubuntu. Вона поєднує в собі всі можливості системи керування пакунками apt та зручність графічного інтерфейсу. Synaptic є надбудовою над apt.

За допомогою Synaptic, ви можете встановлювати, видаляти, налаштовувати і оновлювати пакунки у вашій системі, переглядати списки доступних і встановлених пакунків, керувати репозиторіями і оновлювати систему до нової версії.

Для встановлення даного упорядника пакунків у терміналі необхідно ввести команду

sudo apt install synaptic

Для запуску Synaptic необхідно відкрити Утиліта Показати програми в Ubuntu і ввести у рядку пошуку synaptic (переклад українською може бути як упорядник пакунків)

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu

Також, Synaptic можна запустити, увівши у терміналі команду

sudo synaptic

Після запуску ви побачите головне вікно програми

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: головне вікно Synaptic

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

В Synaptic для пошуку певних пакунків присутній набір фільтрів:

  • за розділами (Ігри та розваги, Графіка, Керування системою і т.д.);
  • за статусом (Встановлені, Не встановлені, Встановлені (вручну) і т.д.);
  • за походженням (тобто з якого джерела встановлена або може бути встановлена та чи інша програма).
Перед пошуком і встановленням певного пакунку слід натиснути на кнопці Оновити список пакунків для того, щоб завантажити список пакунків найновіших версій.

Для прикладу, необхідно встановити мультимедійний програвач vlc . Для швидкого пошуку потрібного пакунку для встановлення можна скористатися кнопкою пошуку

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: пошук пакунку за назвою

В рузультаті буде знайдений список взаємопов’язаних пакунків

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: знайдені пакунки, пов’язані з vlc

Необхідно виконати правий клік на потрібному пакунку (в даному випадку на vlc) і обрати в контекстному меню, що з’явилося, пункт Позначити для встановлення. Якщо пакунок вимагає встановлення інших пакунків, то з’явиться діалогове вікно зі змінами, які будуть зроблені

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: додавання взаємопов’язаних пакунків

Якщо треба продовжити встановлення, то необхідно натиснути на кнопці Позначити.

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: позначення усіх взаємозалежних пакунків

Для встановлення необхідно натиснути кнопку Застосувати на головній панелі упорядника пакунків Synaptic і погодитися зі змінами, натиснувши на кнопку Застосувати у вікні діалогу

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: підтвердження дій для встановлення vlc

Далі відбудеться завантаження пакунків

Упорядник пакунків Synaptic

Кервіник пакунків Synaptic в Ubuntu: завантаження пакунків з Інтернету

із наступним встановленням

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: встановлення пакунків медіа-програвача vlc

По завершенню, з’явиться повідомлення про успішне встановлення

Упорядник пакунків Synaptic

Упорядник пакунків Synaptic в Ubuntu: повідомлення про успішне встановлення vlc

Для видалення встановленого пакунку (ознака того, що пакунок встановлений – прямокутник з зеленою заливкою зліва від його імені), слід повторити дії, що виконуються при встановленні пакунку, вказавши тільки пункт Позначити для вилучення.

Пошкоджені пакунки

Пошкоджені пакунки – це пакунки, які мають незадовільні залежності.

Якщо пошкоджений пакунок виявлений, то Synaptic не дозволить проводити ніяких змін в системі з пакунками до тих пір, поки всі пошкоджені пакунки не будуть виправлені.

Для виправлення пошкоджених пакунків необхідно у меню Редагування програми Synaptic виконати послідовно такі дії:

  1. Обрати пункт Виправити пошкоджені пакунки.
  2. Обрати пункт Застосувати позначені зміни (Ctrl+P).
  3. Натиснути кнопку Застосувати.

Synaptic можна використовувати для підтримки системи Ubuntu у чистоті, тобто для очищення кешу оновлень пакунків, видалення невикористовуваних залишків невстановлених програм, очищення кешу мініатюр (ескізів зображень), видалення старих ядер.

Кеш – тимчасове сховище даних (файлів, записів, знімків тощо), накопичених у процесі роботи користувача в системі.

Для очищення кешу оновлень після оновлення системи, тобто для видалення файлів, що вже не використовуються, необхідно у меню Synaptic обрати Налаштування  Параметри  Файли та активувати пункт Вилучати завантажені пакунки після встановлення

Вилучення завантажених пакунків після встановлення у Synaptic

Упорядник пакунків Synaptic в Ubuntu: вилучення завантажених пакунків після встановлення

А потім натиснути кнопки: Вилучити зебережені (у кеші) файли пакунків, щоб очистити використані файли, Застосувати та Гаразд. Тепер усі завантажені файли пакунків після встановлення застосунків будуть видалятися автоматично, оскільки вони більше не потрібні у системі.

Для видалення залишків (конфігураційних файлів) не встановлених програм у Synaptic необхідно натиснути на кнопці Статус, у списку вгорі обрати пункт Не встановлені (але є конфігураційні файли).

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

Вилучення конфігураційних файлів не встановлених програм у Synaptic

Упорядник пакунків Synaptic в Ubuntu: вилучення конфігураційних файлів не встановлених програм

За допомогою упорядника пакунків Synaptic можна виконувати видалення старих ядер Linux або таких, що вже не використовуються.

У системі рекомендується мати дві версії ядра – останню (найновішу) версію, що використовується на даний момент, і попередню, на випадок виникнення будь-яких неполадок.

Ядро Linux

Ядро Linux робить дуже багато корисних речей, окрім керування пам’яттю, процесами і основними компонентами комп’ютера. Усі драйвера системних пристроїв теж вбудовані у ядро.

Якщо у комп’ютера є які-небудь проблеми з підтримкою обладнання у Linux, то оновлення ядра Ubuntu може поліпшити ситуацію.

Нові версії ядер містять виправлення, різні поліпшення роботи і продуктивності системи, а також різні нововведення, які роблять роботу з Linux краще. Тому корисно завжди мати у власній системі найновіше ядро. Але більшість дистрибутивів, зокрема Ubuntu, досить консервативні і містять старі, перевірені часом версії ядер, а нові додаються дуже повільно.

Згодом, через оновлення ядер, у системі накопичується багато невикористовуваних образів ядер, які лише займають дисковий простір. Кожен образ ядра разом з пов’язаними файлами-заголовками і файлами модулів займає близько 200-400 мегабайт. Таким чином, видалення старих ядер в Ubuntu дозволить звільнити зайнятий дисковий простір.

Подивитися скільки у системі наявних образів ядер можна за допомогою файлового менеджера Nautilus, відкривши каталог /boot, або виконавши у терміналі команду ls /boot/

teacher@teacher-VirtualBox:~$ ls /boot/
config-5.4.0-42-generic      memtest86+.elf
config-5.8.0-36-generic      memtest86+_multiboot.bin
efi                          System.map-5.4.0-42-generic
grub                         System.map-5.8.0-36-generic
initrd.img                   vmlinuz
initrd.img-5.4.0-42-generic  vmlinuz-5.4.0-42-generic
initrd.img-5.8.0-36-generic  vmlinuz-5.8.0-36-generic
initrd.img.old               vmlinuz.old
memtest86+.bin

У даному випадку, у системі встановлені дві версії ядра: 5.4.0-42 і 5.8.0-36.

Окрім того, при завантаженні системи у меню завантажувача GRUB присутній пункт для кожного ядра, на випадок, якщо необхідно вибрати його для завантаження.

Щоб переглянути повний шлях до образу ядра, який завантажений в поточну систему (по іншому, переглянути рядок запуску GRUB), необхідно виконати у терміналі команду

cat /proc/cmdline

і в параметрі BOOT_IMAGE буде вказаний повний шлях до образу ядра, який зараз завантажений

teacher@teacher-VirtualBox:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.8.0-36-generic root=UUID=32bd57cd-94eb-4b45-a89e-3cbe833ba838 ro quiet splash vt.handoff=7

Інформацію про активну версію ядра можна також дізнатися за допомогою команди

cat /proc/version

виконавши її у терміналі

teacher@teacher-VirtualBox:~$ cat /proc/version
Linux version 5.8.0-36-generic (buildd@lgw01-amd64-027) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #40~20.04.1-Ubuntu SMP Wed Jan 6 10:15:55 UTC 2021

Спочатку необхідно визначити актуальне ядро системи, тобто поточне ядро на якому працює система зараз. Це можна зробити за допомогою команди uname, виконавши її у терміналі

teacher@teacher-VirtualBox:~$ uname -r
5.8.0-36-generic

Далі потрібно у поле Пошук вікна Synaptic ввести рядок linux-image, після чого у правій колонці будуть відображені усі ядра системи. Встановлені ядра будуть позначені зеленим квадратиком.

Список ядер системи Ubuntu в Synaptic

Упорядник пакунків Synaptic в Ubuntu: список ядер системи Ubuntu

Далі потрібно залишити актуальне ядро, назва якого була відображена у терміналі після виконаної команди uname -r (5.8.0-36-generic), передостанню версію ядра, а решту, за потреби, можна видалити, виконавши такі дії:

  • правий клік на рядку з версією ядра (із написом generic);
  • в контекстному меню обрати Позначити для повного вилучення;
  • у меню програми Synaptic натиснути Застосувати.

Також необхідно оновити завантажувач GRUB, щоб і з його меню видалити тепер непотрібні ядра. Це можна зробити у терміналі за допомогою команди

sudo update-grub

а потім виконати перезавантаження комп’ютера.

Після нового входу у систему можна зробити додаткове очищення системи наступними командами

sudo apt autoremove
sudo apt autoclean

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

sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)

а після цього виконати команди по очищенні системи і оновлення завантажувача GRUB

sudo apt autoremove
sudo update-grub
За допомогою Synaptic можна також встановити у систему нові версії ядра Linux. Для цього у вікні Synaptic необхідно виконати правий клік на рядку з назвою ядра нової версії, в контекстному меню обрати Позначити для встановлення та у меню програми Synaptic натиснути Застосувати, оновити завантажувач GRUB і перезавантажити комп’ютер.

5.2.3. apt

Один з методів встановлення програм – система керування пакунків apt. Це популярний, потужний інструмент командного рядка для керування пакунками.

apt вміє не тільки їх встановлювати, але і видаляти, оновлювати, завантажувати списки пакунків з Інтернету і багато іншого. Тобто все, що вміє Synaptic, але тільки з командного рядка.

apt дозволяє завантажувати лише ті пакунки, які розташовані на віддалених серверах, тобто, у мережевих репозиторіях.

На перший погляд, використання apt може відлякувати, особливо новачків. Однак не поспішайте – в більшості випадків саме apt є найпростішим і швидким способом щось встановити в Ubuntu, і саме тому в більшості інструкцій для встановлення чого-небудь в Ubuntu, які можна знайти на просторах Інтернету, містяться команди для термінала з використанням apt.

Синтаксис для роботи з apt такий

sudo apt опції команда ім'я_пакунка

Однією з основних опцій є -f – виконати операцію примусово (використовується для усунення збоїв в базі пакунків, викликаних порушеними залежностями). А ось кілька основних команд apt, які можна використовувати для керування пакунками:

  • download – завантажити пакунок, але не встановлювати;
  • update – використовується для оновлення інформації про списки пакунків в репозиторіях;
  • upgrade – оновлення системи без видалення пакунків;
  • full-upgrade – повне оновлення системи з видаленням конфліктуючих залежностей;
  • install – встановлення пакунку;
  • remove – видалення пакунку без видалення конфігураційних файлів;
  • autoremove – автоматичне видалення пакунків, які більше не потрібні в системі;
  • purge – повне видалення пакунку;
  • show – подивитися інформацію про пакунок;
  • autoclean – видалити застарілі пакунки (які були замінені при оновленні);
  • clean – повністю очистити кеш.

Використання apt передбачає, що ви точно знаєте, чого ви хочете. Наприклад, ви хочете встановити переглядач графічних файлів Pinta , тоді вам необхідно виконати наступні команди в терміналі

sudo apt update
sudo apt install pinta

Перший рядок sudo apt update – це оновлення даних про доступні в репозиторіях програми. Другий рядок можна прочитати так:

  • sudo – означає, що наступні після нього команди будуть виконуватися від імені суперкористувача;
  • apt – власне, викликає саму систему керування пакунками apt;
  • install – команда для встановлення пакунку;
  • pinta – ім’я пакунку, який треба встановити (можна вказати кілька пакунків, просто розділяючи їх назви пропусками).

А для видалення пакунку достатньо набрати у терміналі наступну команду

sudo apt purge pinta
Команда sudo apt autoremove використовується для очищення системи від пакунків, що не використовуються, отже, є зайвими в системі. Факт того, що пакунок більше не використовується визначається наступним чином: якщо пакунок був встановлений не сам по собі, а як залежність для іншого пакунку, який згодом був видалений, значить цей пакунок є зайвим в системі.

Очищення системи: мініатюри зображень

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

Імена прихованих каталогів і прихованих файлів починаються з крапки, наприклад: .cache, .config та інші. Крапка перед ім’ям файла/каталогу робить їх прихованими. У файловому менеджері Nautilus, використавши сполучення клавіш Ctrl+H , можна переглянути усі приховані файли і каталоги поточного каталогу.

Відкриємо домашній каталог користувача, а далі послідовно каталог .cache і каталог .thumbnails (ескізи), у якому зберігаються інші каталоги із мініатюрами зображень, які використувались користувачем

Каталог зберігання ескізів зображень

Каталог зберігання ескізів зображень

Згодом, число мініатюр може різко збільшитися, окрім того, кеш мініатюр може містити багато зайвих ескізів знімків/фотографій, які більше не існують.

Кеш мініатюр можна очистити вручну, відкривши каталог і видаливши вміст.

Або використати швидший спосіб очищення мініатюр, виконавши у терміналі наступну команду

sudo rm -f ~/.cache/thumbnails/normal/*
При виконанні у терміналі команди apt moo можна побачити корову, яка запитає: Ви мукали сьогодні?. teacher@teacher-VirtualBox:~$ apt moo (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ..."Have you mooed today?"...

5.2.4. deb-пакунки

Якщо в репозиторіях Ubuntu потрібної програми не знайшлося, або ж знайшлося, але не останньої версії (а таке буває часто), то швидше за все необхідно зайти на сайт розробника програми, і завантажити інсталяційний пакунок у форматі *.deb-пакунка.

В Ubuntu по подвійному кліку на deb-пакунку відкривається, за замовчуванням, вікно застосунку Ubuntu Software (Програми Ubuntu) для встановлення пакунку.
GDebi

GDebi – програма для встановлення deb-пакунків. Перевага її в тому, що вона може встановлювати deb-пакунки, автоматично завантажуючи і встановлюючи необхідні залежні пакунки.

GDebi дозволяє встановлювати локальні deb-пакунки, знаходячи й встановлюючи їх залежності.

Для встановлення програми GDebi в Ubuntu у терміналі необхідно виконати наступні команди

sudo apt install gdebi

Після того, як програма GDebi встановлена, її можна запустити через Утиліта Показати програми в Ubuntu

Встановлювач пакунків GDebi

Встановлювач пакунків GDebi

Відкривши deb-пакунок за допомогою GDebi (через контекстне меню чи за допомогою Ctrl+O), необхідно обрати кнопку Встановити пакунок

Встановлювач пакунків GDebi

Встановлювач пакунків GDebi: встановлення deb-пакунку

GDebi можна використати і у режимі командного рядка, виконавши наступну команду у терміналі

sudo gdebi назва_пакунку.deb

Виконувати команду необхідно з каталогу, де міститься даний deb-пакунок, або вказувати відносний шлях до deb-пакунку, наприклад

sudo gdebi ~/Завантаження/назва_пакунку.deb
dpkg

Крім графічної утиліти GDebi, встановити, попередньо завантажені з Інтернету, пакунки в Ubuntu можна і простою командою dpkg (базова система керування пакунками в Debian-системах) у терміналі.

Спочатку переходимо у каталог, у який був завантажений deb-пакунок, і виконуємо команду у терміналі

sudo dpkg -i назва_пакунку.deb

Для команди dpkg доступні символи скороченого запису. Наприклад, щоб встановити всі deb-пакунки з поточного каталогу, можна написати так

sudo dpkg -i *.deb

Програма не вміє встановлювати залежності. Навіть, якщо є доступ до мережі Інтернет, вона тільки встановлює пакунок. Тому для встановлення залежностей, після встановлення deb-пакунку, необхідно виконати

sudo apt -f install

Тепер, коли залежності були завантажені, ви можете запускати і використовувати програму.

Щоб отримати список усіх пакунків системи, виконаємо у терміналі команду

dpkg -l

У результаті отримаємо таблицю з такими даними (показана лише верхня частина таблиці)

teacher@teacher-VirtualBox:~$ dpkg -l
Бажаний=невідомо[u]/встановити[i]/вилучити[r]/вичистити[p]/зафіксувати[h]
| Стан=не[n]/встановлений[i]/налаштований[c]/розпакований[U]/частково налаштований[F]/
частково встановлений[H]/trig-aWait/Trig-pend
|/ Помилка?=(ні)/вимагається перевстановлення[R] (верхній регістр
у полях стану й помилки вказує на ненормальну ситуацію)
||/ Ім'я           Версія       Архітектура  Опис
+++-==============-============-============-=================================
ii  accountsservic 0.6.45-1ubun amd64        query and manipulate user account
ii  acl            2.2.52-3buil amd64        Access control list utilities
ii  acpi-support   0.142        amd64        scripts for handling many ACPI ev
...

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

  • Бажаний стан пакунка
    1. u (unknown) – невідомий.
    2. i (install) – позначено для встановлення.
    3. r (remove) – позначено для вилучення.
    4. p (purge) – позначено для очищення (вилучення, включаючи файли конфігурації).
    5. h (hold) – зафіксований.
  • Поточний стан пакунка
    1. n (not-installed) – пакунок не встановлений.
    2. i (installed) – пакунок успішно встановлений і налаштований.
    3. c (config-files) – у системі присутні лише файли конфігурації пакунка.
    4. U (unpacked) – пакунок розпакований, але ще не налаштований.
    5. F (half-configured) – пакунок розпакований, і налаштування було запущено, але ще не завершено з якоїсь причини.
    6. h (half-installed) – встановлений частково (встановлення пакунка було запущено, але не завершено з якоїсь причини).
    7. W (triggers-awaiting) – пакунок очікує обробки тригерів іншим пакунком.
    8. t (triggers-pending) – пакунок був запущений.
  • Стан помилки (якщо помилка відсутня, на цьому місці пропуск)
    1. R (reinst-required) – пакунок зламаний, необхідне повторне встановлення.

Наприклад, позначення стану пакунка ii означає це буде встановлено та встановлено, rcце буде вилучено, але файли конфігурації залишилися і т.д.

Резервне копіювання пакунків

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

Самим простим способом резервного копіювання Ubuntu – це резервна копія списку усіх встановлених пакунків. У даному випадку, неможливо зберегти налаштування програм, але можна дуже швидко відновити усі встановлені програми.

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

Виконавши у терміналі команду

dpkg --get-selections

можна отримати поточний список пакунків у системі Ubuntu (відображена лише невелика частина списку)

...
poppler-data					install
poppler-utils					install
popularity-contest				deinstall
powermgmt-base					install
ppa-purge						install
...

Параметр --get-selections дозволяє отримати список пакунків і записати його до стандартного потоку виведення (на екран термінала). У даному випадку, не встановлені пакунки (тобто ті, які були раніше видалені) не будуть показані.

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

  • install – пакунок позначений для встановлення;
  • deinstall – пакунок позначений для видалення (будуть видалені усі файли, крім файлів конфігурації).

Якщо необхідно перевірити, які пакунки мають стан deinstall (тобто будуть видалені), використайте команду

dpkg --get-selections | grep deinstall | cut -f 1-

Даний рядок можна детально прочитати так:

  • отримати список пакунків за допомогою команди dpkg --get-selections;
  • результат виконання попередньої команди перевести на виконання наступної за допомогою символу | (цей символ ще називається конвеєр і використовується для перенаправлення виведення);
  • обрати лише ті записи про пакунки, які мають стан deinstall за допомогою команди grep;
  • знову перенаправити виведення попередньої команди на вхід наступної за допомогою |;
  • використати команду cut для виведення на екран полів (параметр -f) від 1-го і до кінця рядка (1-).

Якщо необхідно перевірити, які пакунки зі станом deinstall будуть видалені, виконайте команду

dpkg --get-selections | grep deinstall | cut -f 1-

Щоб видалити пакунки із станом deinstall, можна використати команду

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f 1-`

Перейдемо до створення резервної копії списку встановлених пакунків. Для цього у терміналі виконаємо команду

dpkg --get-selections | grep -v deinstall > backup.txt

Опція -v у записі grep -v deinstall означає, що необхідно вибрати лише ті рядки, які не містять значення deinstall. За допомогою символа > результат відбору перенаправляється у файл backup.txt.

Після цього необхідно скопіювати отриманий файл backup.txt зі списком пакунків у надійне місце. Коли система зламається, її потрібно перевстановити, а потім відкрити термінал, перейти у каталог, в якому зберігається резервний файл зі списком пакунків, і виконати команди

sudo dpkg --set-selections < backup.txt
sudo apt -y update # оновити список доданих пакунків (опція "-y" - автоматично відповідати Так на усі запити)
sudo apt dselect-upgrade # встановити пакунки, після додавання їх у список

Параметр --set-selections дозволяє отримати список пакунків за допомогою файла backup.txt, прочитаного із стандартного потоку введення.

Таким чином, у нову встановлену систему можна швидко повернути усі раніше встановлені програми з мінімальними втратами часу.

5.2.5. Підключення репозиторіїв

Більшість необхідних програм зберігаються в офіційних сховищах пакунків (репозиторіях) Ubuntu, звідки вони завантажуються щоразу, коли ви щось встановлюєте. Однак, деяких застосунків (наприклад, які нещодавно з’явилися) в офіційних репозиторіях Ubuntu немає, або ж вони є – але старих версій. У таких випадках, зазвичай, потрібно додати у систему нове джерело застосунків – новий репозиторій.

Зазвичай, у інструкціях по додаванні нового репозиторія вже наводяться готові команди, які залишається просто скопіювати у термінал і виконати.

Наприклад, щоб встановити текстовий редактор Geany, потрібно спочатку підключити його репозиторій, тобто додати у джерела застосунків вашої системи джерело, звідки він повинен встановлюватися і оновлюватися.

Додавання такого нового джерела можна виконати у терміналі за допомогою команди

sudo add-apt-repository ppa:geany-dev/ppa

Даний рядок можна прочитати так:

  • sudo – виконати усі наступні команди від імені суперкористувача;
  • add-apt-repository – команда додавання репозиторія;
  • ppa:geany-dev/ppa – назва PPA-репозиторія, який додається у систему.

Персональний архів пакунків (PPA)

Найпростішим способом поширення програм для Ubuntu є розміщення їх в репозиторіях.

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

Політика Canonical така, що в стандартних репозиторіях міститяться лише стабільні версії програм, випущені на момент виходу у світ дистрибутива. Надалі в репозиторії додаються тільки оновлення безпеки, що не змінюють версії встановлених програм. Крім того, додати розробнику свою програму в стандартні репозиторії не просто.

Для створення власного сховища необхідні ресурси, як мінімум, сервер, і непогані навички адміністратора. Все це створює деякі перешкоди для поширення програм для Ubuntu.

Тому для підтримки і розвитку вільних проєктів був створений сервіс launchpad.net . Одна з ключових переваг сервісу для звичайного користувача – можливість будь-кому створити свій репозиторій. На launchpad таке сховище називається персональний архів пакунків (Personal Package ArhivePPA), і використовується для поширення власних пакунків без зайвих технічних труднощів.

Щоб знайти на Launchpad сторінку з описом потрібного сховища, необхідно скористатися пошуком на сайті, розташованим на головній сторінці.

Після того, як репозиторій доданий, система Ubuntu завантажить список пакунків, які є в цьому джерелі.

Використання PPA у нових версіях Ubuntu

Починаючи з релізу Ubuntu 18.04 LTS змінилася кількість команд для встановлення нових програм (app) із сторонніх репозиторіїв з трьох команд

sudo add-apt-repository ppa:ppa-url
sudo apt update
sudo apt install app

на дві команди (тепер команда додавання PPA add-apt-repository сама запускає apt update, що дозволяє пропустити другий крок)

sudo add-apt-repository ppa:ppa-url
sudo apt install app

Встановлення самого пакунку виконується командою

sudo apt install geany

Крім того, у даному випадку, для текстового редактора Geany можна ще встановити плагіни, виконавши наступну команду

sudo apt install geany-plugins

Для видалення доданого репозиторія (ppa:geany-dev/ppa) необхідно скористатися наступною командою у терміналі

sudo add-apt-repository --remove ppa:geany-dev/ppa

або відкрити програму Програмне забезпечення та оновлення

Програмне забезпечення та оновлення в Ubuntu

Застосунок Програмне забезпечення та оновлення в Ubuntu

та перейти на вкладку Інше програмне забезпечення

Видалення репозиторіїв в Ubuntu

Видалення репозиторіїв в Ubuntu

для видалення потрібного сховища. На цій вкладці можна також відключити репозиторії.

Застосунок Програмне забезпечення та оновлення можна відкрити, виконавши у терміналі команду sudo software-properties-gtk.

Окрім того, на вкладці Інше програмне забезпечення новий репозиторій можна додати універсальним способом. У цьому випадку, для коректного додавання PPA у систему необхідно виконати дві дії:

  • додати посилання на репозиторій у системний список джерел пакунків;
  • додати цифровий підпис сховища у систему.

Другий пункт потрібен для того, щоб система встановлення пакунків не нагадувала про наявність ненадійних джерел. Саме для цього необхідно відвідати сторінку з відповідним описом PPA (для прикладу, використаємо сторінку редактора для програмістів Geany на Launchpad).

На сторінці PPA, як бачимо, наведені команди для встановлення даної програми за допомогою термінала

sudo add-apt-repository ppa:geany-dev/ppa
sudo apt update

Але у нашому випадку натискаємо на Technical details about this PPA:

Додавання репозиторія в Ubuntu універсальним способом

Додавання репозиторія в Ubuntu універсальним способом

Якщо Launchpad автоматично не визначив версію Ubuntu, необхідно обрати свою версію у випадаючому списку.

Два рядки у рамці – це два рядки з описом репозиторія (перший – для бінарних пакунків, другий – для початкових кодів), які треба додати до списку джерел програмного забезпечення у системі.

Отже, на вкладці Інше програмне забезпечення необхідно натиснути кнопку Додати, у вікні, що з’явилося, ввести значення рядка для бінарних пакунків і натиснути Додати джерело

Додавання джерела у список репозиторіїв Ubuntu

Додавання джерела у список репозиторіїв Ubuntu

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

Після оновлення інформації, пакунки, що містяться в доданому репозиторії, можна встановлювати стандартними засобами.

Захист репозиторіїв

Оскільки репозиторії, у більшій мірі, розташовані у Інтернеті, існує вірогідність підміни репозиторія зловмисниками на свої, що містять модифіковані пакунки. Таким чином, користувач може встановити собі модифікований пакунок і, тим самим, поставити безпеку своєї системи під загрозу.

Багато сховищ мають захист від підмін. Такий захист реалізований за допомогою перевірки цифрових підписів репозиторія та клієнтського комп’ютера. У випадку, коли репозиторій має цифровий підпис, а користувацький комп’ютер містить відкритий ключ для цього репозиторія – такий репозиторій вважається таким, якому можна довіряти.

В Ubuntu, за замовчуванням, репозиторіями, яким можна довіряти, є репозиторії на інсталяційних образах і основні Інтернет-репозиторії – archive.ubuntu.com. При наявності на користувацькому комп’ютері декількох пов’язаних репозиторіїв, перевага віддається тим, яким можна довіряти.

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

Інколи, завантажені пакунки при встановленні самостійно реєструють ключі сховищ.

Один із способів додавання ключа – це імпорт файла-ключа, який можна виконати на вкладці Автентифікація вікна Програмне забезпечення та оновлення

Додавання цифрового підпису репозиторія в Ubuntu

Додавання цифрового підпису репозиторія в Ubuntu

Однак, набагато більш привабливим варіантом є додавання ключа зі спеціального захищеного сервера.

Зазвичай, коли заходить мова про ключ, дається його незрозумілий, на перший погляд, буквенно-цифровий ідентифікатор – рядок з довільних цифр і літер латинського алфавіту у верхньому регістрі, на зразок, 1024R/3A68BA40877059E65867971771240B8FB3641232, де ідентифікатором є саме частина після слеша.

Тому ключі, переважно, зберігаються на спеціальних серверах, звідки будь-хто може їх отримати. Ключі для репозиторіїв Ubuntu прийнято зберігати на keyserver.ubuntu.com. Для отримання і імпортування у систему ключа з сервера необхідно виконати команду

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3A68BA40877059E65867971771240B8FB3641232

де keyserver.ubuntu.com – сервер ключів, а замість 3A68BA40877059E65867971771240B8FB3641232 необхідно написати ідентифікатор потрібного ключа, взятого із сторінки репозиторія.

Щоб імпортувати усі відсутні ключі репозиторіїв, необхідно виконати у терміналі

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo aptitude update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`

Після додавання ключів репозиторіїв у систему, можна оновити список пакунків

sudo apt update

і встановити потрібний застосунок з підключеного PPA

sudo apt install назва_застосунку

Резервне копіювання списку репозиторіїв

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

Налаштування системних репозиторіїв зберігаються у файлі /etc/apt/sources.list. А каталог /etc/apt/sources.list.d/ містить окремі файли для кожного PPA, доданого користувачем за допомогою команди add-apt-repository.

Ключі репозиторіїв зберігаються аналогічним чином. Файл /etc/apt/trusted.gpg містить список ключів, а окремі файли всередині каталогу /etc/apt/trusted.gpg.d/ містять ключі для кожного доданого репозиторія.

Усі ці файли необхідні для резервного копіювання. Перейдемо до створення резервних копій цих файлів.

Для резервування ключів, доданих до системи, можна скористатися наступною командою, виконавши її у терміналі

sudo apt-key exportall > ~/repositories.key

Дана команда збереже усі ключі, додані у систему, у файл repositories.key, який буде збережений у домашньому каталозі користувача.

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

sudo apt-key add /шлях/до/repositories.key

Для створення резервної копії файла /etc/apt/sources.list можна використати наступну команду, яка збереже список репозиторіїв із нього в окремий файл sources.list у домашньому каталозі

cat /etc/apt/sources.list> ~/sources.list

А усі файли із каталогу /etc/apt/sources.list.d/, у цьому випадку, необхідно також скопіювати і зберегти у іншому місці для майбутнього відновлення. Якщо з’явиться необхідність використовувати резервні копії файлів, потрібно перемістити їх назад у відповідні каталоги і виконати команду

sudo apt update

для додавання репозиторіїв.

Як варіант, можна створити резервну копію усього каталогу /etc/apt і, за потреби, скопіювати його назад, якщо доведеться перевстановлювати систему, або скопіювати його у те ж місце на іншому комп’ютері з такою ж версією дистрибутива.

Якщо ви не сильно переймаєтеся тим, що кожний доданий PPA зберігається у власному файлі всередині каталогу /etc/apt/sources.list.d/, можна зберегти увесь список репозиторіїв системи в одному файлі з ім’ям sources.list, що буде розташований у домашньому каталозі, за допомогою команди

cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list > ~/sources.list

Якщо з’явилась необхідність використати резервну копію файла зі списком усіх репозиторіїв системи, то залишається перемістити файл sources.list в /etc/apt/sources.list та виконати

sudo apt update

для повторного додавання репозиторіїв.

Якщо планується використовувати резервну копію на іншому комп’ютері, переконайтеся, що версія Ubuntu на цьому комп’ютері відповідає версіям у файлі sources.list, у іншому випадку можуть виникнути помилки.

Іншим варіантом створення резервної копії списку сховищ є використання утиліти Y PPA Manager, яку можна встановити із сторінки Launchpad за допомогою PPA (програма має також ряд інших можливостей для роботи з PPA)

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt install y-ppa-manager

Для запуску утиліти необхідно виконати у терміналі команду

sudo y-ppa-manager
Утиліта Y PPA Manager для роботи з PPA в Ubuntu

Утиліта Y PPA Manager для роботи з PPA в Ubuntu

5.2.6. Flatpak-пакунки

Традиційний спосіб встановлення програм у Linux – завантаження та встановлення пакунків з репозиторіїв дистрибутива. Причому, формати пакунків, способи розгортання і навіть версії бібліотек для різних збірок дистрибутивів дуже відрізняються. Це не дозволяло завантажити програму з Інтернету і запускати її на будь-якому Linux-дистрибутиві.

Flatpack – це технологія портативних застосунків, підтримуваних у будь-якому дистрибутиві, яка створена командою розробників GNOME. Flatpak пропонує систему для збирання самодостатніх пакунків для графічних застосунків, які не прив’язані до конкретних дистрибутивів Linux і виконуються в спеціальному контейнері, який ізолює застосунок від решти системи.

Для зменшення розміру пакунку, контейнер включає лише специфічні для застосунку залежності, а базові системні і графічні бібліотеки (Gtk+, Qt, бібліотеки GNOME і т.д.) оформлені у вигляді типових середовищ виконання, що підключаються.

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

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

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

Перед тим, як встановлювати застосунки з Flatpak, необхідно встановити сам Flatpak за допомогою термінала (Flatpak доступний для найбільш поширених дистрибутивів Linux).

Виконаємо встановлення Flatpak для Ubuntu.

Офіційний Flatpak PPA – рекомендований спосіб встановлення Flatpak. Тому для встановлення необхідно відкрити термінал Ctrl+Alt+T і ввести наступні команди

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt install flatpak

Щоб встановлювати застосунки без необхідності використання командного рядка, можна встановити плагін програмного забезпечення Flatpak

sudo apt install gnome-software-plugin-flatpak

Щоб мати можливість встановлювати застосунки з Flathub , необхідно додати віддалений сервер (репозиторій) Flathub

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Після завершення встановлення, необхідно перезавантажити систему.

Для системи Ubuntu 20.04 застосунок Ubuntu Software (Програми Ubuntu) все ще базується на програмному забезпеченні GNOME, але він представлений (перепакований) як застосунок Snap (відображається як Snap Store, але дозволяє встановлювати звичайні apt-пакунки, оброблювати встановлення deb-пакунків), тому для встановлення Flatpak-застосунків необхідно запустити GNOME Software (Програми).
Застосунок GNOME Software

Застосунок GNOME Software для встановлення Flatpak-програм

Встановити потрібний застосунок в Ubuntu за допомогою Flatpak можна кількома способами. Розглянемо ці способи на прикладі встановлення текстового редактора Atom.

  1. Через застосунок GNOME Software GNOME Software (Програми), слідуючи стандартним крокам встановлювача.
Варто звернути увагу на джерело застосунку на сторінці встановлення: у випадку Flatpak джерело матиме назву dl.flathub.org. Для точності пошуку саме застосунку Flatpak в рядку пошуку можна дописати до назви застосунку слово flatpak.
  1. Використати командний рядок, увівши у терміналі команди для встановлення застосунку
flatpak install flathub io.atom.Atom

де flathub – сайт-репозиторій Flathub із застосунками, а io.atom.Atom – це ідентифікатор застосунку.

Команди встановлення/запуску можна переглянути на сторінці застосунку Atom на сайті Flathub (аналогічно і для інших застосунків).
  1. Встановити застосунок можна локально за допомогою файла формату .flatpakref, встановивши його із каталогу, у який він був завантажений з Інтернету, наступною командою у терміналі
flatpak install io.atom.Atom.flatpakref
  1. Використати повний шлях до застосунку із сайту Flathub
flatpak install --user https://flathub.org/repo/appstream/io.atom.Atom.flatpakref

Flatpak для системи і для користувача

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

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

За замовчуванням, команди Flatpak запускаються всередині системи. Якщо програми встановлюються для повсякденного використання, рекомендується дотримуватися цієї поведінки за замовчуванням.

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

Як тільки програма встановлена, її можна запустити за допомогою команди запуску та ідентифікатора програми

flatpak run io.atom.Atom

Щоб переглянути список програм та встановлених середовищ за допомогою Flatpak, виконайте у терміналі команду

flatpak list

Крім того, для виведення лише списку встановлених програм, скористайтеся наступною командою

teacher@teacher-VirtualBox:~/Стільниця$ flatpak list --app
Назва      Ід. програми      Версія      Гілка      Встановлення
Atom       io.atom.Atom      1.51.0      stable     system
Напис system говорить про те, що застосунок був встановлений для усієї системи. У випадку встановлення застосунку для поточного користувача напис був би таким: user.

Програми Flatpak можна знайти в будь-якому з віддалених репозиторіїв, використовуючи команду пошуку search

teacher@teacher-VirtualBox:~/Завантаження$ flatpak search gimp
Назва     Опис                          Ід. програми      Версія  Гілка  Сховища
GNU Imag… Створення зображень та редаг… org.gimp.GIMP     2.10.22 stable flathub

Щоб оновити всі встановлені програми до останньої версії, виконайте у терміналі

flatpak update

Для видалення застосунку за допомогою Flatpak необхідно у терміналі виконати команду

flatpak uninstall io.atom.Atom

5.2.7. Snap-пакунки

Snap – це новий формат пакунків програмного забезпечення, який вперше з’явився в Ubuntu 16.04. Саме Canonical представила нову систему встановлення і управління програмним забезпеченням, позиціонуючи її як більш стабільну і безпечну.

Snap-пакунок – це контейнер, в якому знаходиться застосунок і його залежності.

Навіщо потрібні Snap-пакунки для встановлення програм, якщо є вже deb-пакунки?

Ще раз про пакунки і репозиторії

Відомо, що deb-пакунок являє собою інсталяційний пакунок тієї чи іншої програми (на зразок exe-пакунків для Windows), при встановленні якого підключаються необхідні залежності для повноцінної роботи програми.

Проте, deb-пакунки у Linux-системах віддалено нагадують собою пакунки exe для Windows, тому що exe-пакунки вже несуть в собі усі необхідні залежності пакунку, а deb-пакунки під час встановлення можуть використовувати залежності іншої програми, вже встановленої в системі.

Наприклад, якщо встановлюється deb-пакунок, скажімо, якогось мультимедійного плеєра, то під час його встановлення пакунок нового плеєра може використовувати залежності (звукові, відео та інші файли), іншого мультимедійного пакунку, вже встановленого раніше у системі. У Windows exe-пакунок вже містить усі необхідні залежності, тобто, залежності іншого пакунку, встановленого у системі, не використовуються, навіть, якщо вони ідентичні.

Для підтримки deb-пакунків створені спеціальні репозиторії (сховища), де зберігаються ці пакунки. Репозиторії бувають системні, створені розробниками дистрибутивів і сторонні, створені спеціально для підтримки того чи іншого застосунку незалежними розробниками, якими можуть бути будь-які користувачі Linux.

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

У випадку, коли репозиторій якогось застосунку, створений стороннім розробником, підтримувався лише до певної версії Ubuntu чи іншого похідного дистрибутива Linux, можуть виникнути труднощі встановлення такого застосунку у нові дистрибутиви. Окрім того, для багатьох розробників проблематично випускати нові збірки пакунків для усіх нових версій програм і Linux-дистрибутивів.

Поширення Snap-пакунків покликане стандартизувати і допомогти програмістам випускати свої застосунки для різних систем, не замислюючись про залежності. Іншими словами, один раз створений Snap-пакунок для того чи іншого застосунку, може бути встановлений у будь-якому дистрибутиві Linux, що підтримує встановлення даних пакунків.

Крім того, додати підтримку встановлення Snap-пакунків в дистрибутив не складно. Це ні в якому разі не замінює інші упорядники пакунків, а лише доповнює їх.

Список дистрибутивів, які підтримують встановлення застосунків за допомогою Snap-пакунків, можна переглянути на сайті https://snapcraft.io . Ознайомитися з офіційною документацією Snap можна за адресою https://docs.snapcraft.io/core .

Щоб переглянути список доступних Snap-пакунків, у терміналі необхідно виконати команду

sudo snap find назва

де назва – це назва або частина назви програми.

Якщо необхідно виконати пошук пакунку програми з назвою, яка складається з кількох слів, то слова беруть у лапки

teacher@teacher-VirtualBox:~$ sudo snap find "video player"
Назва                    Версія                Видавець        Примітки  Підсумок
vlc                      3.0.11                videolan✓       -         The ultimate media player
...
musicarley               3.0.0                 bocata.apps     -         Music and video player free for everyone.
sdlpop                   1.21                  snapcrafters    -         SDLPoP
telemetrytv              3.9.1                 telemetrytv3    -         TelemetryTV Player
movian                   5.0.566               andoma          -         Media player
...
mpc-hc                   0.1                   the-mentor      -         Media Player Classic - Home Cinema (MPC-HC)
...

У загальному вигляді команда встановлення Snap-пакунку виглядає наступним чином

sudo snap install ім'я_пакунку

Дізнатися імена пакунків можна у таблиці результатів пошуку Snap-пакунків за допомогою команди find у колонці Назва – це і є імена пакунків.

Для прикладу, встановимо програму hello-world, яка виводить однойменне повідомлення, за допомогою Snap

teacher@teacher-VirtualBox:~$ sudo snap find "hello-world"
Назва                     Версія  Видавець              Примітки  Підсумок
hello-world               6.4     canonical✓            -         The 'hello-world' of snaps
teacher@teacher-VirtualBox:~$ sudo snap install hello-world
hello-world 6.4 від Canonical✓ встановлено
teacher@teacher-VirtualBox:~$ hello-world
Hello World!

Щоб відобразити список усіх встановлених Snap-пакунків в систему, необхідно ввести у терміналі наступну команду

teacher@teacher-VirtualBox:~$ snap list
Назва              Версія              Ред    Відстеження      Видавець    Примітки
core               16-2.48.2           10583  latest/stable    canonical✓  core
core18             20201210            1944   latest/stable    canonical✓  base
gnome-3-34-1804    0+git.3556cb3       66     latest/stable/…  canonical✓  -
gtk-common-themes  0.1-50-gf7627e4     1514   latest/stable/…  canonical✓  -
hello-world        6.4                 29     latest/stable    canonical✓  -
snap-store         3.38.0-59-g494f078  518    latest/stable/…  canonical✓  -
snapd              2.48.2              10707  latest/stable    canonical✓  snapd

Для оновлення встановлених Snap-пакунків використовують команду

teacher@teacher-VirtualBox:~$ sudo snap refresh
Всі snap-пакунки актуальні.

а для оновлення якогось конкретного пакунку наступний формат команди

sudo snap refresh ім'я_пакунку

Для видалення Snap-пакунків користуються таким синтаксисом

sudo snap remove ім'я_пакунку

Встановлені Snap-пакунки можна вимикати (вони не будуть оновлюватися) і вмикати, виконуючи, відповідно, команди

teacher@teacher-VirtualBox:~$ sudo snap disable hello-world
hello-world вимкнено
teacher@teacher-VirtualBox:~$ sudo snap enable hello-world
hello-world увімкнено
Встановлення Snap-пакунків можна виконувати не лише за допомогою термінала. Як вже було сказано, підтримка Snap-пакунків включена в застосунок Ubuntu Software (Програми Ubuntu). В Ubuntu Software на сторінці встановлення для Snap-застосунків вказується джерело snapcraft.io.

5.3. Додаткові налаштування

5.3.1. Ubuntu Restricted Extras (мультимедіа, шрифти)

Для відтворення найбільш популярних мультимедійних форматів (MP3, MPEG4, AVI та ряду інших), додавання шрифтів Microsoft (Arial, Verdana, Georgia та інших) необхідно встановити пакунок Ubuntu Restricted Extras.

Для цього у терміналі (Ctrl+Alt+T) необхідно виконати наступну команду

sudo apt install ubuntu-restricted-extras

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

Пакунок Ubuntu Restricted Extras

Пакунок Ubuntu Restricted Extras

і встановлення не продовжиться, доки не натиснути Гаразд. Для цього необхідно натиснути стрілку праворуч і клавішу Enter. Після чого з’явиться наступне повідомлення

Пакунок Ubuntu Restricted Extras

Пакунок Ubuntu Restricted Extras

Таким же чином, стрілками клавіатури вибираємо варіант Так, натискаємо клавішу Enter і чекаємо завершення встановлення.

5.3.2. Додаткові архівні формати

В системі Ubuntu вже присутній менеджер архівів, який підтримує ряд архівних форматів (zip, gzip та інших), додатково його встановлювати не потрібно.

Менеджер архівів в Ubuntu

Застосунок Менеджер архівів в Ubuntu

Після встановлення додаткових архіваторів у систему даний менеджер архівів побачить нові формати. Для цього необхідно виконати у терміналі наступну команду

sudo apt install p7zip-rar rar unrar unace arj cabextract

5.3.3. Застосунки для налаштування системи

Налаштування середовища GNOME (Settings, Параметри)

В Ubuntu із середовищем робочого столу GNOME вже є інструмент налаштувань, який називається Параметри, і його можна знайти за допомогою пошуку у списку застосунків.

Налаштування параметрів в Ubuntu

Застосунок Параметри в Ubuntu

Даний застосунок містить величезну кількість налаштувань системи

Налаштування параметрів в Ubuntu

Застосунок Параметри в Ubuntu

Розширене налаштування GNOME (Tweaks, Налаштування)

Цей застосунок дозволяє коригувати додаткові параметри середовища GNOME.

Для встановлення застосунку для розширеного налаштування GNOME можна скористатися застосунком Ubuntu Software (Програми Ubuntu).

Alacarte – редактор меню встановлених застосунків Утиліта Показати програми в Ubuntu для робочого середовища GNOME. Встановити застосунок можна через термінал командою

sudo apt install alacarte
Редактор меню встановлених застосунків в Ubuntu

Застосунок Головне меню в Ubuntu

5.3.5. dconf (налаштування встановлених програм)

dconf – система конфігурації, яка основана на ключах і за допомогою якої у GNOME зберігаються налаштування більшості програм. Для того, щоб встановити редактор dconf, необхідно відкрити термінал та виконати наступну команду

sudo apt install dconf-editor

Після встановлення редактора у списку застосунків його можна знайти так

Налаштування параметрів в Ubuntu

Пошук застосунку Редактор dconf в Ubuntu

Як використовувати редактор dconf?

Наприклад, необхідно перемістити значок Утиліта Показати програми в Ubuntu у верхню частину (на початок) панелі обраних застосунків.

Панель обраних застосунків, панель швидкого запуску, панель задач – це різні назви однієї панелі.

Для цього треба відкрити редактор dconf, ввести в пошук show-apps-at-top і натиснути клавішу Enter

Налаштування параметрів в Ubuntu

Редактор dconf в Ubuntu: ключ show-apps-at-top

Далі перемістити в даному параметрі перемикач і значок Утиліта Показати програми в Ubuntu з’явиться у верхній частині (на початку) панелі.

5.3.6. GParted (редактор дискових розділів)

GParted (GNOME Partition editor) – редактор дискових розділів, що використовується для різних операцій з розділами (створення, видалення, зміни розміру, переміщення, перевірки, копіювання й призначення мітки «завантажувальний») та розміщеними на них файловими системами (форматування).

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

Програма GParted в Ubuntu

Програма GParted в Ubuntu

Для встановлення GParted в Ubuntu у терміналі необхідно виконати команду

sudo apt install gparted

5.4. Створення ярликів для програм

В Ubuntu будь-яку встановлену у систему програму можна відкрити через кнопку Показати програми Утиліта Показати програми в Ubuntu, що розташована на панелі обраних застосунків. Увівши у рядок пошуку назву програми (або частину її назви), ярлик запуску програми з’явиться у списку.

Ярлики встановлених застосунків зберігаються у двох каталогах, один з яких системний – /usr/share/applications, а інший знаходиться у каталозі кожного з користувачів системи за адресою ~/.local/share/applications/.

Ярлики представляють із себе текстові файли з розширенням .desktop

teacher@teacher-VirtualBox:~$ cd /usr/share/applications
teacher@teacher-VirtualBox:/usr/share/applications$ ls
alacarte.desktop
apport-gtk.desktop
apturl.desktop
audacity.desktop
blender.desktop
...

А самі текстові файли мають схожу структуру, як на зразку

teacher@teacher-VirtualBox:/usr/share/applications$ cat processing.desktop
[Desktop Entry]
Version=3.5.4
Name=Processing 3
Comment=Processing
Exec=/usr/local/bin/processing %F
Icon=/opt/Processing/3.5.4/lib/icons/pde-256.png
Terminal=false
Type=Application
Categories=AudioVideo;Video;Graphics;

Ось кілька важливих параметрів, які часто використовуються:Name

ім’я застосунку, яке відображається під значком у списку встановлених програм (обов’язковий);Comment

текстовий коментар;Exec

шлях до застосунку (обов’язковий);Terminal

запускати (True) чи ні (False) застосунок у вікні термінала;Icon

шлях до системного значка програми; .

Тобто, для створення ярлика (launcher) для запуску застосунку, необхідно створити текстовий файл з назвою application-name.desktop, де application-name – це назва застосунку, вказати у текстовому файлі відповідні параметри і зберегти файл ярлика у каталог ~/.local/share/applications.

Для поточного користувача за допомогою терміналу це можна виконати так:

gedit ~/.local/share/applications/application-name.desktop

Щоб знайти шлях до встановленої програми у терміналі використовуйте вже відомі команди which або whereis з назвою програми, наприклад, так

teacher@teacher-VirtualBox:~$ which processing
/usr/local/bin/processing
teacher@teacher-VirtualBox:~$ whereis processing
processing: /usr/local/bin/processing

Якщо необхідно створити ярлик програми у системному каталозі, то потрібно буде виконувати команду з правами суперкористувача і відповідним шляхом /usr/share/applications

sudo gedit /usr/share/applications/application-name.desktop
Ярлики, створені вказаними способами, можна скопіювати на стільницю і через контекстні меню ярликів дозволити їх запуск.

5.5. Планувальник завдань

Дуже часто у Linux виникає необхідність автоматизувати виконання власних користувацьких задач з адміністрування системи.

Для автоматизації процесу виконання певних задач користувачів за розкладом у систему Ubuntu інтегрована програма cron.

cron – програма-демон, призначена для виконання завдань у певний час, або через певні проміжки часу.

Для додавання нових або редагування вже створених запланованих користувацьких завдань використовується файл конфігурації crontab.

Кожен користувач системи має свій файл завдань crontab, в якому описано, в який час і які команди і програми запускати від імені цього користувача.

Для редагування файла crontab використовується спеціальна однойменна команда crontab, яка дозволяє не переривати процес cron на час редагування за допомогою наступних команд:

  • -e – команда запуску файла crontab для його редагування (від англ. edit);
  • -l – команда запуску файла для перегляду його вмісту (від англ. list);
  • -r – видалити файл crontab для поточного користувача (видалити свій crontab) (від англ. remove).

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

  • хвилина;
  • година;
  • день;
  • місяць;
  • день тижня.
# .---------------- хвилина (0 - 59)
# |  .------------- година (0 - 23)
# |  |  .---------- день місяця (1 - 31)
# |  |  |  .------- місяць (1 - 12) АБО jan,feb,mar,apr ...
# |  |  |  |  .---- день тижня (0 - 6) (неділя=0 чи 7) АБО sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
  *  *  *  *  *  виконувана команда

Значення цих колонок можуть містити число, список чисел, або символ . Решта символів в рядку інтерпретуються як виконувана команда та її параметри.

Значення колонок файла crontab можна генерувати за допомогою редактора для виразів розкладу crontab.guru .

Створимо завдання для запуску певного застосунку кожної неділі о 23 годині.

Відкриємо файл crontab (при першому запуску необхідно обрати редактор для редагування файла), виконавши у терміналі команду

sudo crontab -e

і запишемо у кінець файла наступний рядок

0 23 * * 7 /шлях/до/застосунку

5.6. Автозавантаження програм

Необхідність автоматичного завантаження деяких застосунків при завантаженні системи виникає досить часто.

В Ubuntu є спеціальна програма для управління автозапуском. Знайти її можна у списку застосунків головного меню системи. Називається вона Початкові програми

Програма Початкові програми в Ubuntu

Програма Початкові програми в Ubuntu

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

Програма Початкові програми в Ubuntu

Програма Початкові програми в Ubuntu

Список не містить ніяких системних програм і сервісів, лише застосунки, пов’язані з обліковим записом конкретного користувача.

Для додавання своєї програми в автозапуск необхідно натиснути кнопку Додати

Налаштування програм автозапуску в Ubuntu

Налаштування програм автозапуску в Ubuntu

Поля Назва: та Коментар: можна заповнити на власний розсуд, а в поле Команда: необхідно записати команду для запуску застосунку або вибрати шлях до програми, використавши кнопку Огляд….

У випадку, якщо ви не знаєте де знайти програму або як пишеться її команда, можна використати утиліту Головне меню, відшукавши її у списку застосунків системи.

Далі, знайдіть у списку програм потрібний застосунок і натисніть кнопку Властивості

Категорії застосунків у програмі Головне меню в Ubuntu

Категорії застосунків у програмі Головне меню в Ubuntu

Тепер просто скопіюйте значення поля Команда: (Command:)

Команда запуску Geany в Ubuntu

Команда запуску Geany в Ubuntu

у програму налаштування автозапуску.

5.7. Оновлення програмного забезпечення і системи

Розробка Ubuntu відбувається так, що нові версії програм поширюються тільки з релізом дистрибутива, а потім приходять тільки оновлення, які виправляють баги і проблеми з безпекою, актуалізують системні пакунки, які часто потрібні як залежності для встановлення сторонніх програм.

Оновлювати програмне забезпечення системи Ubuntu необхідно не тільки після того, як щойно її встановили на свій комп’ютер, а й періодично.

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

Актуалізувати/оновити програмне забезпечення можна як через термінал, так і у графічному режимі.

В Ubuntu передбачений механізм оновлення через застосунок Оновлення програм.

Це програма з графічним інтерфейсом, яка запускається час від часу і пропонує оновити систему, якщо були випущені нові оновлення. Даний керівник оновлень Ubuntu досить простий і його можна запустити через Утиліта Показати програми в Ubuntu

Оновлення програм в Ubuntu

Застосунок Оновлення програм в Ubuntu

Відкривши застосунок, розпочнеться пошук оновлень

Оновлення програм в Ubuntu

Оновлення програм в Ubuntu: пошук оновлень

Після чого відкриється вікно Оновлення програм

Оновлення програм в Ubuntu

Встановлення оновлень програм в Ubuntu

Розкривши список Деталі оновлень , можна переглянути список оновлень, а також відзначити пункти навпроти деяких пакунків, які не потрібно оновлювати.
Оновлення програм в Ubuntu

Деталі оновлень програм в Ubuntu

Щоб повністю оновити програмне забезпечення системи, потрібно натиснути Встановити зараз.

Для оновлення програмного забезпечення через термінал можна скористатися упорядник пакунків apt.

Для цього необхідно виконати кілька команд.

sudo apt update

Дана команда оновлює інформацію про пакунки в доданих у систему репозиторіях. Якщо є оновлення, то можна дізнатися, які пакунки будуть оновлені, виконавши команду

sudo apt list --upgradable

Після чого необхідно виконати одну з наступних команд для оновлення програмного забезпечення системи. Перша з них

sudo apt upgrade

оновлює пакунки, які вже встановлені в системі і встановлює нові пакунки-залежності, а інша команда

sudo apt full-upgrade

оновлює пакунки, які вже встановлені в системі, встановлює нові пакунки-залежності і видаляє пакунки, які встановлювалися в систему і вже не використовуються.

Виконання команд у терміналі можна об’єднувати. Наприклад, у нашому випадку оновлення пакунків можна записати так

sudo apt update && sudo apt upgrade

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

Програмне забезпечення та оновлення в Ubuntu

Застосунок Програмне забезпечення та оновлення в Ubuntu

Далі необхідно перейти на вкладку Програмне забезпечення Ubuntu і обрати сервер завантажень оновлень

Зміна серверу завантаження оновлень в Ubuntu

Застосунок Програмне забезпечення та оновлення в Ubuntu: зміна серверу завантаження оновлень

Також варто підключити репозиторії партнерів Canonical (за замовчуванням, ці репозиторії не підключені в систему). В даних репозиторіях міститься програмне забезпечення компаній-партнерів Canonical. Ці репозиторії потрібні для оновлення в Ubuntu застосунків із закритим початковим кодом.

Сховища партнерів Canonical в Ubuntu

Застосунок Програмне забезпечення та оновлення в Ubuntu: репозиторії партнерів Canonical та додані репозиторії

Стандартні налаштування отримання оновлень можна змінити на вкладці Оновлення

Програмне забезпечення та оновлення в Ubuntu

Застосунок Програмне забезпечення та оновлення в Ubuntu: налаштування розкладу оновлень

Оновлення системи – це процес переходу з попереднього випуску до більш нового випуску операційної системи. Таким прикладом є перехід з версії Ubuntu 19.10 (Eoan Ermine) на версію Ubuntu 20.04 LTS (Focal Fossa).
Для перевірки версії дистрибутива встановленої системи, використовуйте у терміналі команду lsb_release -a.

Для оновлення системи до новішої версії необхідно на вкладці Оновлення увімкнути опцію Повідомляти мене про нові версії (для будь-якої нової версії чи для версій з довгим терміном підтримки) і у терміналі виконати команду по запуску керівника оновлень з ключем -c (для перевірки наявності нового релізу дистрибутива)

sudo update-manager -c

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

sudo update-manager -d

Після цього погодитись із оновленням системи та дотримуватись вказівок на екрані.

При оновленні Ubuntu з підключеними сторонніми PPA-репозиторіями можуть виникати помилки. Тому перед оновленням версії дистрибутива рекомендується такі репозиторії тимчасово відключити.

6. Програмне забезпечення

У цьому розділі підручника описані різні способи встановлення типового програмного забезпечення для вирішення багатьох повсякденних і навчальних задач в Ubuntu.

6.1. Браузери

Популярний безкоштовний браузер Mozilla Firefox , створений компанією Mozilla Foundation, входить в стандартний набір попередньо встановлених застосунків в Ubuntu.

Виконаємо встановлення в Ubuntu іншого популярного безкоштовного браузера Google Chrome , розробленого Google Inc.

Існує два офіційних способи встановлення браузера Chrome:

  • використовування репозиторію Google Chrome PPA;
  • безпосереднє завантажування та встановлення пакунків .deb.

6.1.1. Встановлення Google Chrome з використанням PPA

  1. Використаємо офіційний репозиторій (PPA) програмного забезпечення Google, який буде автоматично встановлювати і налаштовувати параметри, необхідні для оновлення браузера Chrome.

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

У системах на базі Debian (Ubuntu, Linux Mint і т.д.) використовуйте команду wget для завантаження ключа, а потім використовуйте apt-key, щоб додати його в систему

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
  1. Після додавання ключа необхідно виконати наступну команду, щоб додати Chrome-репозиторій у власні системні джерела програмного забезпечення
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
  1. Після додавання Chrome-сховища необхідно оновити програмне забезпечення системи. Для оновлення доданого Chrome-репозиторія, використовують наступну команду
sudo apt update
  1. На цьому кроці обираємо встановлення стабільної версії браузера
sudo apt install google-chrome-stable

6.1.2. Встановлення Google Chrome з використанням пакунків .deb

  1. Перейдіть на сторінку завантаження Google Chrome і виберіть відповідний пакунок, або використайте наступну команду wget для завантаження (1) і встановлення (2) останньої версії
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 
sudo dpkg -i google-chrome-stable_current_amd64.deb 
  1. Після встановлення, Google Chrome можна запустити з використанням термінала наступною командою
google-chrome-stable

6.1.3. Видалення Google Chrome

Щоб видалити браузер, використовуйте наступну команду

sudo apt remove google-chrome-stable

6.2. JRE

JRE – середовище виконання для Java , яке використовується у різному програмному забезпеченні для виконання Java-застосунків. Для встановлення середовища віртуальної машини в Ubuntu використаємо наступні команди у терміналі

sudo apt update
sudo apt install default-jre

6.3. Office і видавничі системи

6.3.1. LibreOffice

LibreOffice – кроcплатформовий офісний пакунок, вільний аналог Microsoft Office. Перекладений багатьма мовами світу, в тому числі і українською. Підтримує більшість популярних операційних систем, включаючи GNU/Linux.

LibreOffice безкоштовний як для приватного, так і для освітнього або комерційного використання. Може використовуватися без будь-яких ліцензійних зборів будь-ким.

Основним форматом файла LibreOffice є відкритий формат офісних документів OpenDocument. Окрім того, LibreOffice підтримує формати Microsoft Office та інших офісних пакунків для досягнення максимальної сумісності.

LibreOffice є офісним пакунком, вбудованим в Ubuntu за замовчуванням.

6.3.2. WPS Office

WPS Office (абревіатура для Writer, Presentation і Spreadsheets, відомий також раніше як Kingsoft Office) – проєкт, який створений китайськими розробниками і розвивається як аналог офісного пакунку MS Office, написаний на Qt і націлений на роботу в Microsoft Windows, macOS, Linux, iOS та Android.

До складу WPS Office входить текстовий процесор, система для створення презентацій і табличний процесор.

WPS Office поширюється як безкоштовно, так і за підпискою:

  • Персональна базова версія безкоштовна.
  • Повнофункціональна версія професійного класу доступна за передплату.
WPS Office має звичний для користувачів MS Office інтерфейс та майже 100% суміснісний з форматами MS Office. Використання формату документів ODF потребує встановлення додаткового розширення.
WPS Writer

WPS Writer

Для встановлення WPS Office у систему Linux Ubuntu слід виконати наступні кроки:

  1. Завантажити версію відповідної розрядності із сайту https://linux.wps.com/ і зберегти в окремий каталог.
  2. Встановити завантажений пакунок. Для цього відкрити вікно терміналу у каталозі, де був збережений завантажений deb-пакунок і виконати команду, на зразок:
sudo dpkg -i wps-office_11.1.0.9719.XA_amd64.deb
  1. Інтерфейс українською.
    1. Завантажити архів uk_UA.7z з файлами локалізації і розпакувати в окремий каталог.
    2. Використовуючи термінал, скопіювати каталог uk_UA з файлами локалізації інтерфейсу по шляху:
sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/mui/
  1. Локалізація стартової сторінки.
    1. Створити окремий каталог uk_UA для файла локалізації стартової сторінки WPS Office.
    2. Завантажити файл локалізації kstartpage.qm у створений каталог uk_UA.
    3. Використовуючи термінал, скопіювати каталог uk_UA з файлом локалізації kstartpage.qm по шляху:
sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/addons/kstartpage/mui/
  1. Український словник для перевірки правопису.
    1. Завантажити архів uk_UA.zip словника і розпакувати в окремий каталог.
    2. Використовуючи термінал, скопіювати каталог uk_UA з файлами словника по шляху:
sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/dicts/spellcheck/
  1. Перезапустити WPS Office.

Скрипт встановлення WPS Office з українським інтерфейсом

Встановлення WPS Office з українським інтерфейсом можна виконати в автоматичному режимі за допомогою скрипта, написаного на Python.

Для цього необхідно виконати такі кроки:

  1. Завантажити архів office_wps_2019_script.zip і розпакувати у певний каталог.
  2. Завантажити .deb-пакунок WPS Office з офіційного сайту і розмістити поруч з файлом install_wps.py.
  3. Виконати у терміналі із каталогу скрипта команду python3 install_wps.py, ввести пароль адміністратора і натиснути Enter.

6.3.3. Scribus

Scribus – це видавнича система і програма для створення публікацій, яка дозволяє створювати плакати, журнали та книги. Scribus підтримує основні типи текстових та графічних файлів, колірну схему CMYK і може використовуватися для створення макету сторінок та підготовки файлів для друку, створення PDF-файлів.

Видавнича система Scribus

Видавнича система Scribus

Існують версії програми для різних систем, в тому числі, і для Linux, зокрема, Ubuntu. Позиціонується як відкрита та безкоштовна альтернатива видавничим системам QuarkXPress та Adobe InDesign .

Для встановлення останньої версії програми Scribus можна скористатися застосунком Ubuntu Software (Програми Ubuntu).

6.4. Мультимедіа

Операційна система Linux є пристосованою для роботи з різними мультимедійними даними. Існує достатня кількість програм для обробки звуку, зображень і відео, встановлення яких в Ubuntu розглядається нижче.

6.4.1. Графічні редактори

Растровий редактор Pinta

Pinta – простий у використанні, легкий растровий графічний редактор.

Графічний растровий редактор Pinta

Графічний растровий редактор Pinta

Для встановлення останньої версії програми Pinta можна скористатися застосунком Ubuntu Software (Програми Ubuntu). Для встановлення нової версії використовуйте джерело snapcraft.io.
Растровий редактор GIMP

GIMP (The GNU Image Manipulation Program) – безкоштовний растровий графічний редактор, із підтримкою векторної графіки.

Символом GIMP є койот Вілбер (Wilber). Програма працює у різних системах, в тому числі, і в Linux.

Графічний растровий редактор GIMP

Графічний растровий редактор GIMP

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

GIMP доступний в офіційному репозиторії Ubuntu. Для того, щоб встановити GIMP, виконайте в терміналі наступну команду

sudo apt install gimp

В офіційних репозиторіях не завжди знаходиться остання версія.

GIMP можна встановити через застосунок Ubuntu Software (Програми Ubuntu), використовуючи джерело snapcraft.io для встановлення нової версії.

Для встановлення актуальної версії можна використати сховище PPA, виконавши у терміналі наступні команди

sudo add-apt-repository ppa:ubuntuhandbook1/gimp
sudo apt install gimp
Векторний редактор Inkscape

Inkscape – вільний редактор векторної графіки з можливостями, подібними до можливостей Illustrator, CorelDraw.

Рідним форматом Inkscape є SVG , окрім того, редактор підтримує читання і запис зображення у форматах OpenDocument Drawing, DXF, PNG, WMF, PDF, EPS та інших.

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

Графічний векторний редактор Inkscape

Графічний векторний редактор Inkscape

Для встановлення актуальної версії використайте наступні команди у терміналі

sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt install inkscape

6.4.2. Плеєри

Rhyntmbox

Rhythmbox – вільний аудіопрогравач і каталогізатор для графічного середовища GNOME. Призначений для зручного прослуховування музики, впорядкування музичної колекції, здатний програвати усі поширені аудіоформати.

Аудіоплеер Rhythmbox використовується за замовчуванням в дистрибутиві Ubuntu.
SMPlayer

SMPlayer – це один з найпростіших мультимедійних плеєрів для Linux. Програма встановлюється з вбудованими кодеками, і готова відкрити усі популярні формати з коробки.

Мультимедійний плеєр SMPlayer

Мультимедійний плеєр SMPlayer

Щоб встановити SMPlayer, виконайте у терміналі наступні команди

sudo add-apt-repository ppa:rvm/smplayer
sudo apt-get install smplayer smplayer-themes smplayer-skins

Для видалення програми SMPlayer виконайте у терміналі команди

sudo apt remove smplayer

6.4.3. Аудіоредактори

Audacity

Audacity – вільний багатоплатформовий редактор звукових файлів, орієнтований на роботу з декількома доріжками. Дозволяє виконувати такі функції, як редагування звукових файлів (Ogg Vorbis, FLAC, MP3 і WAV), запис, оцифрування звуку, зміна параметрів звукового файла, накладення треків і застосування ефектів (наприклад, приглушення шуму, зміна темпу і тону).

Аудіоредактор Audacity

Аудіоредактор Audacity

Audacity можна встановити через застосунок Ubuntu Software (Програми Ubuntu), використовуючи джерело snapcraft.io для встановлення нової версії.

6.4.4. Відеоредактори

Kdenlive

Kdenlive – вільна система нелінійного відеомонтажу початкового рівня.

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

Відеоредактор Kdenlive

Відеоредактор Kdenlive

Для встановлення відеоредактора Kdenlive в Ubuntu використаємо сховище PPA і наступні команди

sudo add-apt-repository ppa:kdenlive/kdenlive-stable
sudo apt install kdenlive

Для видалення Kdenlive використайте у терміналі наступну команду

sudo apt remove --autoremove kdenlive

6.4.5. 3D-редактори

Sweet Home 3D

Sweet Home 3D – безкоштовний Java-застосунок дизайну інтер’єру з швидким вибором та розміщенням меблів у 2D-плані будинку з можливістю 3D-перегляду.

Створення дизайну інтер’єру у Sweet Home 3D

Створення дизайну інтер’єру у Sweet Home 3D

Для встановлення програми Sweet Home 3D можна скористатися застосунком Ubuntu Software (Програми Ubuntu), використовуючи джерело snapcraft.io для встановлення нової версії.
Blender

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

Для встановлення програми Blender можна скористатися застосунком Ubuntu Software (Програми Ubuntu), використовуючи джерело snapcraft.io для встановлення нової версії.

6.5. Навчальні програми

6.5.1. GCompris

GCompris – комплекс навчального програмного забезпечення, що складається з багатьох вправ для дітей від 2 до 10 років, які є ігровими і містять елементи навчання. У поточній версії GCompris понад 100 вправ. GCompris є вільним програмним забезпеченням.

Навчальне програмне забезпечення GCompris

Навчальне програмне забезпечення GCompris

Для встановлення GCompris слідуйте вказівкам з офіційного сайту програми.

6.6. Системи програмування

6.6.1. Lazarus

Lazarus – вільне середовище розробки програмного забезпечення для компілятора Free Pascal Compiler. Інтегроване середовище розробки надає можливість багатоплатформової розробки застосунків в Delphi-подібному оточенні.

Середовище програмування Lazarus

Середовище програмування Lazarus

Для встановлення Lazarus в Ubuntu необхідно виконати кілька кроків.

  1. Завантажити deb-пакунки із офіційного сайту відповідної розрядності, наприклад, 64-бітні:
    1. fpc-src_3.2.0-1_amd64.deb (джерела fpc та його пакунки, необхідні для перегляду коду)
    2. fpc-laz_3.2.0-1_amd64.deb (компілятор, деякі інструменти командного рядка, базові блоки та невізуальні компоненти, такі як доступ до бази даних)
    3. lazarus-project_2.0.10-0_amd64.deb (IDE, візуальні компоненти та файли довідки)
  2. Встановити завантажені пакунки в такому порядку, як показано у списку вище, за допомогою утиліти dpkg. Для цього у терміналі необхідно виконати подану нижче команду три рази (кожен раз з новою назвою пакунку)
sudo dpkg -i назва_пакунку.deb

У разі появи помилок при встановленні пакунків (іноді, при роботі з упорядниками пакунків, виникає проблема з неналаштованими залежностями пакунків) виконайте у терміналі команду

sudo apt -f install
Ще одним способом встановлення програми є використання упорядника пакунків Synaptic.

6.6.2. Geany

Geany – вільний текстовий редактор з базовими елементами інтегрованого середовища розробки, доступний для різних операційних систем, в тому числі, і Linux.

Текстовий редактор Geany

Текстовий редактор Geany

Для встановлення Geany в Ubuntu використаємо сховище PPA і наступні команди у терміналі

sudo add-apt-repository ppa:geany-dev/ppa
sudo apt install geany

6.6.3. Sublime Text

Sublime Text 3 – швидкий кросплатформенний текстовий редактор.

Sublime Text не є вільним чи відкритим програмним забезпеченням, але деякі його плагіни розповсюджуються з вільною ліцензією, розробляються і підтримуються спільнотою розробників.

Редактор можна використовувати вільно, хоча, час від часу, з’являється повідомлення про придбання ліцензії і у рядку заголовка програми присутній напис UNREGISTERED.

Текстовий редактор Sublime Text

Текстовий редактор Sublime Text

Для встановлення Sublime Text в Ubuntu необхідно виконати кілька кроків.

  1. Встановити ключ GPG
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
  1. Переконатися, що apt створено для роботи з джерелами https
sudo apt install apt-transport-https
  1. Вибрати канал для використання стабільної версії програми
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
  1. Оновити джерела програмного забезпечення та встановити Sublime Text
sudo apt update
sudo apt install sublime-text

6.6.4. Processing

Processing – інтегроване середовище розробки (IDE) та мова програмування, основана на Java , для вивчення програмування в контексті візуального мистецтва.

В Processing можна додати режими альтернативних інтерфейсів для програмування – JavaScript (p5js.org ), Python та інші. Завдяки цьому, Processing – це не просто одна мова, а художньо-орієнтований підхід до навчання, викладання та творчості за допомогою коду.
Середовище програмування Processing IDE

Processing IDE: бета-версія гілки 4.x – 4.0 beta 1 (9 серпня 2021 року)

Для встановлення Processing необхідно завантажити файл-архів з офіційного сайту, розпакувати і запустити на виконання файл install.sh (для видалення застосунку запустити на виконання файл uninstall.sh). Відкрити Processing можна за допомогою кнопки Показати програми Утиліта Показати програми в Ubuntu, що розташована на панелі обраних застосунків.

6.7. Віддалене керування в локальній мережі

6.7.1. Epoptes

Epoptes – інструмент керування та моніторингу комп’ютерів мережі. Програма дозволяє здійснювати трансляцію та моніторинг на екрані, віддалене виконання команд, відправлення повідомлень, накладання обмежень, таких як блокування екрана або звуку та багато іншого.

Віддалене керування з програмою Epoptes

Віддалене керування з програмою Epoptes

Epoptes складається з серверного пакунку під назвою epoptes і клієнтського пакунку під назвою epoptes-client.

Серверний пакунок встановлюють на комп’ютер, з якого буде здійснюватись контроль клієнтів, а клієнські пакунки, відповідно, – на інші комп’ютери мережі.
Сервер
  1. Встановити серверний пакунок на комп’ютер (teacher), з якого буде здійснюватись керування комп’ютерами-клієнтами, виконавши у терміналі команду
sudo apt install epoptes
sudo apt install --install-recommends epoptes
  1. Далі необхідно додати користувачів до групи epoptes, яким буде дозволено запускати графічний інтерфейс програми та керувати клієнтами (щоб зміни почали діяти, необхідно вийти із системи і знову залогуватись)
teacher@teacher-VirtualBox:~$ sudo gpasswd -a teacher epoptes
Додавання нового користувача teacher до групи epoptes
Клієнт
  1. Перш ніж встановити пакунок epoptes-client на комп’ютер клієнта (student), необхідно повідомити клієнту, як зв’язатися з комп’ютером-сервером.
Розглянемо варіант, коли комп’ютер-сервер epoptes має статичну IP-адресу.
  1. Виконайте у терміналі команду
sudo nano /etc/hosts

на усіх клієнських комп’ютерах і у файлі /etc/hosts запишіть рядок у форматі ip_адреса server, де ip_адреса – статична IP-адреса комп’ютера-сервера в мережі (наприклад, рядок може бути таким 192.168.1.20 server).

  1. Натисніть сполучення клавіш Ctrl+X, а потім клавішу Y для збережння змін у файлі.
  1. Виконайте наступні команди у терміналі від суперкористувача
sudo apt install --install-recommends epoptes-client
sudo epoptes-client -c # Завантажує сертифікат OpenSSL із сервера
Зверніть увагу, що пакункам заборонено запускати програми всередині сеансу користувача, тому необхідно перезавантажити комп’ютери-клієнти, щоб встановлення epoptes-client набуло чинності.

7. Мережа

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

7.1. IP-адреси та імена комп’ютерів

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

Щоб дізнатися IP-адресу комп’ютера у локальній мережі, використовують одну з команд:

  • ip addr show;
  • hostname -I.

Інформація про усі мережеві підключення на даному комп’ютері, в результаті виконання поданих команд у терміналі, може буде такою

teacher@teacher-VirtualBox:~$ hostname -I
192.168.1.9 
teacher@teacher-VirtualBox:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo 
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:47:51:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.9/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3 
       valid_lft 6830sec preferred_lft 6830sec
    inet6 fe80::75a3:fcf1:3301:5d4a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
teacher@teacher-VirtualBox:~$
  1. Результатом виконання команди hostname -I є 192.168.1.9IP-адреса комп’ютера в локальній мережі.
  2. Виконання команди ip addr show має кілька результатів, які записані після слова inet. Перший з них – це 127.0.0.1 – внутрішня IP-адреса комп’ютера, яка потрібна для того, щоб програми могли взаємодіяти між собою в межах цього комп’ютера, використовуючи мережеві протоколи (наприклад, так браузер може отримати доступ до локального вебсерверу).
  3. Другий результат виконання команди ip addr show192.168.1.9IP-адреса комп’ютера в локальній мережі.

Для того, щоб дізнатися, які IP-адреси є вільними або вже зайнятими в локальній мережі, можна використати команду nmap.

Пакунок nmap за замовчуванням не входить в дистрибутив Ubuntu, тому спочатку його необхідно встановити.

Для установки пакунку nmap у терміналі необхідно виконати команду

sudo apt install nmap

або

sudo snap install nmap

Для отримання списку IP-адрес команда nmap використовує такий синтаксис (опція -v дозволяє виводити більше інформації в процесі сканування)

nmap -v -sn 192.168.1.9/24

де 192.168.1.9IP-адреса комп’ютера, на якому запускається команда nmap. Опція -sn забороняє сканування портів у разі виявлення комп’ютера в мережі, а лише роздруковує наявні хости, які відповіли на запит виявлення хоста.

Як правило, ім’я комп’ютера або, по-іншому, ім’я хоста (hostname), вказується під час встановлення операційної системи і не змінюється в процесі використання системи. Це ім’я постійно присутнє в терміналі перед запрошенням введення команди. Наприклад, у такому записі

teacher@teacher-VirtualBox:~$

ім’ям комп’ютера буде teacher-VirtualBox. Окрім того, дізнатися поточне ім’я комп’ютера можна, виконавши команду hostname у терміналі:

teacher@teacher-VirtualBox:~$ hostname
teacher-VirtualBox
Не використовуйте два однакових імені для комп’ютерів в одній локальній мережі, оскільки це може викликати проблеми з різними мережевими сервісами, але найочевидніше – не можна буде ідентифікувати окремий комп’ютер.

Якщо виникає потреба у редагуванні імені комп’ютера, необхідно звернутися до файлів hosts і hostname, які можна відкрити, виконавши у терміналі відповідні команди

sudo gedit /etc/hosts

і

sudo gedit /etc/hostname

Далі у файлах замінити старі назви на нові і зберегти зміни. Після усіх проведених дій комп’ютер необхідно перезавантажити.

7.2. Менеджер мережі

В Ubuntu найпростішим варіантом налаштування підключення до мережі виконується за допомогою програми Network Manager, яка дозволяє здійснювати налаштування різних видів підключень.

Аплет (значок) самої програми знаходиться в області повідомлень (поряд із значками розкладки клавіатури, гучності, живлення). Ось так виглядає аплет (зображення трьох, з’єднаних між собою, комп’ютерів) із вже підключеним дротовим з’єднанням до мережі

Аплет програми Network Manager

Аплет програми Network Manager

Якщо клікнути мишкою по цьому значку, то відкриється меню, в якому буде відображатися реальна інформація про доступні і активні підключення (дротові і бездротові), якщо такі були встановлені

Інформація про доступні і активні підключення

Інформація про доступні і активні підключення: активне дротове підключення

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

Інформація про мережеві з’єднання

Інформація про мережеві з’єднання

У вікні, що відкрилося, на вкладці Подробиці можна переглянути узагальнену інформацію про з’єднання (швидкість сполучення, IP-адресу, типовий маршрут тощо)

Подробиці налаштування дротового з’єднання

Деталі дротового мережевого з’єднання

На вкладці Засвідчення можна змінити інформацію про назву з’єднання і MAC-адресу з’єднання

Назва дротового з’єднання

Налаштування дротового мережевого з’єднання: назва і MAC-адреса

За замовчуванням, у версії Ubuntu для настільних комп’ютерів, увімкнено DHCP. Таким чином, якщо у мережі є сервер DHCP (варіант з роутером, який під’єднаний до провайдера Інтернету), комп’ютер автоматично отримає динамічну IP-адресу.

Для встановлення статичної IP-адреси необхідно перейти на вкладку IPv4

Налаштування статичної IP-адреси дротового з’єднання

Налаштування статичної IP-адреси дротового з’єднання

і змінити Автоматично (DHСP) на Вручну, а потім вказати:

  • IP-адресу комп’ютера (у даному випадку, для поточного комп’ютера це 192.168.1.21, для інших комп’ютерів локальної мережі IP-адреси можуть мати вигляд, наприклад, 192.168.1.10, 192.168.1.23, 192.168.1.34 тощо);
  • маску мережі (однакова для усіх комп’ютерів мережі, для вищезгаданих IP-адрес (клас C) – 255.255.255.0);
  • адресу шлюза (однакова для усіх комп’ютерів мережі – 192.168.1.2IP-адреса роутера);
  • за потреби, вказати DNS-сервери через кому (8.8.8.8 – адреса публічного сервера Google).

Після встановлення або зміни параметрів мережевого з’єднання необхідно натиснути кнопку Застосувати, зберегти зміни і перезапустити мережеву службу перемикачем

Перезапуск мережевої служби

Перезапуск мережевої служби

7.3. Доступ до спільних ресурсів

Дуже часто необхідно надати доступ до певних ресурсів одного комп’ютера іншим користувачам в локальній мережі.

Спільні ресурси часто називають Shared-ресурсами (від англ. Shared – спільний, спільного користування). Про сам ресурс говорять, що його необхідно розшарити (поширити по мережі). У випадку каталогу (теки), як спільного ресурсу, це значить відкрити загальний доступ до його вмісту.

7.3.1. Налаштування спільного доступу

Для прикладу, створимо каталог Shared_Folder у домашньому каталозі і розшаримо його, щоб вміст каталогу був доступний іншим комп’ютерам в локальній мережі.

Для цього, в контекстному меню каталогу Shared_Folder необхідно вибрати Властивості (Ctrl+I) і перейти на вкладку Спільний доступ для мережі

Спільний доступ до каталогу в Ubuntu

Спільний доступ до каталогу в Ubuntu

Якщо відзначити прапорцем Поділитися цією текою і натиснути кнопку Створити спільний ресурс, то каталог Shared_Folder стане доступним іншим користувачам у локальній мережі (значок каталогу буде доповнено значком загального доступу – трьома з’єднаними колами)

Значок розшареного каталогу Shared_Folder в Ubuntu

Значок розшареного каталогу Shared_Folder в Ubuntu

Якщо доступ до ресурсу надається перший раз, то система запропонує встановити Службу спільних ресурсів

Встановлення служби спільних ресурсів

Встановлення служби спільних ресурсів

Після згоди на встановлення цієї служби, з’явиться вікно встановлення пакунку, що називається Samba

Samba – набір програм, що використовуються для організації загального доступу до файлів і принтерів з різних пристроїв.
Інформація про встановлення комплекту програмного забезпечення Samba

Інформація про встановлення комплекту програмного забезпечення Samba

Встановлюємо пакунок Samba, натиснувши на кнопку Встановити

Процес встановлення комплекту програмного забезпечення Samba

Процес встановлення комплекту програмного забезпечення Samba

7.3.2. Підключення до спільного каталогу Ubuntu із Windows

Створимо ще один каталог UbuntuFiles у домашньому каталозі і розшаримо його, щоб вміст каталогу був доступний іншим комп’ютерам в локальній мережі, зокрема із Windows.

Спільний доступ до каталогу UbuntuFiles в Ubuntu

Спільний доступ до каталогу UbuntuFiles в Ubuntu

Для доступу до розшареного каталогу UbuntuFiles в Ubuntu із Windows спочатку необхідно дізнатися IP-адресу або назву комп’ютера, на якому знаходиться UbuntuFiles. Наприклад, це можна зробити командами hostname -I або hostname відповідно, виконавши їх у терміналі.

Після чого у системі Windows необхідно ввести в адресний рядок Провідника два звортних слеша \\, а потім IP-адресу або назву комп’ютера з системою Ubuntu і натиснути Enter. Після цього будуть відображені усі розшарені каталоги на Ubuntu-машині

Спільний доступ до каталогу UbuntuFiles в Ubuntu із Windows

Спільний доступ до каталогу UbuntuFiles в Ubuntu із Windows

Але, якщо спробувати зайти у каталог UbuntuFiles, то отримаємо помилку доступу. Для виправлення цієї помилки необхідно у властивостях загального доступу даного каталогу відзначити прапорцем опцію Гостьовий доступ (для людей без облікового запису) і натиснути кнопку Змінити спільний ресурс.

Гостьовий доступ до каталогу UbuntuFiles

Гостьовий доступ до каталогу UbuntuFiles

Повторна спроба зайти у каталог UbuntuFiles вже є успішною і можна побачити його вміст

Гостьовий доступ до каталогу UbuntuFiles

Гостьовий доступ до каталогу UbuntuFiles

Але, якщо у Windows спробувати створити, змінити або видалити файл/каталог на Ubuntu-машині, то знову з’явиться помилка – відсутній дозвіл на виконання таких дій.

У таких випадках, якщо необхідно, щоб користувачі інших комп’ютерів мережі мали змогу не лише читати, але і створювати, змінювати або видаляти файли/каталоги всередині розшареного каталогу UbuntuFiles, у властивостях загального доступу каталогу UbuntuFiles необхідно відзначити прапорцем Дозволити іншим створювати та видаляти файли в цій теці і натиснути Змінити спільний ресурс

Налаштування спільного доступу до каталогу UbuntuFiles

Налаштування спільного доступу до каталогу UbuntuFiles

Після чого система запитає про зміну прав на розшарений каталог

Зміна прав доступу до каталогу UbuntuFiles

Зміна прав доступу до каталогу UbuntuFiles

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

Підключатися до розшареного таким чином каталогу можуть не лише користувачі Windows, але й користувачі Ubuntu.

7.3.3. Підключення до спільної папки Windows із Ubuntu

Створимо і розшаримо у Windows папку під назвою WinFiles. Відкриємо властивості папки WinFiles і перейдемо на вкладку Спільний доступ.

Спільний доступ до папки WinFiles у Windows

Спільний доступ до папки WinFiles у Windows

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

Додавання групи Всі для спільного доступу до папки WinFiles у Windows

Додавання групи Всі для спільного доступу до папки WinFiles у Windows

Необхідно вказати для доданої групи Всі права доступу і натиснути кнопку Дозволити спільний доступ

Додавання для групи Всі прав доступу до папки WinFiles у Windows

Додавання для групи Всі прав доступу до папки WinFiles у Windows

Далі відкриємо Додаткові настройки спільного доступу… і відзначимо опцію Дозволити спільний доступу до цієї папки

Доступ до папки WinFiles у Windows

Доступ до папки WinFiles у Windows

Натиснувши кнопку Дозволи, можна змінити права на читання чи зміну спільного ресурсу WinFiles для групи або користувачів

Дозволи для ресурсу WinFiles у Windows

Дозволи для ресурсу WinFiles у Windows

Отже, папка WinFiles у системі Windows розшарена, тепер необхідно підключитися до неї із Ubuntu. Для цього треба дізнатися повний мережевий шлях до папки WinFiles у системі Windows. Мережевий шлях вказаний на вкладці Спільний доступ властивостей папки WinFiles і, у даному випадку, має значення \\USERSOFT\WinFiles.

Замість назви комп’ютера USERSOFT можна використовувати IP-адресу комп’ютера з Windows, яку можна дізнатися, відкривши вікно командного рядка сполученням клавіш Win+R і увівши команду ipconfig.

Відкриваємо файловий менеджер Nautilus (Файли) в Ubuntu. Обираємо пункт Інші місця і у рядок З’єднатись із сервером вводимо smb і мережевий шлях до папки WinFiles у системі Windows, не забуваючи змінити зворотні слеші на прямі, після чого натискаємо З’єднатись

Мережевий шлях до папки WinFiles у Windows

Мережевий шлях до папки WinFiles у Windows

Далі з’явиться вікно з повідомленням про авторизацію

Авторизація в Ubuntu при з’єднанні з папкою WinFiles у Windows

Авторизація в Ubuntu при з’єднанні з папкою WinFiles у Windows

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

Вимкнення спільного доступу із захистом паролем у Windows

Вимкнення спільного доступу із захистом паролем у Windows

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

Для зручності і швидкого доступу до мережного ресурсу, можна додати його через контекстне меню (або сполученням клавіш Ctrl+D) в закладки файлового менеджера Nautilus (Файли).

Створення закладки на мережевий ресурс у файловому менеджері Nautilus (Файли) в Ubuntu

Створення закладки на мережевий ресурс у файловому менеджері Nautilus (Файли) в Ubuntu

7.4. Монтування мережевих ресурсів

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

Давайте розглянемо ще один спосіб, як виконати підключення мережевої папки Windows до файлової системи Linux на прикладі операційної системи Ubuntu.

Для початку, у Windows створимо папку mount_share і розшаримо її, встановивши відповідні права на доступ до неї певному користувачу.

Підтримку мережевих ресурсів Windows в Linux забезпечує пакунок cifs-utils (Common Internet File System utilities), який можна встановити за допомогою термінала

sudo apt install cifs-utils

Наступним кроком буде створення каталогу, наприклад winshare, в /mnt (або у будь-якому іншому місці) в Ubuntu, у який буде підключатися мережева папка mount_share

sudo mkdir /mnt/winshare

І накінець, підключення мережевої папки mount_share в Ubuntu виконується за допомогою команди mount.cifs

sudo mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o username=WIN_USER_NAME,password=WIN_USER_PASSWORD

Така команда виконує приєднання до файлової системи Ubuntu мережевої папки Windows з ім’ям SHARE_NAME, яка розміщена на комп’ютері Windows з IP-адресою SERVER_IP, від імені користувача WIN_USER_NAME з паролем WIN_USER_PASSWORD. З конкретними значеннями запис команди mount.cifs буде таким

sudo mount.cifs //192.168.1.6/mount_share /mnt/winshare -o username=Sasha,password=1
Значення SERVER_IP (адресу комп’ютера з Windows) можна дізнатися, відкривши вікно командного рядка сполученням клавіш Win+R і увівши команду ipconfig.

Для монтування публічних мережевих ресурсів ім’я користувача і пароль не задаються

sudo mount.cifs //192.168.1.6/mount_share /mnt/winshare

У більшості випадків цього достатньо, якщо ви працюєте від імені користувача суперкористувача. Якщо від імені суперкористувача виконується лише підключення мережевої папки Windows, а працювати з нею планується від імені звичайного користувача, то в якості опцій команді mount.cifs необхідно передати значення UID (числовий індентифікатор користувача) і GID (числовий індентифікатор основної групи) цього користувача, інакше, швидше за все, операції редагування файлів і каталогів будуть недоступними.

Отримати UID і GID користувача можна командою

grep LINUX_USER_NAME /etc/passwd

Замість LINUX_USER_NAME треба підставити ім’я користувача Ubuntu, під яким необхідно виконувати підключення до розшареної папки Windows.

Наприклад, для користувача Ubuntu з ім’я student виконання вищезгаданої команди може мати такий результат

teacher@teacher-VirtualBox:~$ grep student /etc/passwd
student:x:1001:1001:Учень,,,,:/home/student:/bin/bash

Значення після двокрапки на 3-му і 4-му місці вказують на UID та GID користувача student. Тепер необхідно підставити отримані значення в якості додаткових аргументів команди mount.cifs

sudo mount.cifs //192.168.1.6/mount_share /mnt/winshare -o username=Sasha,password=1,uid=1001,gid=1001

У синтаксис команди mount.cifs можна додати інформацію про права доступу і кодування. Для цього використовують такі параметри

  • iocharset=utf8 – кодування;
  • file_mode=0755 – права доступу до файлів;
  • dir_mode=0755 – права доступу до каталогів.
Права доступу 0755 – кожен користувач може читати та запускати на виконання, власник може редагувати.

Враховуючи ці додаткові параметри, результуючий запис команди mount.cifs може бути таким

sudo mount.cifs //192.168.1.6/mount_share /mnt/winshare -o username=Sasha,password=1,uid=1001,gid=1001,iocharset=utf8,file_mode=0755,dir_mode=0755

Щоб мережева папка Windows автоматично підключалась разом із завантаженням Ubuntu, необхідно внести відповідну інформацію у файл /etc/fstab, тобто записати у кінець файла наступний рядок

//192.168.1.6/mount_share /mnt/winshare cifs user=WIN_USER_NAME,password=WIN_USER_PASSWORD,uid=1001,gid=1001 0 0

Варто зазначити, що у цьому випадку пароль зберігатиметься у відкритому вигляді, доступному для читання усім. Виправимо цей недолік. Створимо файл /etc/credentials (ім’я може бути довільним)

sudo gedit /etc/credentials

з таким вмістом

username=WIN_USER_NAME
password=WIN_USER_PASSWORD
domain=WIN_WORKGROUP

Або у випадку із конкретними значеннями

username=Sasha
password=1
domain=WORKGROUP
Щоб дізнатися, яка робоча група використовується у Windows, необхідно відкрити командний рядок ( Win+R , потім ввести cmd) і виконати команду: net config workstation. Значення робочої групи буде записано у рядку Workstation domain.

Зробимо файл /etc/credentials доступним для читання і редагування лише для суперкористувача

sudo chmod 600 /etc/credentials

Тепер команда mount.cifs при ручному монтуванні мережевої папки Windows в Ubuntu матиме наступний синтаксис

sudo mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o credentials=/etc/credentials,uid=1001,gid=1001

або у нашому випадку

sudo mount.cifs //192.168.1.6/mount_share /mnt/winshare cifs credentials=/etc/credentials,uid=1001,gid=1001

А при автоматичному монтуванні, при внесенні інформації у файл /etc/fstab, синтаксис буде таким

//SERVER_IP/SHARE_NAME /mnt/winshare cifs credentials=/etc/credentials,uid=1001,gid=1001 0 0

Остаточний варіант запису у файл /etc/fstab з конкретними значеннями може мати такий вигляд

//192.168.1.6/mount_share /mnt/winshare cifs credentials=/etc/credentials,uid=1001,gid=1001 0 0

Після усіх налаштувань, необхідно перезавантажити комп’ютер з Windows. Або, у випадку підключення із fstab, без перезавантаження необхідно виконати команду

sudo mount -a

Тепер вміст мережевої папки mount_share з Windows буде доступний у каталозі /mnt/winshare файлової системи Ubuntu.

Словник: основні поняття

adduser (від англ.add user – додати користувача)

команда для створення нових облікових записів користувачів у системах Linux. Після запуску команди разом із введеним новим іменем користувача запитує інформацію, необхідну для створення облікового запису. apt (від англ.advanced packaging tool), упорядник пакунків, менеджер пакунків

програма для роботи з пакунками програм в операційних системах Linux Debian, і заснованих на них – Ubuntu, Linux Mint та інших. ASCII (акронім від назви Американський стандартний код для інформаційного обміну, від англ.American Standard Code for Information Interchange)

система кодів, у якій числа від 0 до 127 включно поставлені у відповідність літерам, цифрам і символам пунктуації. Наприклад, 45 відповідає знаку перенесення, а 65 – великій латинській літері A. Перші 32 коди використовуються для керівних функцій, на зразок введення і стирання попереднього символу. Строго кажучи, ASCII – це семибітний код, а восьмий біт часто використовується для забезпечення відповідності чи для додаткових символів. Такий 8-бітний варіант коду називають розширеним ASCII. Система широко використовується для зберігання тексту і передачі інформації між комп’ютерами. BIOS (від англ.Basic Input/Output System – базова система введення/виведення)

у IBM PC-сумісних комп’ютерах – тип firmware («прошивки»), що зберігається у постійній пам’яті і виконує початкову ініціалізацію комп’ютера після його увімкнення (перевірка і тестування обладнання, а потім вже завантаження завантажувача операційної системи). BIOS має псевдографічний інтерфейс, управління за допомогою клавіш та лише налаштування обладнання. Мікросхема BIOS вбудована в материнську плату комп’ютера. cat (від англ.concatenate)

утиліта UNIX, що виводить послідовно зазначені файли (або пристрої), об’єднуючи їх в єдиний потік. Якщо замість імені файла вказується -, то зчитується стандартний потік введення. За допомогою cat можна дуже просто подивитися вміст невеликого файла, склеїти кілька файлів тощо. cd (від англ.change directory – змінити каталог)

команда командного рядка для зміни поточного каталогу в Unix, DOS та інших операційних системах. chmod

утиліта UNIX-подібних операційних систем, яка використовується для зміни прав на файли та каталоги. chown

UNIX‐утиліта, що змінює власника і/або групу для вказаних файлів. cp (від англ.copy)

команда Unix, призначена для копіювання файлів з одного каталогу в інші. Початковий файл залишається незмінним, ім’я створеного файла може бути таким же, як у початкового, або змінитися. cron (від грец.Chronos – час)

утиліта в операційних системах Unix і Linux, яка дозволяє користувачам виконувати команди або скрипти (групи команд) автоматично в заданий час. Кожен користувач системи має свій файл завдань crontab (cron табулятор), в якому описано, в який час і які команди і програми запускати від імені цього користувача. cut (від англ.cut – вирізати)

утиліта UNIX, що друкує вибрані частини рядків (з кожного файла) на стандартний потік виведення. Витяг сегментів рядків відбувається по байтах (-b), по символах (-c), або по полях (-f), обмежених розділювачами (-d – символ табуляції за замовчуванням). Діапазон вибраних частин рядків може бути встановлений такими варіантами: N, N-M, N- (від N і до кінця рядка), або -M (від початку рядка до M), де N і M – порядкові номери. date

команда, яка виводить поточну дату. deluser

команда для видалення облікових записів користувачів у системах Linux. DHCP (від англ.Dynamic Host Configuration Protocol – протокол динамічної конфігурації вузла)

стандартний протокол прикладного рівня, який дозволяє комп’ютерам автоматично отримувати IP-адресу та інші параметри, необхідні для роботи в мережі: IP-адреса маршрутизатора за замовчуванням, маска підмережі, адреси серверів DNS. Для цього комп’ютер звертається відповідно до DHCP-сервера. echo

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

журнальна файлова система, в якій представлений механізм запису файлів в безперервні ділянки блоків (екстенти), що зменшує фрагментацію і підвищує продуктивність. В Ubuntu, починаючи з версії 9.10, ця файлова система використовується за замовчуванням встановлювачем при автоматичному розбитті диска. Filesystem Hierarchy Standard, FHS (Стандарт Ієрархії Файлової Системи)

стандарт, прийнятий для уніфікації розташування файлів і каталогів загального призначення у файловій системі операційних систем UNIX. Сьогодні, більшість UNIX-подібних систем, в тій або іншій мірі, слідують цим правилам. Наприклад, типова база даних про користувачів системи Linux завжди зберігається у файлі /etc/passwd. find

утиліта, яка використовується в UNIX-подібних операційних системах для пошуку файлів за іменами та іншими властивостями. Flatpak

програма для розгортання програмного забезпечення, керування пакунками та віртуалізації застосунків для настільних комп’ютерів Linux. Flatpak забезпечує ізольоване середовище, в якому користувачі можуть запускати програми окремо від решти системи. Програми, що використовують Flatpak, потребують дозволу користувача на керування апаратними пристроями або доступу до файлів користувача. GNU Privacy Guard (GnuPG або GPG)

відкритий програмний засіб для шифрування та цифрового підписування даних. GnuPG надає утиліти для шифрування даних, роботи з електронними підписами, управління ключами і для доступу до публічних сховищ ключів. GNU wget

неінтерактивна консольна утиліта для завантаження файлів за протоколами HTTP, HTTPS та FTP. wget дає змогу рекурсивно завантажувати файли, конвертувати посилання, вказувати складові посилання, які будуть оброблені програмою тощо. Програма портативна й запускається на багатьох UNIX-подібних системах, Microsoft Windows, macOS. GPT (GUID Partition Table – стандарт формату розміщення таблиць розділів на фізичному жорсткому диску)

частина Розширеного мікропрограмного інтерфейсу (від англ. Extensible Firmware Interface, EFI) – стандарту, запропонованого Intel на зміну BIOS. На відміну від MBR-запису, який починається з машинного коду, що шукає та ініціалізує завантаження з активного розділу, GPT використовує розширені можливості EFI для здійснення цих дій. GPT використовує LBA – сучасну лінійну схему адресації логічних блоків, замість адресації в MBR Циліндр – Головка – Сектор ( CHS). Проте MBR-запис присутній в самому початку диску (блок LBA0) як для захисту, так і з метою сумісності. GPT починається з Заголовка таблиці розділів (від англ. Partition Table Header), у блоці (LBA1), а сама таблиця розділів, зазвичай, міститься у наступному блоці – LBA2. Завдяки адресації LBA, GPT на відміну від MBR, може створювати розділи до 9,4 ЗБ, а цього найближчим часом цілком вистачить. GPT підтримує Unicode тому ви можете задавати імена та атрибути розділам на будь-якій з підтримуваних мов і звертатися до дисків за цими іменами. Мінусом або ще одним плюсом GPT є те, що при завантаженні перевіряються контрольні суми таблиць, а це значить, що якщо ви захочете щось змінити вручну, то система не завантажиться. В кінці диска є копія GPT, яка може використовуватися для відновлення пошкодженої основної таблиці розділів на початку диска. grep

утиліта командного рядка, яка знаходить рядки, що відповідають заданому регулярному виразу, і виводить їх. Назва цієї команди – це акронім англійської фрази search globally for lines matching the regular expression, and print themшукати скрізь рядки, відповідні регулярному виразу, і виводити їх. GRUB (від англ.GRand Unified Bootloader – Грандіозний уніфікований завантажувач)

завантажувач операційної системи від проєкту GNU. GRUB дозволяє користувачеві мати кілька встановлених операційних систем і при вмиканні комп’ютера вибирати одну з них для завантаження. GRUB – найпопулярніший завантажувач у світі Linux і є завантажувачем за замовчуванням у більшості відомих дистрибутивів. head

утиліта в UNIX-подібних операційних системах, що виводить перші n рядків з файла, за замовчуванням n дорівнює 10. inode (індексний дескриптор)

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

файл, що має тип .iso і містить дані, які використовуються для інсталяцій (встановлення) програмного забезпечення чи операційних систем. Java Runtime Environment (JRE, середовище виконання дляJava)

мінімальна реалізація віртуальної машини, що необхідна для виконання Java-застосунків, без компілятора й інших засобів розробки. Складається з віртуальної машини – Java Virtual Machine – та бібліотеки Java-класів. less

програма для текстових терміналів UNIX-подібних систем, яка використовується для перегляду (але не зміни) вмісту текстових файлів на екрані. Відображає вміст файла з можливістю прокручування. Linux (укр. Лінукс, повна назва – GNU/Linux)

загальна назва UNIX-подібних операційних систем на основі однойменного ядра. ln (від англ.link – посилання, зв’язувати)

Unix-програма для створення жорстких або символьних посилань на файли або каталоги у файловій системі. ls (від англ.list – список)

утиліта UNIX-подібних систем, яка виводить вміст каталогу файлової системи та інформацію про файли. LTS (від англ.Long Term Support)

довгострокова підтримка. MAC-адреса (від англ.Media Access Control – управління доступом до носія)

унікальний ідентифікатор, що зіставляється з різними типами устаткування для комп’ютерних мереж (мережева карта, роутер тощо). MBR (від англ.Master Boot Record – головний завантажувальний запис)

перший фізичний сектор на жорсткому диску або іншому носії інформації, якщо цей пристрій можна поділити на логічні диски (розділи). Призначення MBR – не завантаження операційної системи, а всього лише вибір, з якого розділу виконувати завантаження. MBR-запис знаходиться на самому початку диска, якщо точніше, то він займає перші 512 байт. Він містить інформацію, про те, які логічні і розширені розділи є на цьому пристрої, тобто містить таблицю розділів (partition table). Крім того в MBR знаходиться виконуваний код, який може сканувати розділи в пошуках операційної системи, і, відповідно, ініціювати завантаження операційної системи. Для Windows – це завантажувач Windows, в Linux там знаходиться код ініціалізації завантажувача Grub. Через маленький обсяг MBR-запису підтримуються тільки чотири первинних розділи. Оскільки використовується 32-бітна адресація, то кожен розділ може бути не більше 2,2 ТБ. Крім того, завантажувальний запис не має жодного резервного MBR, тому, якщо перезаписати головний завантажувальний запис, вся інформація про розділи буде втрачена. Плюсом MBR можна назвати повну сумісність з багатьма операційними системами в тому числі Windows, включаючи попередні версії, Linux і macOS. mkdir (від англ.make directory)

в операційніх системах Unix, Linux, DOS, Windows – команда для створення нових каталогів. mv (від англ.move)

утиліта в UNIX і UNIX-подібних системах, використовується для переміщення або перейменування файлів. nano

консольний текстовий редактор для Unix і Unix-подібних операційних систем. В даний час включений у дистрибутиви Ubuntu за замовчуванням. nobody (від англ.nobody – ніхто)

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

груповий аналог nobody, який використовується для непривілейованих процесів, які не можуть створювати файлів на жорсткому диску, а тільки читати. Open Document Format (OpenDocument, ODF, скорочено від OASIS Open Document Format for Office Application, відкритий формат документів для офісних застосунків)

відкритий формат файлів документів для зберігання й обміну офісними документами, доступними для редагування, в тому числі текстовими документами, електронними таблицями, малюнками, базами даних, презентаціями. Cтандарт спільно розроблений різними організаціями, доступний усім і може використовуватись без обмежень. Він є альтернативою приватним закритим форматам у Microsoft Office, на зразок DOCX, XLSX і PPTX. Personal Packages Archive (PPA)

персональний архів пакунків. pwd (від англ.print working directory – надрукувати робочий каталог)

консольна команда в UNIX-подібних системах, яка виводить повний шлях від кореневого каталогу до поточного робочого каталогу. rm (від англ.remove)

утиліта в UNIX і UNIX-подібних системах, яка використовується для видалення файлів із файлової системи. rmdir (від англ.remove directory)

команда в операційних системах DOS, UNIX, Windows, яка видаляє каталог з файлової системи. Snap

формат пакунків програмного забезпечення для встановлення, які містять саму програму і усі її залежності, тобто є автономними. snap-пакунок – це образ з файловою системою squashFS, який містить код застосунку та файл snap.yaml із певними метаданими. Такі пакунки мають файлову систему, доступну лише для читання, і, після встановлення, область запису. Пакунки цього формату поєднують більшість необхідних бібліотек і їх можна оновлювати, не впливаючи на решту системи. SquashFS (SFS)

стискаюча файлова система для GNU/Linux, що надає доступ до даних в режимі тільки для читання. Відмінною особливістю цієї файлової системи є дуже компактне представлення метаданих і зберігання даних в стислому вигляді. Найбільш затребуваним застосуванням SquashFS є використання як файлової системи для інсталяційних образів, Live-систем і прошивок. su (від англ.switch user – замінити користувача)

команда для зміни користувача в UNIX-подібних системах. За допомогою команди su користувач має право, не закриваючи поточного сеансу, тимчасово відкрити новий сеанс, щоб увійти у систему під іншим іменем. Здебільшого, ця можливість використовується для виконання адміністративних змін у системі, наприклад, змін прав доступу до файлів, інсталяції програмного забезпечення, налаштування мережі тощо. sudo (дослівно «виконати від суперкористувача»)

програма, розроблена на допомогу системному адміністраторові і дозволяє делегувати ті або інші привілейовані ресурси користувачам з веденням протоколу роботи. Основна ідея – дати користувачам якомога менше прав, але при цьому рівно стільки, скільки необхідно для вирішення поставлених завдань. swap

один з механізмів віртуальної пам’яті, при якому окремі фрагменти пам’яті (зазвичай неактивні) переміщаються з ОЗП у вторинне сховище (окремий розділ або файл), звільняючи ОЗП для завантаження інших активних фрагментів пам’яті. tail

утиліта в UNIX-подібних операційних системах, що виводить декілька (за замовчуванням, 10) останніх рядків з файла. tar (від англ.tape archive – стрічковий архів)

формат файла-архіву, а також назва традиційної для Unix програми для роботи з такими архівами. Спочатку програма tar використовувалася для створення архівів на магнітній стрічці, а в даний час tar використовується для зберігання кількох файлів всередині одного файла, для поширення програмного забезпечення. Однією з переваг формату tar при створенні архівів є те, що в архів записується інформація про структуру каталогів, про власника і групу окремих файлів, а також тимчасові мітки файлів. Як і багато інших програм Unix, tar – спеціалізована програма, яка дотримується філософії Unix робити тільки одну річ (в даному випадку – працювати з архівами формату tar), але робити її добре. Тому tar не створює стиснених архівів, а використовує для стиснення зовнішні утиліти, такі, як gzip і bzip2. touch

команда Unix, призначена для встановлення часу останньої зміни файла або доступу в даний час. Також використовується для створення порожніх файлів. Ubuntu (укр. Убунту)

операційна система для робочих станцій, лептопів і серверів, найпопулярніший у світі дистрибутив Linux. UEFI (від англ.Unified Extensible Firmware Interface – інтерфейс розширеної «прошивки»)

інтерфейс між операційною системою і мікропрограмами, які керують низькорівневими функціями комп’ютерного обладнання. Основне призначення UEFI: коректно ініціалізувати обладнання при увімкненні комп’ютера і передати управління завантажувачу операційної системи. UEFI призначений для заміни BIOS. Перша специфікація UEFI (тоді ще просто EFI) була розроблена компанією Intel. UEFI підтримує всі функції, які були реалізовані в BIOS, а також багато нових функції (наприклад, підтримка драйверів обладнання, як наслідок, підтримка миші і графічної карти), що і робить UEFI найкращим рішенням для використання на сучасних комп’ютерах. UEFI містить CSM (від англ. Compatibility Support Module) – спеціальний компонент UEFI, що забезпечує зворотну сумісність з традиційними x86-системами (64-бітні процесори повністю підтримують UEFI, а ось 32-бітні не підтримують частину функцій і операційна система повинна емулювати для них середовище BIOS, щоб нормально працювати), і надає можливість завантаження операційних систем за допомогою класичного методу MBR. У цьому режимі файлові системи на дисках ігноруються, і початкове завантаження починається, як і у BIOS-системах, з boot-сектору (перший сектор на диску). На багатьох сучасних материнських платах зараз можна використовувати два режими: Legacy BIOS або UEFI. uname (скорочення від англ.unix name)

консольна UNIX-утиліта, що виводить інформацію про поточну систему: назву, версію тощо. uptime

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

команда для створення нових облікових записів користувачів у системах Linux. usermod

типова команда багатьох операційних Unix-подібних операційних систем для внесення змін до інформації про існуючий обліковий запис користувача. UTF-8 (від англ.Unicode Transformation Format – формат перетворення Юнікоду)

кодування, що реалізовує представлення Юнікоду, сумісне з 8-бітовим кодуванням тексту. Текст, що складається тільки з символів, коди яких менші ніж 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь-який байт із значенням менше, ніж 128, зображає символ ASCII з тим же кодом. Решта символів Юнікоду зображається послідовностями завдовжки від 2 до 6 байтів (реально тільки до 4 байтів, оскільки використання кодів більших, ніж 221 не планується), в яких перший байт завжди має вигляд 11xxxxxx, а решта – 10xxxxxx. Простіше кажучи, у форматі UTF-8 символи латинського алфавіту, розділові знаки і символи управління ASCII записуються кодами US-ASCII, а решта символів кодується за допомогою октетів із старшим бітом 1. В результаті, навіть якщо програма не розпізнає Юнікод, то англійська мова і розмітка все одно відображатимуться правильно. wc (абревіатура від word count)

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

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

утиліта в UNIX-подібних операційних системах, яка показує повний шлях до встановленої програми. whoami

команда виводить ім’я користувача, асоційоване з поточним ідентифікатором користувача. zip

популярний формат архівації файлів і стиснення даних без втрат. Найбільш часто zip використовує алгоритм стиснення Deflate – алгоритм стиснення без втрат. Архів

файл, що містить у собі один або декілька файлів та метадані. Метадані можуть містити інформацію про початковий розмір файлів, інформацію про формат файлів, структуру каталогів, коментарі до файлів, інформацію для відновлення архіву і т.д. Архіви файлів створюються за допомогою спеціалізованих програм – архіваторів – програмного забезпечення, що використовується для об’єднання, в окремих випадках, також для стиснення інформації. Популярні формати архівних файлів: .zip, .rar, .tar, .gz, .bz2 та інші. Відкрите програмне забезпечення (від англ.open-source software)

програмне забезпечення з відкритим сирцевим (початковим) кодом. Віконний менеджер

застосунок, що працює «поверх» графічної системи та визначає інтерфейс і взаємодію з користувачем (Compiz – для Unity, Mutter – для Gnome Shell, OpenBox – для LXDE та інші). Вільне програмне забезпечення (від англ.free software, software libre)

програмне забезпечення, яке надає користувачу ряд свобод: запускати програму, вивчати й змінювати її початковий код відповідно до власних потреб, вільно розповсюджувати копії програми, розповсюджувати модифіковані версії програми. Графічна система (графічний сервер)

віконна система, що забезпечує стандартні інструменти та протоколи для побудови графічного інтерфейсу користувача (X.Org Server або Xorg, Wayland та інші). Демон (daemon, у перекладі з грец. – божество)

комп’ютерна програма в системаху UNIX, що запускається самою системою і працює у фоновому режимі без прямої взаємодії з користувачем. Демони зазвичай запускаються під час завантаження системи. Типові завдання демонів: сервери мережевих протоколів (HTTP, FTP, електронна пошта та ін.), управління обладнанням, підтримка черг друку, управління виконанням завдань за розкладом і т.д. У системах Windows аналогічний клас програм називається службами (від англ. Services). Дистрибутив Linux

складається з ядра Linux, системних бібліотек та інструментів, розроблених проєктом GNU , інших програм. Існує величезна кількість різноманітних дистрибутивів Linux: Debian, Ubuntu, Elementary OS, Manjaro, Arch linux, Zorin OS, OpenSUSE, CentOS, Linux Mint, Fedora та інші. Доменна система імен (від англ.Domain Name System, DNS)

ієрархічна розподілена система перетворення імені хоста (комп’ютера або іншого мережевого пристрою) в IP-адресу. Кожен комп’ютер в Інтернеті має свою власну унікальну адресу – число, яке складається з чотирьох (у протоколі IPv4) або шістнадцяти (у протоколі IPv6) байтів. Оскільки запам’ятати десятки чи навіть сотні номерів – важка процедура, то всі (чи майже всі) машини мають імена, запам’ятати які (особливо якщо знати правила утворення доменних імен) значно легше. Жорсткий диск (від англ. Hard (magnetic) disk drive, HDD), у комп’ютерному сленгу – «вінчестер»

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

необхідність у встановленні додаткових компонентів для функціювання програми. Сучасне програмне забезпечення досить складне і складається з багатьох модулів – для зручності розробки. Модулі можуть містити функції (бібліотеки), що потрібні не одній, а багатьом програмам. Для прикладу, у Windows часто з іграми встановлюється C++ Redistributable, DirectX, або .NET Framework, у Linux – це більш поширена практика. Ідентифікатор групи (від англ.Group ID, group identifier, GID)

числовий ідентифікатор групи в операційній системі Unix та їй подібних. Під час створення облікового запису, він автоматично присвоюється головній групі. GID головної групи за замовчуванням однаковий з UID. Інформація про групи знаходиться у файлі /etc/group. Правила формування ідентифікаторів груп: група root має GID (0), група nogroup має останній GID (65534), у системах на основі Debian, в тому числі, і в Ubuntu, діапазон GID від 1 до 999 (типово) зарезервовано для груп операційної системи, GID від 1000 і вище призначені для основних груп. Ідентифікатор користувача (від англ.User ID або user identifier, UID)

ідентифікатор користувача в операційній системі Unix та їй подібних. Зберігається в облікових записах користувачів у файлі паролів (/etc/passwd). Операційна система розпізнає користувача саме за його UID (а не, наприклад, за логіном). Величина допустимих значень UID залежить від системи, що використовується. Загалом, UID допускає використання значень від 0 до 65534 включно з деякими вийнятками: суперкористувач завжди має UID, що дорівнює 0, користувачу nobody зазвичай присвоюється найбільший серед можливих UID (протилежний суперкористувачу), або один із системних UID. У системах на основі Debian, в тому числі, і в Ubuntu, UID з 1 по 999 зарезервовані для потреб системи. Інтерфейс командного рядка (від англ.command-line interface, CLI)

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

інтерфейс командного рядка в Unix-подібних операційних системах. Командна оболонка виконує команди, які подає користувач, або які читаються з файлів. Такі файли з командами оболонки називаються сценаріями (скриптами, програмами) оболонки. Ці сценарії не компілюються, а інтерпретуються оболонкою. Це означає, що оболонка прочитує сценарій від початку до кінця, рядок за рядком, шукаючи зазначені там команди й виконуючи їх; на відміну від цього підходу, компілятор перетворює цілу програму до вигляду, придатного до виконання машиною – потім файл з таким кодом можна використати в сценарії оболонки. UNIX надає на вибір декілька різних оболонок: sh, bash (стандартна оболонка Linux), csh, zsh та інші. Командний інтерпретатор

програма, яка забезпечує взаємодію користувача з операційною системою. Наприклад, cmd у Windows; sh і bash в операційних системах UNIX/Linux. Основне призначення – виконання команд користувача. Компілятор (Compiler від англ.to compile – збирати в ціле)

комп’ютерна програма (або набір програм), що перетворює (компілює) початковий код, написаний певною мовою програмування, на семантично еквівалентний код в іншій мові програмування, який необхідний для виконання програми комп’ютером. Для виконання програма не завжди повинна бути перекладена компілятором, існує також інший принцип: покрокове виконання програмних інструкцій інтерпретатором. Лог (від англ.Log file)

спеціальний файл, в якому накопичується зібрана службова та статистична інформація про події в операційній системі (програмі). За допомогою логів можна змусити систему (програму) реєструвати у log-файлах фактично будь-які події. Інформація з log-файлів надалі використовується для аналізу подій, виявлення помилок, збоїв, зведення статистики, звітування тощо. Маршрутизатор або роутер (від англ.router)

електронний пристрій, що використовується для поєднання двох або більше мереж і керує процесом маршрутизації, тобто, на підставі інформації про топологію мережі (фізична структура – фізичні з’єднання між комп’ютерами, і логічна структура – взаємодія комп’ютерів) та певних правил приймає рішення про пересилання мережевих пакунків між різними сегментами мережі. Для звичайного користувача маршрутизатор (роутер) – це мережевий пристрій, який підключається між локальною мережею й Інтернетом. Часто маршрутизатор не обмежується простим пересиланням даних між інтерфейсами, а виконує й інші функції: захищає локальну мережу від зовнішніх загроз, обмежує доступ користувачів локальної мережі до ресурсів Інтернету, роздає IP-адреси, шифрує трафік і багато іншого. Мережевий комутатор (свіч, від англ.switch – перемикач)

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

в Unix-подібних операційних системах файлові системи монтуються в загальне дерево каталогів, вершиною якого є кореневий каталог /. Нова файлова система може бути змонтована в будь-який вже існуючий каталог (точку монтування) будь-де у дереві каталогів. Існує стандарт FHS, який передбачає два каталоги для монтування: /media для знімних носіїв (оптичні диски, USB-накопичувачі, карти пам’яті) та /mnt для тимчасово монтованих файлових систем (наприклад, спільні мережеві ресурси). Обліковий запис

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

мережа, у якій усі комп’ютери рівноправні, немає ієрархії серед комп’ютерів і немає виокремленого (від англ. dedicated) сервера. Тобто, кожен комп’ютер функціонує і як клієнт, і як сервер – інакше кажучи, немає окремого комп’ютера, відповідального за всю мережу. Користувачі самі вирішують, які дані на своєму комп’ютері зробити доступними по мережі. ОЗП (оперативно запам’ятовуючий пристрій, оперативна пам’ять)

швидкодіюча пам’ять, призначена для запису, зберігання та читання інформації у процесі її обробки. Вміст оперативної пам’яті очищується після перезавантаження комп’ютера. Операційна система, скорочено ОС (від англ. operating system, OS)

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

містить певну програму чи службу, наприклад, бібліотеку для обробки малюнків у форматі PNG, колекцію шрифтів чи вебоглядач. Початковий код, вихідний код, програмний код, сирцевий код або сирці (від англ.source code)

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

сукупність програм, призначених для розв’язання різних завдань на комп’ютері. Розрізняють системне програмне забезпечення (зокрема, операційна система, транслятори, графічний інтерфейс користувача); прикладне програмне забезпечення, що використовується для виконання конкретних завдань, наприклад, програмне забезпечення для обробки зображень; інструментальне програмне забезпечення (комп’ютерні програми, призначені для проєктування, розробки, адміністрування і супроводження системного та прикладного програмного забезпечення). Пропрієтарне (власницьке) програмне забезпечення (від англ.proprietary software)

програмне забезпечення, на яке зберігаються як немайнові, так і майнові авторські права. Отримавши або придбавши таке програмне забезпечення, користувач отримує обмежені права користування ним: може бути заборонено або закрито доступ до коду, внесення змін, тиражування, розповсюдження та перепродаж. Програмне забезпечення вважається власницьким, якщо наявне хоча б одне з перелічених обмежень. Регулярний вираз (від англ.regular expression, скорочено regex або regexp)

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

сховище програмного забезпечення, яке входить до певного дистрибутива. Фактично – це файловий сервер, з якого можна завантажити пакунки із потрібними програмами. Це трішки схоже на Google Play чи Apple App Store. Кожен дистрибутив має свій репозиторій, у якому всі програми узгоджені між собою по залежностях. В популярних дистрибутивах репозиторії мають дзеркала – резервні сервери, серед яких можна обирати той, з якого йде найшвидше завантаження. Розділи диска

використовується для позначення розбиття або поділу певних видів носіїв зберігання даних (наприклад, таких як жорсткі диски HDD) на окремі частини. Розділи є логічними контейнерами (фізично не існують), які, зазвичай, використовуються для розміщення файлових систем, куди встановлюються операційні системи, програми та записуються дані. Середовище робочого столу (графічне оточення робочого столу, від англ.Desktop environment)

різновид графічних інтерфейсів користувача (GNOME, Unity, KDE, Xfce, LXDE, Mate та інші). Таке середовище забезпечує простір, який називається Робочим столом (або Стільницею – метафора графічного інтерфейсу, що трактує монітор комп’ютера, як робочий стіл користувача), на якому з’являються вікна, піктограми, панелі та інші елементи. Зазвичай, робочим столом підтримуються механізми, які поєднують різні частини середовища, наприклад, drag-n-drop (перенесення даних між вікнами за допомогою вказівного пристрою). Призначення робочого оточення – створення інтуїтивного способу взаємодії користувача з комп’ютером. Система керування пакунками

програма, за допомогою якої відбувається встановлення, оновлення та видалення програм та бібліотек. Системи управління пакунками активно використовуються у різних дистрибутивах операційної системи Linux та інших UNIX-подібних операційних системах. Суперкористувач (від англ.super user – суперкористувач)

користувач із адміністративними повноваженнями. У багатьох UNIX-подібних операційних системах суперкористувач – це користувач root, у версіях Microsoft WindowsAdministrator. Точка монтування (від англ.Mount point)

по суті, це каталог, що належить дереву каталогів кореневої файлової системи, яка починається з кореневого каталогу. Точка монтування використовується для реалізації можливості динамічно приєднувати/від’єднувати розділи диска до файлової системи під час роботи операційної системи. Упорядник пакунків (менеджер пакунків)

програма, яка може завантажувати пакунки з мережевого сховища (репозиторію) та відстежувати залежності між пакунками. Користувачі можуть працювати з графічними оболонками таких упорядників пакунків. Файлова система

спосіб організації даних, який використовується операційною системою для збереження інформації у вигляді файлів на носіях інформації. Також, цим поняттям позначають сукупність файлів та каталогів, які розміщуються на логічному або фізичному пристрої. Назви файлових систем: NTFS, Ext2, Ext4, Btrfs та інші. Файловий менеджер

комп’ютерна програма, що надає інтерфейс користувача для роботи з файловою системою. Дозволяє виконувати поширені дії з файлами: створення, перегляд/відкриття/запуск, редагування, переміщення, перейменування, копіювання, вилучення, зміну атрибутів та властивостей, пошук та призначення прав. Формати пакунків

формати файлів, які використовуються системами керування пакунками операційних систем на основі Linux і GNU (.deb, .rpm та інші). Юнікод (від англ.Unicode), УНІфіковане КОДування

промисловий стандарт, розроблений, щоб забезпечити цифрове представлення символів усіх писемностей світу та спеціальних символів. Ядро операційної системи (від англ. Kernel)

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

Додаток A: Створення завантажувальної флешки

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

Для створення завантажувальних (і мультизавантажувальних, тобто з кількома дистрибутивами) флеш-дисків існує багато спеціальних утиліт для різних платформ і архітектур. Деякі з них представлені у списку нижче:

Найпростішим варіантом створення завантажувальної флешки з дистрибутивом Linux є використання програми Rufus Windows) і програми Створити завантажувальний диск (вже інтегрована у більшість дистрибутивів Linux).

Інструкції, як використовувати утиліти Rufus і Створити завантажувальний диск, наведені у інтерактивних посібниках з офіційного сайту Ubuntu. Відповідно:

При створенні завантажувальної флешки у Windows в програмі Rufus для кращої сумісності з новим апаратним забезпеченням оберіть схему розділів GPT і цільовий тип системи UEFI (без CSM). Однак, якщо вам потрібно використовувати USB-накопичувач зі старим апаратним забезпеченням, оберіть схему розділу MBR і тип цільової системи BIOS чи UEFI.

Додаток B: Основні команди термінала

КомандаДія
cd /homeперейти у каталог /home
cd ..перейти в каталог на рівень вище
cd ../..перейти в каталог двома рівнями вище
cd ~перейти у домашній каталог користувача
pwdвивести назву поточного каталогу
lsвідобразити вміст поточного каталогу
ls -lдетально відобразити вміст поточного каталогу
ls -aпоказати приховані файли та каталоги в поточному каталозі
mkdir dir1створити каталог з ім’ям dir1
mkdir {dir1,dir2}cтворити одночасно два каталоги, dir1 і dir2, всередині поточного каталогу
mkdir -p ./dir1/dir2/dir3cтворити вкладені один в одний три каталоги dir1, dir2, dir3
rm -f file1видалити файл з іменем file1 без підтвердження
rmdir dir1видалити каталог з іменем dir1
rm -rf dir1видалити каталог з ім’ям dir1 і рекурсивно увесь його вміст
mv dir1 new_dirперейменувати каталог (або файл) dir1 у new_dir
mv file1 ../new_dir/перемістити файл (або каталог) file1 у каталог ../new_dir/
cp file1 file2скопіювати вміст файла file1 у файл file2
cp -a dir1 dir2скопіювати каталог dir1 в каталог dir2
ln -s file1 link1створити символьне посилання link1 на файл file1 (або каталог)
ln file1 link1створити жорстке (фізичне) посилання link1 на файл file1 (або каталог)
touch file1якщо вказаний файл file1 відсутній, то створити його з назвою file1
echo '' > empty_file.txtстворити порожній файл empty_file.txt
file log.txtвизначити тип файла log.txt (результат роботи команди, наприклад, такий: UTF-8 Unicode text)
du -h log.txtпоказати розмір файла log.txt (або каталогу) у зручному форматі
wc log.txtпідрахувати кількість рядків, слів, байтів у файлі log.txt
df -hпоказати детальну інформації про використання дискового простору файловою системою (аналізатор дискового простору)
КомандаДія
ls -lhпереглянути права на файли і каталоги в поточному каталозі
chmod g+w file1додати права для групи на зміну файла file1
chmod go-r file1видалити права на читання для групи і усіх інших користувачів для файла file1
chmod -R o+wx dir1додати права для інших користувачів і груп на зміну та виконання каталогу dir1
chmod 667 file1додати права на читання, зміну і виконання для усіх інших користувачів для file1
chown user1 file1призначити власником файла file1 користувача user1
chown -R user1 dir1призначити рекурсивно власником каталогу dir1 користувача user1
КомандаДія
find / -name file1знайти файли і каталоги з ім’ям file1 (пошук з кореня файлової системи /)
find /home/user1 -name "∗.txt"знайти усі файли і каталоги, імена яких закінчуються на ∗.txt (пошук розпочати з /home/user1)
find /usr/bin -type f -mtime -15знайти усі файли і каталоги, створені чи змінені протягом останніх 10 днів
find ./images -type f -name "∗.jpg" -size +200kзнайти у каталозі ./images файли, імена яких закінчуються на ∗.jpg і розміром, бальшим за 200 кілобайт
find ./images -type f | sortвідсортувати знайдені файли у каталозі ./images за зростанням (за алфавітом)
find ./images -type f | sort -rвідсортувати знайдені файли у каталозі ./images за спаданням
which progпоказати повний шлях до встановленої програми prog
whereis progпоказати шлях до розміщення бінарних файлів, початкових кодів програми prog
КомандаДія
man commandвивести інструкцію з використання команди command
command --helpвивести інструкцію з використання команди command
cat file1вивести вміст файла file1 на стандартний пристрій виведення
cat -n file1пронумерувати рядки, при виведенні вмісту файла file1 на стандартний пристрій виведення
tac file1вивести вміст файла file1 на стандартний пристрій виведення у зворотному порядку
less file1посторінково вивести вміст файла file1 на стандартний пристрій виведення з можливістю гортання вгору-вниз
head -4 file1вивести перші чотири рядки файла file1 на стандартний пристрій виведення (за замовчуванням, 10 рядків)
tail -3 file1вивести останні три рядки файла file1 на стандартний пристрій виведення (за замовчуванням, 10 рядків)
grep text /var/log/messagesз файла /var/log/logs відібрати і вивести на стандартний пристрій виведення рядки, що містять text
grep ̂The /var/log/messagesз файла /var/log/messages відібрати і вивести на стандартний пристрій виведення рядки, що починаються на The
whoami > log.txtперенаправлення виводу команди whoami у текстовий файл log.txt (якщо файл log.txt існує, він буде перезаписаний)
date >> log.txtперенаправлення виводу команди date у текстовий файл log.txt (дописування інформації у кінець файла log.txt)
КомандаДія
tar -cvf archive.tar file1 file2 dir1створити tar-архів archive.tar із файлами file1, file2 і каталогом dir1
tar -tf archive.tarпоказати вміст архіву archive.tar
tar -xvf archive.tarвидобути файли із архіву archive.tar
tar -xvf archive.tar -C /tmpвидобути файли із архіву archive.tar у каталог /tmp
tar -cjvf archive.tar.bz2 file1 file2створити архів archive.tar.bz2 з файлами file1, file2 і стиснути його
tar -xjvf archive.tar.bz2видобути стиснений архів archive.tar.bz2
tar -czvf archive.tar.gz file1 file2створити архів archive.tar.gz з файлами file1, file2 і стиснути його
tar -xzvf archive.tar.gzвидобути стиснений архів archive.tar.gz
zip files.zip file1створити стиснений архів files.zip з файлом file1
zip -r -9 files.zip file1 file2 dir1оновити архів files.zip з найкращим стисненням, додавши до архіву файли file1, file2 і каталог dir1
zip -e cryptedfiles.zip file3 file4створити стиснений зашифрований архів cryptedfiles.zip з файлами file1, file2 (при створенні і видобуванні архіву необхідно ввести пароль)
unzip files.zipвидобути вміст із стисненого архіву files.zip
КомандаДія
sudo commandвиконати команду command від імені суперкористувача
useradd -c "Here is a comment" -g admin -d /home/user1 -s /bin/bash user1створити користувача user1, призначити йому в якості домашнього каталогу /home/user1, як командну оболонку /bin/bash, включити його в групу admin і додати коментар Here is a comment
usermod -G users -a user1додати користувача user1 у групу users
adduser user1створити нового користувача user1 за допомогою скрипта
deluser --remove-home user1видалити користуваяа user1 і його домашній каталог із системи
passwd user1змінити пароль користувача user1 (запускати від імені суперкористувача)
whoamiпоказати ім’я поточного користувача
su user1змінити користувача у терміналі на user1 (необхідно ввести пароль для user1)
КомандаДія
hostnameвідобразити ім’я комп’ютера
hostname -Iвідобразити локальну IP-адресу комп’ютера
ping nameвідправити на вказану адресу name мережеві пакунки для перевірки можливості з’єднання з цим вузлом (name – назва комп’ютера або його IP-адреса)
КомандаДія
dpkg -i package.debвстановити пакунок package.deb
dpkg -lпоказати усі пакунки, встановлені у систему
dpkg -r package_nameвидалити пакунок package_name із системи
apt install package_nameвстановити/оновити пакунок package_name
apt remove package_nameвидалити пакунок package_name, встановлений в систему, зі збереженням файлів конфігурації
apt purge package_nameвидалити пакунок package_name, встановлений в систему, із видаленням файлів конфігурації
apt updateотримати оновлені списки пакунків
apt upgradeоновити пакунки, встановлені у систему
apt autoremoveвидалити пакунки, які були встановлені як залежності інших, але зараз вони більше не потрібні
apt cleanвидалити архівні завантажені файли пакунків
apt autocleanвидалити старі завантажені архівні файли пакунків
КомандаДія
clearочистити вікно термінала
dateвивеcти поточну дату
uptimeвивести статистичну інформацію про роботу системи (скільки часу пройшло з моменту останнього перезавантаження, скільки користувачів в даний момент підключено до системи, середнє завантаження системи за останні 1, 5 і 15 хвилин)
lsb_release -aвивести інформацію про поточну версію Ubuntu
uname -aотримати інформацію про поточне ядро системи Ubuntu
uname -rвизначити лише ім’я поточного ядра, на якому система працює
rebootперезавантажити систему
logoutвийти із системи
shutdownвимкнути комп’ютер