Команди bash. Работа в консоли

Основи роботи з Linux. -> Пишемо команду склеювання відеофайлів.

Розберемо що є команда.

Будь-яка команда - це програма (файл), написана якоюсь мовою.

Зазвичай в Linux команди пишуть на bash, але вона може бути написана на будь-чому включаючи python.

Щоб команда стала доступною для виконання, потрібно виконати 2 умови.

  1. Файл, що описує її програму, повинен мати права на виконання.

    chmod +x myfile.py

  2. Файл повинен знаходитися в одному зі шляхів, вказаних у $PATH.

Файл команди може бути текстовим (читабельним) або бінарним - результат компіляції мов як C++.

Файл .bash_aliases

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

Наприклад

alias vjoin=’~/www/doc/shell/videojoin.sh’

У цьому випадку під час запуску команди vjoin у консолі буде виконано файл videojoin.sh у домашньому каталозі.

Файл videojoin.sh

rm ./output.mp4
echo '' > list.txt
for entry in ./*.mp4
do
  echo "file $entry" | sed -e "s/.\///" -e "" >> list.txt
done
ffmpeg -f concat -i list.txt -codec copy output.mp4

Ця невелика програма відсортує та склеює відеоролики з каталогу в один файл.

1 - видаляємо файл output.mp4 у поточній папці

2 – створюємо порожній файл list.txt

3 - проходимо по всіх файлах відео з розширенням mp4

4 - записуємо ім’я кожного в тектовик

5 - запускаємо конвертацію за списком

Завдання 1.

Варіант 1.

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

Варіант 2.

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

Завдання 2.

Варіант 1

Створити програму на BASH (команду), що виводить на екран вміст всіх файлів поточного каталогу.

Варіант 2

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

Завдання 3.

Варіант 1

Створити команду, яка додає каталог bin у поточному каталозі змінну $PATH.

Варіант 2

Створити команду, яка додає рядок ===> на запрошення терміналу.

Основи роботи з Linux. -> Робота в консолі. Команди bash.

Команди BASH

корисне посилання

Виведення на екран

echo $змінна | рядок | "рядок $змінна"

Змінні та їх виведення у консоль.

#!/bin/bash
STR="Hello World!"
echo $STR
echo $PATH # змінна пошуку команд
echo "$PATH - змінна пошуку" # форматування рядка

Команда переправлення висновку

echo 'hello' > filename.txt
echo 'hello' >> filename.txt

Змінна PATH

echo $PATH
  • це мета, де система шукає виконувані файли-команди, наприклад python

    whereis python

  • виведе всі місця, де знаходяться файли для пітона

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

PATH=$PATH:~/opt/bin

Або

PATH=~/opt/bin:$PATH

Команда pwd.

  • Висновок поточної директорії

Зміна директорії. Команда cd

cd ~ # домашня директорія

cd / # коренева директорія

cd dirname/subdir # зміна директорії

cd .. # підняття на рівень вгору

Перегляд директорії. Команда ls.

ls # короткий список
ls -l # повний список
ls -la # включаючи приховані файли
ls -lh # c коротким розміром

Команда grep.

grep -rn 'string' # пошук файлів з рядком із зазначенням номера рядка

Об’єднання команд оператор |.

ls-la | grep 'substr' # пошук файлів і директорій, що містять підрядок

Команда mkdir (створення директорії).

mkdir dirname

Команда rm.

rm ./filename # видалення файлу
rm -R dirname # видалення директорії та її вмісту

Команда nano.

nano ./filename # редагування файлу
  • ctrl+o - запис до файлу

  • ctrl+x - вихід із редактора

Команда cat

cat filename

виведення вмісту файлу

Системна змінна $PS1

Змінює зовнішній вигляд запрошення.

echo $PS1
PS1='>>>'
export PS1='<<<'

Команда chmode.

chmod +x ./filename # зробити файл виконуваним
chmod 777 ./filename # зміна прав на файл
chmod 667 -R dirname # зміна прав на вміст директорії

Команда chown.

chown -R user:user dirname # зміна власника та групи директорії та всього вмісту рекурсивно

Рядок, що визначає вміст файлу (якою мовою python, php, bash і т.д.).

#!/bin/bash
#!/usr/bin/env python

Мова bash

Довідник з вбудованих команд

Перенаправлення введення-виведення

>> > - перенаправляє у файл

| - з'єднує виведення однієї команди із введенням іншої

Команда source та запуск bash скриптів.

myscript # запуск команди (файлу) із системних директорій
./myscript # запуск файлу з поточної дерикторії
source ./myscript # запуск скрипту в поточній сесії терміналу (оболонки) shell у поточному процесі
. ./myscript # аналог попередньої команди

Використання точки говорить про поточну директорію (що не знаходиться в змінній PATH) без точки інтерпретатор шукатиме файл у $PATH.

Використання source дозволяє змінювати оточення оболонки, т.к. виконується над новому процесі як із звичайному запуску (без source).

Умова. Перевіряємо існування файлу .bashrc

cd () {
    builtin cd ${1:+"$@"} # виконуємо оригінальну команду з параметрами
    if [ -f "env.sh" ] # перевіряємо існування файлу
    then
     source ./env.sh # запускаємо файл
    fi
}

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