Команды bash.
Основы работы с 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 - файл выполняющийся первым при запуске терминала.
Основы работы с 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
Создать команду, добавляющую строку ===> в приглашение терминала.