Хитрості командного рядка linux

- Використання Операторів «Grep АБО / Grep І / Grep НЕ» в BASH
- Друк Стовпців (Колонок) у Bash за допомогою AWK
- Видалення Перших та Останніх Символів зі Строк у Bash
- Додати Символ на Початку або в кінці кожного рядка з AWK і SED
- Перевірити Чи існує файл
- Надрукувати Usage та Перервати Скрипт при Незаданих Аргументах
- CASE - Оператор Вибору в Bash
- "Так/Ні" в Bash Скрипті - Запит Підтвердження
- Виконати та Повторити Команду N Раз у Bash
Використання Операторів «Grep АБО / Grep І / Grep НЕ» в BASH
Оператор Grep ‘OR’
Знаходимо всі рядки у файлі, які містять будь-які з перерахованих шаблонів.
Використовуючи командуGREP :
Використовуючи командуAWK :
Використовуючи командуSED :
Оператор Grep ‘AND’
Знаходимо і друкуємо рядки, що містять усі перелічені патерни.
Використовуючи командуGREP :
Використовуючи командуAWK :
Використовуючи командуSED :
Оператор Grep ‘NOT’
Знаходимо та друкуємо рядки, які не містять зазначений патерн.
Використовуючи командуGREP :
Використовуючи командуAWK :
Використовуючи командуSED :
Друк Стовпців (Колонок) у Bash за допомогою AWK
AWK - це потужний інструмент командного рядка, який можна використовувати для обробки вхідних даних у вигляді стовпців.
За допомогою прикладів цієї статті, Ви зможете вирішувати такі поширені завдання, як :
- Друк Стовпців за номерами
- Змінювати Розділювачі Колонок
- Виключати Певні Стовпці
- Друкувати або Виключати Діапазон Стовпців
Друк Стовпців за номерами за допомогою AWK
Вивести усі стовпці.
Друкувати третій стовпець.
Надрукувати перший і третій стовпці.
Змінити Розділювач Колонок в AWK
За умовчаннямAWK, як роздільник колонок, використовує пробіли та табуляції.
Використовувати «,» (ком) як роздільник і вивести 2-у колонку.
Використовувати «:» (двокрапка) як роздільник і надрукувати третій стовпець.
Виключити Стовпці за допомогою AWK
Надрукувати всі стовпці, крім 3-го.
Надрукувати всі стовпці, за винятком 1-го та 2-го.
Друкувати або Виключити Діапазон Стовпців за допомогою AWK
Вивести колонки з 2-ї по 4-ту.
Виключити спектр стовпців з 2-го по 4-ий і надрукувати всі інші.
Видалення Перших та Останніх Символів зі Строк у Bash
Я створив файл з таким вмістом і використовуватиму його в прикладах нижче. Допустимо нам необхідновидалити кілька символів з початку та з кінця кожного рядка цього файлу.
Видалити Перші N Символів Кожного Рядка
Використовуйте наступну команду, щобвидалити перші 5 символів кожного рядка (видаляємо перші 5 символів і друкуємо кожен рядок, починаючи з 6-го символу) :
Друк Рядки Між Заданими Символами
Використовуйте наступну команду, щобнадрукувати вміст кожного рядка між 9-м та 20-м символами у Bash :
Друк Перших N Символів Кожного Рядка
Використовуйте наступну команду, щобнадрукувати перші 20 символів кожного рядка в Bash :
Видалити Останній Символ Кожен Рядки
Використовуючи поєднання командrev erse таcut, ми можемовидаляти останні N символів кожного рядка, якпоказано нижче. (джерело) Використовуйте наступну команду, щобвидалити останній символ кожного рядка в Bash :
Видалити Останні N Символів Кожного Рядка
Використовуйте наступну команду, щобвидалити останні 8 символів кожного рядка в Bash :
Додати Символ на Початку або в кінці кожного рядка з AWK і SED
Я створив файл з таким вмістом і використовуватиму його в прикладах нижче :
Допустимо нам необхіднододати символи на ПОЧАТКУ або в КІНЦІ кожного рядка цього файлу.
Додати Символи на ПОЧАТКУ Кожний Рядки
Використовуйте такі команди, щоб додати один або кілька символів у ПОЧАТКУ кожного рядка файлу :
Додати Символи в КІНЦІ Кожний Рядки
Використовуйте наступні команди, щоб додати будь-який текст у КІНЦІ кожного рядка файлу :
Додати Точку із Комою в Кінці Кожної Рядки
Використовуйте наступну команду AWK для того, щоб вставити «;» (точку з комою)в КІНЦІ кожного рядка файлу :
Додати Символи в ПОЧАТКУ та в КІНЦІ Строк
Використовуйте наступні команди, щоб додати будь-який префікс у ПОЧАТКУ та якийсь суфікс у КІНЦІ кожного рядка файлу :
Додати Коми та Надрукувати в Одну Рядок
Я часто використовую наступну команду для того, щоб додати в кінці кожного рядка файлу, крім останнього, за комою, а потім вивести весь файл в один рядок:
Перевірити Чи існує файл
У процесі написання BASH скриптів дуже часто виникає ситуація, коли необхідно перевірити існування файлу, перш ніж робити будь-які дії.
Ця робота для командиtest (те ж, що і[] ). Ця команда дозволяє проводити ряд тестів, і після закінчення встановлює кодзавершення дорівнює 0 (правда) або 1 (брехня), залежно від того, чим закінчився тест.
Основні параметри
| -e | Повертає значення, якщо файл існує |
| -f | Повертає значення, якщо файл існує і це звичайний файл |
| -r | Повертає значення, якщо файл існує і він доступний для читання |
| -w | Повертає значення, якщо файл існує і він доступний для запису |
| -x | Повертає значення якщо файл існує і він виконується |
1. Перевіримо, чи існує файл /etc/passwd і надрукуємо Файл Знайдений, якщо він існує :
2. Перевіримо чи існує файл /etc/passwd і надрукуємо Файл НЕ Знайдено, якщо він НЕ існує:
3. Перевіримо існування файлу /etc/passwd і виконаємо будь-яку дію, якщо він існує, або іншу дію, якщо цей файл НЕ існує:
Приклад BASH Скрипта
Цей скрипт перевіряє чи існує файл чи ні:
Збережіть та виконайте скрипт :
chmod +x script.sh./script.sh /path/to/SomeFile.txt The File '/path/to/SomeFile.txt' Does Not Exist./script.sh /etc/resolv.conf The File '/etc/resolv.conf' Exists
Надрукувати Usage та Перервати Скрипт при Незаданих Аргументах
Використовуйте наступну перевірку в shell скриптах, щоб :
1. перевірити кількість вхідних аргументів
2. вивести повідомлення про помилку, якщо кількість вхідних аргументів некоректна
3. перервати shell скрипт зі статусом помилки
| $# | змінна, що містить кількість аргументів, відданих скрипту |
| -eq 0 | перевіряємо, чи дорівнює кількість переданих аргументів нулю |
| $0 | повертає шлях до shell скрипту |
Приклад Bash Скрипта
Наступний скрипт використовує команду dig для пошуку DNS-сервера доменного імені. Домен, що перевіряється, повинен передаватися скрипту як аргумент.
Приклад виконання скрипту, якщо аргумент не вказано:
$ ./find_ns.shUsage: ./find_ns.sh domain_name
Приклад роботи скрипта при заданому аргументі: $./find_ns.sh shellhacks.com ns2.ukraine.com.ua. ns3.ukraine.com.ua. ns1.ukraine.com.ua.
CASE - Оператор Вибору в Bash
Базовий Синтаксис Оператора Вибору CASE
Приклад BASH Скрипт з Оператором CASE
Приклади роботи скрипта: $./testcase.sh Який Linux дистрибутив Ви знаєте?centos Гей! Це моя улюблена серверна операційна система! $ ./testcase.sh Який Linux дистрибутив Ви знаєте?rhel Гей! Це моя улюблена серверна операційна система! $ ./testcase.sh Який Linux дистрибутив Ви знаєте?ubuntu Я теж знаю ubuntu! Це операційна система, яка базується на Debian. $ ./testcase.sh Який Linux дистрибутив Ви знаєте?pfff Хмм, здається, я ніколи не використовував цей дистрибутив.
"Так/Ні" в Bash Скрипті - Запит Підтвердження
У bash скриптах дуже часто виникає необхідність призупинити виконання завдання іпоставити користувачеві питання, на яке той повинен відповістиТак або Ні.
Наприклад, перед виконанням потенційно небезпечної частиниbash скрипта, гарною ідеєю будезапитати підтвердження у користувача, запитавши — «Ви впевнені?».
У цій нотатці Ви знайдете три найпростіші ішвидких способузадати «Так/Ні» питання у bash скрипті.
Запит про Продовження у Bash
Найкращий спосібзапитати підтвердження на продовження у bash скрипті — це за допомогою команди read (джерело) :
Простий «Так/Ні» Питання в Bash
Одним із найпоширеніших способів постановки питань у bash скриптах - це комбінування команд read + case (джерело):
Вибираємо «Так/Ні» з Меню до Bash
Ще один легкий спосіб - за допомогою команди select (джерело):
Виконати та Повторити Команду N Раз у Bash
Іноді виникає необхідністькілька разів виконати одну і ту ж команду з командного рядка в Linux.
УBash існує проста конструкція, за допомогою якої команду можна прописати один раз, але зробити так, щоб вона булавиконана N разів.
З цієї невеликої нотатки ви дізнаєтеся, що найкращий спосіб, щобвиконати одну і ту ж команду N разів поспіль - це використовувати цикл FOR в Bash.
Повторити Команду Кілька разів на Linux Shell
Використовуйте наступний синтаксис, щоб виконати будь-яку команду 5 разів.
Давайте допоможемо Барту Сімпсону зі шкільною дошкою:
Якщо вам необхідно часто використовувати таку конструкцію, тоді не завадить створити відповідну функцію Bash (додайте в