Вирішення типових завдань.

Завдання

При зміні поточного каталогу командою cd зробити таке.

Варіант 1.

За наявності папки venv активувати віртуальне оточення python

Варіант 2.

За наявності файлу start.sh запустити його.

Варіант 3.

Виводити список усіх файлів та дерикторій.

Основи роботи з Linux. -> Вирішення типових завдань на BASH.

Вирішення типових проблем на BASH.

Будь-який bash-скрипт повинен починатися з рядка:

#!/bin/bash

Ви хочете знати значення всіх знаків пунктуації у консолі.

Зовнішній вигляд консолі багато в чому залежить від ОС.

Розберемо основні знаки для ОС Linux.

$ - в кінці командного рядка означає, що ви залогінені як звичайний користувач # - як суперкористувач.

~ - позначає домашню директорію.

Ви хочете знати, в якій директорії знаходитесь.

Команда pwd.

У неї є 2 аргументи -L і -P, які будуть показувати різні каталоги, якщо ви використовуєте символічне посилання.

Ви хочете знайти та запустити певну команду в BASH

Всі шляхи до команд, що виконуються, знаходяться в змінній PATH.

Існує низка корисних команд.

type - покаже тип команди (файл, вбудована команда чи ключове слово) провівши пошук у PATH

$ type ls
ls is aliased to `ls -F -h'

man - документація за будь-якою командою.

man ls

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

compgen - виводить список усіх ключових слів, команд та функцій мови.

-с - команди

-b - функції

-k - ключові слова

Необхідно вивести докладнішу інформацію про файл.

Використовуємо ls, stat, file чи find команди.

ls -l /tmp/sample_file

stat /tmp/sample_file

file /tmp/sample_file

Ключі для ls

-a - Відображає приховані файли, що починаються з .

-l – довгий формат

-R - рекурсія з піддиректорій

-S - сортує за розміром

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

ls -d .*
ls -d .r*

Необхідно в рядок помістити змінну поряд зі знаком $

Використовується екранування.

echo "$USER won't pay \$5 for coffee."

Необхідно перевизначити існуючу команду.

Перевизначити можна у .bashrc

cd () {
    builtin cd "$@"
    echo "$OLDPWD --> $PWD"
}

$@ - зарезервована змінна, в якій містяться всі змінні командного рядка.

Список зарезервованих змінних.

$UID - …містить реальний ідентифікатор, який встановлюється лише за логіни.

$FUNCNAME - ім’я поточної функції у скрипті.

$GROUPS - масив груп, до яких належить поточний користувач

$HOME - домашній каталог користувача

$HOSTTYPE - архітектура машини.

$LC_CTYPE - внутрішня змінна, яка визначає кодування символів

$OLDPWD - колишній робочий каталог

$OSTYPE - тип ОС

$PATH - шлях пошуку програм

$PPID – ідентифікатор батьківського процесу

$SECONDS - час роботи скрипта(у сек.)

$# - загальна кількість параметрів переданих скрипту

$* - всі аргументи передані скрипту (виводяться в рядок)

$@ - те саме, що й попередній, але параметри виводяться в стовпчик

$! - PID останнього запущеного у фоні процесу

$$ - PID самого скрипту

$- - рядок, що містить усі поточні прапори командної оболонки.

Наприклад, прапор i вказує про інтерактивний режим.

Можна перевірити інтерактивність у програмі так.

#!/usr/bin/env bash

case "$-" in
    *i*) # Code for interactive shell here
    ;;
    *)
    # Code for noninteractive shell here
    ;;
esac

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

Використовуйте оператор printf, який працює так само як у С++

printf '%s = %d\n' Lines $LINES

printf '%-10.10s = %4.2f\n' 'Gigahertz' 1.92735