Команди bash. Работа в консоли
Основи роботи з Linux. -> Пишемо команду склеювання відеофайлів.
Розберемо що є команда.
Будь-яка команда - це програма (файл), написана якоюсь мовою.
Зазвичай в Linux команди пишуть на bash, але вона може бути написана на будь-чому включаючи python.
Щоб команда стала доступною для виконання, потрібно виконати 2 умови.
-
Файл, що описує її програму, повинен мати права на виконання.
chmod +x myfile.py
-
Файл повинен знаходитися в одному зі шляхів, вказаних у $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 - запускаємо конвертацію за списком
Основи роботи з Linux. -> Практика.
Завдання 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 - файл, що виконується першим при запуску терміналу.