Bash. Початок використання.

Основи роботи з Linux. -> Bash. Робота з рядками. Команди tail head join wc sort sed.

Bash. Робота з рядками. Команди tail head join wc sort sed.

head tail

Показують початкові та кінцеві рядки файлів

head -4 /etc/passwd

tail -4 /etc/passwd

Може використовуватися з -f для відстеження додавання нових рядків.

Команда join з’єднує поля ф файлах.

//displaying the contents of file1.txt//
$cat file1.txt
1 AAYUSH
2 APAAR
3 HEMANT
4 KARTIK
5 DEEPAK

//displaying contents of file2.txt//
$cat file2.txt
1 101
2 102
3 103
4 104

//using join command//
$join file1.txt file2.txt
1 AAYUSH 101
2 APAAR 102
3 HEMANT 103
4 KARTIK 104
Основи роботи з Linux. -> Bash. Початок використання. Ввід вивід.

Bash.

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

Інтерфейс командного рядка комп’ютера надає вам тісний зв’язок із операційною системою (ОС). “Командний рядок” - це загальний термін, що відноситься до засобів, що передають команди до інтерактивної системи комп’ютера. Командний рядок містить величезну кількість функцій, відточених та відшліфованих за десятиліття використання. Командний рядок з’явився з першими операційними системами, і нею користувалися, доки створено GUI.

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

Інтерфейс командного рядка дає можливість написання скриптів (сценаріїв, script).

Чому Bash?

Оболонка bash існує вже кілька десятиліть, доступна майже в кожній версії Linux і навіть з’явилася у Windows.

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

ls -l

start page

Зверніть увагу: у прикладі з результатом є символ $ . Символ $ , ко- який ви бачите на початку команди, не є частиною цієї команди, а показує простий фрагмент командного рядка оболонки. Це дозволить вам розрізняти команду (у тому вигляді, в якому її треба запровадити) та її результат у терміналі.

Запуск Linux та bash у Windows дозволяють Git Bash Cygwin

Одна з базових операцій bash - виконання команди, тобто запуск пов’язаної з цією командою програми. Коли ви ввели кілька слів у командний рядок, bash передбачає, що перше слово - це назва програми, яку потрібно запустити, а решта - аргументи команди. Наприклад, щоб bash запустила команду під назвою mkdir і передала їй два аргументи -p і /tmp/scratch/ garble, потрібно ввести наступне:

mkdir -p /tmp/scratch/garble

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

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

Команди, аргументи, вбудовані функції та ключові слова

Команди, які можна запустити, визначають або файли, або вбудовані функції, чи ключові слова.

Файли — це програми, що виконуються, які стають результатом компі- ляції і тепер складаються з машинних команд. Прикладом такого додатку служить програма ls. У більшості файлових систем Linux цей файл знаходиться у каталозі /bin/ls.

Переглянути де знаходиться файл команди

whereis ls

start page

Вивести вміст

cat /bin/ls

Інший тип файлу – це скрипт. Це текстовий файл, який може прочитати людина. Скрипт пишеться однією з мов, підтримуваних вашою системою, за допомогою інтерпретатора (програми) для цієї мови. Прикладами мов для написання скриптів можуть бути bash, Python і Perl.

Коли ми пишемо скрипти для командного рядка, то починаємо із вказівки інтерпретатора для ОС.

#!/bin/bash

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

#!/usr/bin/env bash

або для пітона

#!/usr/bin/env python

Тут, щоб знайти розташування bash, використовується команда env .

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

Перегляд типу команди

type pwd
type find

start page

Існують і інші слова, які виглядають як команди, але насправді є частиною мови оболонки, наприклад if. Це слово часто використовується як перше слово в командному рядку, але це не команда. Це ключове слово.

Можна використовувати команду compgen -k, щоб визначити, які вбудовані команди функції та ключові слова доступні.

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

Стандартне введення/виведення/помилка

На жаргоні фахівців із операційних систем запущена програма називається процесом. Кожен процес у середовищі Unix/Linux/POSIX (і, отже, в Windows) має три різні файлові дескриптори. Дескрипторам присвоєно такі назви: стандартне введення (скорочено stdin), стандартне виведення (stdout) та стандартна помилка (stderr).

Програміст вирішує, надіслати результат у stdout або stderr.

Перенаправлення та конвеєр

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

Проста програма для читання введення з клавіатури hello.sh.

#!/bin/sh
read name
echo "Welcome" "$name"

Вводимо дані з файлу та виводимо у файл.

hello.sh < data.in > results.out

А що робити зі stderr? Синтаксис у разі схожий. При перенаправленні даних, що виводяться програмою, потрібно розрізняти stdout та stderr, і ми створюємо ця відмінність за допомогою номерів файлових дескрипторів.

Stdin — це файловий дескриптор 0,

stdout - файловий дескриптор 1,

stderr - файловий дескриптор 2.

Таким чином, ми можемо перенаправити повідомлення про помилки:

hello.sh 2> err.msgs

Зрозуміло, ми можемо виконати всі три дії одним рядком коду:

hello.sh < data.in > results.out 2> err.msgs

Можна поєднати помилки з результатом.

hello.sh < data.in > results.out 2>&1

Скорочена форма.

hello.sh <data.in &> results.out

Щоб бачити результати у командному рядку та одночасно перенаправляти їх у файл, використовуйте команду tee . Наступний приклад виводить результати виконання команди handywork на екран і одночасно зберігає їх у файл results.out :

hello.sh | tee results.out

Символ | відомий як “пайп” (pipe). Вказавши його, можна використовувати результати однієї команди як вихідні дані для іншої.

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

Виконує команди у фоновому режимі.

Пінгуємо сервер.

ping 8.8.8.8 > log.txt &

Для отримання списку завдань, які зараз виконуються у фоновому режимі, можна використовувати команду jobs