Основні команди для роботи з файлами та папками в Linux
Після підключення до сервера Linux ви опинитеся в домашній директорії користувача. Щоб дізнатися точний шлях до вашого поточного місцезнаходження, скористайтесь командою:
Вона виведе поточну робочу директорію (print working directory).
Якщо потрібно перейти в іншу директорію, для цього використовується команда cd (change directory) із зазначенням шляху до потрібної вам директори:
Говорячи про навігацію, не можна не згадати скорочення для позначення деяких директорій Linux:
поточна директорія, в якій ви зараз перебуваєте. Наприклад, щоб знайти документ з ім'ям hello.txt у поточній директорії, можна використовувати команду:
find. -name hello.txt
директорія, розташована на рівень вище за поточну. Якщо ви знаходитесь у /home/user , то комбінація .. буде позначати папку /home . Тобто щоб повернутися на один рівень назад, достатньо виконати команду:
домашня директорія поточного користувача. Наприклад, запустити скрипт some-script.sh з домашньої директорії, коли ви перебуваєте в іншій, можна за допомогою команди:
попередня відвідана директорія. Уявімо, що ви перейшли в /home, потім вам потрібно змінити налаштування в /etc. Щоб повернутися назад, достатньо використати команду:
Для навігації за допомогою команди cd є два формати вказівки шляху до потрібної директорії: абсолютний та відносний.
Абсолютний шлях - Це повний шлях від кореневого каталогу сервера "/". Наприклад, ось такий:
/var/www/data/username/data/www/example.com/
Також до абсолютних відносяться шляхи, в яких використовується ~ - вказівка на домашній каталог поточного користувача.Наприклад, при доступі до файлу ~/.bash_profile він завжди буде відкриватися з одного і того ж місця: замість ~ буде використовуватись значення змінної оточення $HOME, яке не змінюється.
Відносний шлях - Це неповний шлях. Він зазначається щодо якогось об'єкта: наприклад, поточної робочої директорії. Тобто на початку немає символу кореневого каталогу «/» .
./docs/files/file.txt file.txt
Уявімо, що ми працюємо з файлами в /var/www/data/username . Нам потрібно відредагувати вміст у директорії на рівень вище - /var/www/data. Щоб керувати даними в цій директорії, нам не обов'язково постійно вказувати повний шлях до них можна працювати з відносним, починаючи його з «../».
Також відносні шляхи використовуються, коли потрібно виконати операцію над файлом або папкою в директорії, де ми зараз працюємо. Для виконання команди достатньо вказати ім'я і система зрозуміє, що ми маємо на увазі об'єкт з поточного каталогу.
Щоб відобразити список вмісту каталогу, можна використовувати ls (list). Вона покаже назви об'єктів у поточному каталозі:
Якщо доповнити її ключем -al, команда покаже типи даних, дозволи та приховані об'єкти. Наприклад, у цьому випадку вона виведе до терміналу докладний список вмісту /etc:
Щоб спростити собі життя, можна використовувати консольні файлові менеджери для Linux, наприклад mc .
Його особливість – примітивний графічний інтерфейс. Він дозволяє швидко орієнтуватися у структурі каталогів, переміщатися з-поміж них, створювати нові директорії. Інтерфейс розбитий на два вікна, між якими можна переміщати об'єкти.Крім іншого, в ньому можна працювати і за допомогою миші - переміщатися за допомогою подвійного натискання, використовувати кнопки в нижній частині панелі.
Пошук
За допомогою команди find можна знайти на сервері директорію або файл за набором умов. Структура команди проста:
find [де шукати] [як шукати] [що шукати]
Наприклад, ми знаємо назву скрипта hello.txt, але не знаємо, де саме на сервері він лежить. Знайти його допоможе команда:
find/-name "hello.txt"
- / Вказує, що шукати треба, починаючи з кореневої директорії сервера. Якщо вам відомо, де може лежати те, що шукається, можна задати шлях точніше.
- "hello.txt" - ім'я файлу, який потрібно знайти. Якщо відомо лише частина імені, можна вказати скорочений варіант: "hello*" , "*.txt"
Крім -name команда find має безліч опцій, які дозволяють уточнити умови пошуку. Ось список найбільш корисних параметрів:
Дозволяє задати умову щодо часу зміни:
Більше інформації про можливості команди find можна дізнатися у документації. Тут на допомогу користувачам приходить команда man - використовуючи її, ви зможете отримати повну довідкову інформацію про будь-яку команду Linux:
З вбудованих інструментів пошуку можна також відзначити утиліту whereis. Вона призначена для пошуку бінарних та системних файлів та директорій служб. Наступний приклад виведе список всіх об'єктів, що мають пряме відношення до php:
Робота з папками
Для створення нової папки в Linux використовується команда mkdir із зазначенням шляху. Наприклад, команда нижче створить директорію /new /home/user :
Якщо потрібно створити кілька вкладених папок, можна використовувати параметр -p . У такому разі всі неіснуючі директорії, зазначені у дорозі, будуть створені автоматично.Уявимо, що нам потрібно створити вкладені папки docs/photos/2020-08-17 у поточній директорії — тоді команда виглядатиме так:
mkdir -p docs/photos/2020-08-17
Якщо потрібно створити кілька папок за раз, можна просто перерахувати їх через пропуск:
mkdir docs pictures games
Видалити директорію можна за допомогою команди rmdir із зазначенням шляху. При цьому вона буде видалена лише у випадку, якщо вона порожня (можна використовувати параметр --ignore-fail-on-non-empty, щоб видалити її у будь-якому випадку). Для видалення кількох вкладених папок можна аналогічно використовувати параметр -p. Наприклад, команда нижче видалити /photos і всі папки всередині неї:
rmdir -p docs/photos
Для видалення є ефективніший інструмент - команда rm, про неї розповімо трохи пізніше.
Робота з файлами
Створення
Найпростіший спосіб створити файл у Linux - команда touch. Для цього їй достатньо лише передати повний шлях. Наприклад, створимо в директорії docs папку copies, а всередині неї copies-list.txt:
touch docs/copies/copies-list.txt
Неіснуюча папка буде створена автоматично.
Якщо потрібно створити відразу кілька файлів, можна просто перерахувати їх через пропуск:
touch file1.txt file2.txt file3.txt file4.txt file5.txt
Ще один спосіб – викликати якийсь консольний текстовий редактор із зазначенням повного шляху до файлу. Тоді редактор автоматично створить його та відкриє для редагування. Однак, всі папки доведеться створити заздалегідь, а файл доведеться зберегти (навіть порожній), інакше він не буде створений.
Команда нижче створить new-file.txt за допомогою редактора vi:
Для збереження та виходу vi потрібно натиснути клавішу Esc , ввести поєднання :wq і натиснути Enter . Для виходу без збереження потрібно натиснути Esc , ввести поєднання :q! і натиснути Enter.
Щоб створити порожній файл у Linux, можна за допомогою команди cat або команди echo:
cat > new-file.txt echo > new-file.txt
Редагування
Для редагування використовуються консольні текстові редактори. Найвідоміші - vi і nano. У деяких дистрибутивах vi замінений на vim (vi improved, покращений vi) або vim.tiny
Редактор vi буде доступний за замовчуванням на більшості Linux-систем.
А тепер до діла. Vi (відоміший як Vim) — старий, дуже гнучкий і при цьому не дуже простий у плані управління редактор. Власне, так він і потрапив до популярних програмістських та адмінських жартів, а питання «як вийти з Vim?» став практично культовим серед користувачів Linux-систем.
Запуск редактора без аргументів відкриє його як довідку:
Щоб закрити Vim (без збереження), введіть q!
Якщо вказати редактору шлях до файлу, він відкриє його для редагування. Якщо його не існувало, то він буде створений:
При першому вході Vim відкриває файл у режимі відтворення. Він не дозволяє редагувати вміст, але можна вводити командні послідовності, переміщатися по тексту, виконувати пошук і ін.
Щоб розпочати введення, потрібно перейти в режим редагування за допомогою кнопки I . Щоб повернутися до перегляду, натисніть Esc .
Переміщення текстом виконується з клавіатури:
- переміщення на початок тексту: Esc + двічі G
- переміщення до кінця тексту: Shift + G
- переміщення рядком горизонтально: стрілки ← →
- переміщення рядками вертикально: стрілки ↑ ↓
- відображення номерів рядків: Esc , введіть :set number , натисніть Enter
- переміщення номерами рядків: Esc , введіть : номер рядка, натисніть Enter
Щоб вийти зі збереженням файлу, натисніть Esc і введіть :wq!
Текстовий редактор vim - короткий посібник
Більш сучасною та зручною альтернативою Vim вважається редактор nano. Сучасні дистрибутиви Linux включають його за замовчуванням, але на ранніх версіях встановлювати доведеться вручну:
apt -y install nano
yum -y install nano
Виклик nano без аргументів відкриє пустий редактор. Можна розпочати введення (при збереженні вам буде запропоновано вказати ім'я та зберегти файл) або викликати режим допомоги зі списком доступних команд за допомогою Ctrl + G .
Щоб зберегти, натисніть Ctrl + O — редактор запропонує ввести ім'я файлу: введіть ім'я та натисніть Enter . Якщо файл існував і ім'я не потрібно змінювати, просто натисніть Enter .
Щоб вийти з редактора, натисніть Ctrl + X .
Читання
Буває, що нам потрібно отримати інформацію з файлу без необхідності редагувати його. У такому разі необов'язково використовувати текстовий редактор — у Linux є й простіші інструменти.
Наприклад, команда cat дозволяє вивести в термінал весь вміст файлу, який вказаний як аргумент:
Однак, якщо ми знаємо, що у файлі великий обсяг інформації, немає сенсу виводити його цілком. Наприклад, команди head та tail можуть вивести частину вмісту з початку або кінця відповідно. Якщо додати до них ключ -n можна уточнити, скільки рядків тексту потрібно вивести:
head -n 3 example.txt
tail -n 3 example.txt
Крім того, команда tail дуже зручна для читання логів з ключем -f. У такому режимі вона відкриває файл у режимі очікування і виводить всі дані, що додаються. Це може стати в нагоді для тестування або дебаггінгу.
Іноді нам все-таки потрібно повністю переглянути файл. При цьому читати його висновок у терміналі незручно. На такі випадки є команда less - вона відкриває файл (або передано в неї виведення іншої команди) в режимі читання:
У режимі читання команда less можна переміщатися, шукати текст та багато іншого. Усі командні послідовності та гарячі клавіші можна вивести за допомогою --help :
Щоб вийти з режиму читання, введіть q і натисніть Enter.
Вилучення
Для видалення файлу в Linux використовується команда rm. Вона вкрай небезпечна – неправильне застосування загрожує видаленням всього вмісту сервера. Тому, як кажуть, сім разів відміряй, один раз відріж: категорично важливо перевіряти ще раз шлях, який ви вказуєте для видалення.
Найпростіша версія команди rm видалить файл із попереднім підтвердженням - для цього потрібно ввести y і натиснути Enter :
Для повного знищення всього і вся до команди додаються параметри -rf . Перший відповідає за рекурсивне видалення даних (тобто видалення вкладених файлів і папок), другий дозволяє відключити підтвердження під час видалення. Наприклад, наступна команда видалить папку photos , розміщену в docs , і її вміст:
Ця команда набула деякої популярності через те, що її використовують заради жарту над недосвідченими адміністраторами та користувачами, які тільки починають своє знайомство із системою Linux. Їм під тим чи іншим приводом пропонують виконати з терміналу команду rm-rf[/] (без квадратних дужок). Вона видаляє вміст сервера від кореня. Результат - всі дані безповоротно губляться, а сервер перестає працювати.
Завантаження та завантаження
Для передачі файлів на сервер і скачування їх з сервера є багато способів. Найпростіший - використання програм wget, curl або утиліти scp.
wget дозволяє завантажувати дані на сервер. Вона підтримує HTTP, HTTPS та FTP протоколи.
wget [як скачати] [звідки скачати]
Завантажити файл за посиланням у вашу поточну робочу директорію можна за допомогою команди:
wget https://ua.wordpress.org/latest-ru_RU.tar.gz
За допомогою параметра -P можна вказати шлях, куди потрібно зберегти:
wget -P /var/www/example.com https://ua.wordpress.org/latest-ru_UA.tar.gz
curl [як скачати] [звідки скачати / куди завантажити]
- Ubuntu та Debian:
apt -y install curl
- CentOS:
yum -y install curl
Для роботи з curl потрібно знати назву та розташування файлів, які необхідно завантажити/завантажити. Наприклад, так буде виглядати команда на завантаження за посиланням:
curl -O https://ua.wordpress.org/latest-ua_UA.tar.gz
У прикладі ми завантажуємо архів latest-ru.UA.tar.gz за посиланням і зберігаємо його в поточну робочу директорію з таким же ім'ям - за це відповідає ключ -O. Якщо використовувати опцію -o , можна задати своє ім'я ( wp.tar.gz ) для файлу, що зберігається:
curl -o wp.tar.gz https://ua.wordpress.org/latest-ru_RU.tar.gz
Якщо нам потрібно завантажити файл з нашого сервера на інший, використовується така конструкція:
curl -T filename.txt https://example.com/downloads/filename.txt
Тут filename.txt з поточної робочої директорії завантажується на сайт example.com в директорію downloads та зберігається з ім'ям filename.txt. Приклад передбачає, що ми маємо права на запис у вказаний каталог.
Інші можливості curl можна дізнатися у довідковій інформації за допомогою команди:
scp [звідки копіюємо] [куди копіюємо]
Наприклад, для передачі filename.txt з нашого сервера на віддалений сервер 1.2.3.4 до директорії new-documents користувача username можна використовувати в терміналі наступну команду:
scp ~/documents/filename.txt username@1.2.3.4:/home/username/new-documents
У процесі система запросить пароль користувача username для підключення до віддаленого серверу. Після авторизації файл буде скопійовано на цільовий сервер у вказану директорію. Щоб скачати файл з віддаленого сервера, достатньо трохи змінити нашу команду:
scp [email protected]:/home/username/documents/filename.txt ~/new-documents/
Тут ми в якості джерела для отримання копії вказали віддалений сервер, а як ціль для завантаження копії - папку на поточному сервері. За допомогою scp аналогічно можна копіювати дані між двома віддаленими серверами:
scp [email protected]:/home/username1/documents/filename.txt [email protected]:/home/username2/new-documents
Запуск виконуваних bash-скриптів
Щоб запустити скрипт script.sh на сервері Linux, потрібно виконати два кроки:
Налаштувати права на запуск файлу для користувачів за допомогою команди chmod:
У деяких випадках потрібно використовувати команду sh або вказувати шлях до файлу командної оболонки, що виконується:
Щоб мати можливість запускати скрипт із будь-якого місця на сервері однією простою командою в терміналі, можна створити для нього аліас — коротку команду (псевдонім), яка асоціюватиметься системою з повним викликом скрипту.
Весь список існуючих аліасів системи можна вивести за допомогою команди alias:
Створити свій постійний аліас можна за допомогою .bashrc файлу, розміщеного в домашньому каталозі вашого користувача. Потрібно відкрити його для редагування:
У відповідному розділі потрібно додати ваш аліас у наступному форматі:
alias [коротка команда]='[вихідна команда]'
Наприклад, якщо нам потрібно створити псевдонім для скрипта вище, налаштування виглядатимуть так:
alias myScript='sh /шлях/до/скрипту/script.sh'
Щоб після додавання аліас відразу став доступним, попередньо потрібно оновити командну оболонку за допомогою команди:
Після цього ви можете викликати ваш скрипт за допомогою короткої команди.
Скрипт можна додати до розкладу планувальника cron , щоб він запускався регулярно.
Як налаштувати cron з ssh
Перейменування, переміщення та копіювання файлів та папок
Копіювати файл у терміналі Linux можна за допомогою команди:
cp [що копіюємо] [куди копіюємо]
Наприклад, ви можете створити копію конфігураційного файлу, який ви хочете змінити. Тут ми створюємо копію nginx.conf:
cp nginx.conf nginx.conf.copy
Директорії копіюються аналогічно. При необхідності скопіювати каталог з усім вмістом (рекурсивно) потрібно додати до команди ключ -r:
Тут ми створюємо копію docs з її вмістом з ім'ям files .
Перемістити файл також просто, для цього використовуємо в терміналі команду mv:
mv [що перемістити/перейменувати] [куди перемістити/як назвати]
Наприклад, наступна команда перемістить файл file.txt до директорії new :
mv file.txt docs/new
Перейменувати файл теж не важко. У Linux перейменування аналогічне переміщенню в ту саму папку, але з новим ім'ям. Наприклад, команда нижче перейменує file.txt (у директорії /docs/new/) у todolist.txt:
mv /docs/new/file.txt /docs/new/todolist.txt
У цьому прикладі file.txt перейменовується в todolist.txt
Аналогічно можна переміщати та перейменовувати директорії.
Тепер, коли ви знаєте базові команди для роботи з терміналом Linux, настав час познайомитися з файловою системою.
Командний рядок Linux: короткий курс для початківців
Як працювати з командним рядком та базовими командами.
Ця інструкція - частина курсу "Linux: гарячі клавіші та команди".
Дивитись весь курс
Вступ
У цьому посібнику ми коротко ознайомимося з роботою в командному рядку в Ubuntu 20.04.
Вимоги
Для різних операційних систем командний рядок можна відкривати за допомогою програм:
- Mac OS X: Terminal (default), iTerm 2;
- Windows: PuTTY;
- Linux: Terminal, KDE Konsole, XTerm.
З детальним описом команд для Ubuntu можна ознайомитись у офіційній документації.
Вхід на сервер через термінал
В операційній системі Ubuntu 20.04 відкрити командний рядок можна двома способами: через консоль та через графічний термінал.
Для роботи через консоль слід натиснути клавіші Ctrl+Alt+F1, для повернення в графічний інтерфейс — клавіші Ctrl+Alt+F7.
Щоб запустити термінал, натисніть клавіші Ctrl+Alt+T.
Внизу екрана розміщується запрошення командного рядка - послідовність символів, що сповіщає про готовність до обробки команд:
kamilla@kamilla-Aspire-V3-371:~$
- kamilla - Ім'я поточного користувача (суперкористувач/адміністратор);
- kamilla-Aspire-V3-37 - Ім'я хоста (сервер);
- : - Розділювач;
- ~ - поточна директорія (у якій папці виконується команда) користувача (за умовчанням /home/);
- $ - Символ запрошення введення для користувачів зі звичайними правами;
- # — символ запрошення введення для суперкористувача/адміністратора root (наприклад, root@cs49647:~#).
Базові команди, які використовуються при налаштуванні сервера
Після створення нового сервера необхідно зробити кілька кроків щодо його базового налаштування.
Щоб відкрити сервер під обліковим записом користувача, введіть команду:
ssh-p №port demo@adress
- №port - Номер заданого порту при початковому налаштуванні сервера;
- demo - Ім'я користувача;
- adress - IP-адреса сервера.
Для входу на сервер під обліковим записом root використовуйте команду, замінивши SERVER_IP_ADDRESS на публічну IP-адресу вашого сервера:
ssh root@SERVER_IP_ADDRESS
Щоб створити новий обліковий запис користувача, введіть команду, замінивши ім'я DEMO на будь-яке інше необхідне ім'я:
Щоб відкрити конфігураційний файл у текстовому редакторі під користувачем root, введіть команду:
nano /etc/ssh/sshd_config
Для заміни рядка у конфігураційному файлі, знайдіть, наприклад, рядок Port 22 і замініть число 22 на будь-яке інше число (від 1025 і до 65536).
Після внесення змін збережіть і закрийте файл, натиснувши клавіші CTRL-X, потім клавішу Y, потім клавішу ENTER.
Для перезапуску сервісу SSH виконайте таку команду:
service ssh restart
Для виконання команди з привілеями root-користувача перед нею слід поставити слово sudo:
sudo command_to_run
Щоб завершити сесію, виконайте команду:
Оглядовий опис команд, аргументів та опцій для них
Для запуску команди слід ввести команду та натиснути клавішу Enter.
Команди виконуються послідовно, для виконання наступного з'явиться запрошення командного рядка (якщо не використовувати спеціальні скрипти).
Щоб відкрити сторінку з детальним описом команди Linux, наприклад ip address, введіть команду man з ім'ям команди:
Запуск без аргументів та опцій
Під час запуску команд без аргументів:
- cd - Повернення в домашню директорію поточного користувача;
- ls — виведення списку файлів та директорій у поточному каталозі.
Приклад:
Виконавши команду ls без параметрів, отримуємо список файлів у каталозі:
testk@cs49647:~$ ls
linux.jpg template ubuntu.jpg
Запуск із аргументами (параметрами)
Більшість команд розраховано на запуск із передачею аргументів (параметрів).
Найбільш поширене використання команди cd — виклик із аргументом, який є шляхом до директорії, до якої слід перейти:
Запуск із опціями
Багато команд також підтримують опції (прапори, ключі) запуску, що дозволяють змінювати результат виконання команди.
Приклад:
Виконавши команду ls з опціями -A, -S, -1, отримуємо список всіх файлів, включаючи «приховані», розміщені по одному на кожному рядку та відсортовані за розміром:
testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter
Запуск з аргументами та опціями (одночасно)
Структура запису команди з опціями та аргументами:
команда -опції аргументи
Приклад:
Команда ls -la /home виведе докладний (-l) лістинг директорії /home, включаючи приховані файли (-a):
testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x 3 root root 4096 14 жовтня 16:13 .
drwxr-xr-x 22 root root 4096 Oct 20 10:25 ..
drwxr-xr-x 4 testk testk 4096 10 жовтня 10:52 testk
Змінні оточення
Окруження/середовище (environment) — це набір пар ЗМІННА=ЗНАЧЕННЯ, які можуть використовуватися процесами, що запускаються.
Перегляд змінних оточення
Щоб подивитися своє оточення, введіть команду без аргументів:
Залежно від конфігурації системи, виведення списку змінних оточення може зайняти кілька екранів, тому краще використовувати команду:
Перегляд значення змінної
Змінні оточення можуть формуватися як із великих, так і з малих знаків, але історично повелося назвати їх у верхньому регістрі.
Щоб вивести на екран значення якоїсь змінної оточення, достатньо набрати echo $ІМ'Я_ЗМІННОЙ, наприклад, перегляд домашньої директорії користувача, що зберігається в змінній оточенні $HOME:
Для переходу до домашньої директорії слід використовувати команду:
Встановлення змінних оточення
Для встановлення значень змінної оточення введіть команду:
VAR - Назва змінної;
value - Значення змінної.
Приклад:
Виконавши команду var=value, після виведення на перегляд отримуємо результат value:
testk@cs49647:~$var=value testk@cs49647:~$ echo $var value
Висновок
Ми познайомилися з принципами роботи у командному рядку та базовими командами.
У наступних статтях циклу, що описує принципи роботи в Linux, ви вивчите з роботою в bash (змінні, умови, цикли, приклади простих скриптів), а також ознайомтеся з керуванням файлами та каталогами, створенням користувачів та налаштуванням прав.
Основні команди Linux: майже повний посібник з прикладами
Зареєструйтесь на панелі керування
І вже за кілька хвилин зможете орендувати сервер, розгорнути бази даних або забезпечити швидку доставку контенту.
Читайте також:
Резервне копіювання з Bacula
Розгортаємо React-додаток на Nginx
Налаштування Visual Studio Code для Python