#bash
Пример конвейрера, который считает размер всех файлов, которые были установлены из пакета RPM:
Пример конвейрера, который считает размер всех файлов, которые были установлены из пакета RPM:
$ rpm -lq atom | while read line; do [ -f $line ] && echo $line; done | xargs du -ch
#bash
Восстановление файловой системы из архива с одной машины на другую по сети через SSH:
Предположим, что система на
Команду
У
SSH запускается в не-интерактивном режиме, запуская на хосте
Такой же трюк можно провернуть с полного восстановлением образа накопителя, сделанного например командной
Восстановление файловой системы из архива с одной машины на другую по сети через SSH:
$ cat archive.tgz | pv | ssh [email protected] tar -C /mnt/sda1 -zxf -
Предположим, что система на
192.168.1.1 загружена с какого-либо служебного образа (PartedMagic, SystemRescueCD, ...) и накопитель подмонтирован в /mnt/sda1.Команду
pv (pipe viewer) вставил в конвейер для того, чтобы видеть процесс передачи данных.У
tar заданы следующие опции:-z — указывает, что мы хотим работать с форматом сжатия GZip.-x — говорит, что мы хотим распаковать архив.-f - — имя источника архива. В нашем случае указан "-" что означает stdin (стандартный поток ввода.)SSH запускается в не-интерактивном режиме, запуская на хосте
192.168.1.1 указанную команду (tar), и передавая данные со своего stdin на вход команды, выполняемой удалённо.Такой же трюк можно провернуть с полного восстановлением образа накопителя, сделанного например командной
dd. Разумеется, на удалённой стороне уже может быть не tar запущен, а тот же dd.Как воспроизвести музыкальную композицию в консоли, при этом с возможностью управлять воспроизведением из скрипта?
Вот так:
#linux #bash
Вот так:
#!/bin/bashОписание функциональности
MUSIC_FILE="audio-file.ogg"
FIFO_FILE="control"
mkfifo "$FIFO_FILE"
mplayer -quiet -slave -input file="$FIFO_FILE" "$MUSIC_FILE" > /dev/null 2>&1 &
sleep 1
echo stop > "$FIFO_FILE"
rm "$FIFO_FILE"
exit 0
mplayer: https://www.mplayerhq.hu/DOCS/tech/slave.txt#linux #bash
memory heap
В Хьюстоне, штат Техас (США) строят первый двухэтажный дом методом печати на 3D-принтере. Источник: https://www.reuters.com/technology/3d-printing-reaches-new-heights-with-two-story-home-2023-01-12/ Обратите внимание, что часть печатающей головки, через…
Отдельная история о том, как мне удалось скачать видео с сайта
Дело в том, что сайт использует проигрыватель видео, который скачивает видео по частям в формате
В итоге выяснил, что части видео подгружаются по таким ссылкам:
- Команда
- Цикл
- Собственно
-
-
#bash #linux #hacks
reuters.com.Дело в том, что сайт использует проигрыватель видео, который скачивает видео по частям в формате
ts ("MPEG transport stream", также называемый "MPEG-TS") "на лету", и никаких официальных средств скачать видео нет. Пришлось открыть панель разработчика в браузере (Ctrl+Shift+i в Firefox) и посмотреть, какие файлы загружаются по сети.В итоге выяснил, что части видео подгружаются по таким ссылкам:
https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_00001.tsПоскольку мы знаем теперь, в каком диапазоне идёт нумерация фрагментов, и видим также, что ссылка в остальном не меняется, то можем написать скрипт на Bash, который скачивает части видео через
...
https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_00017.ts
wget, склеивает их в один файл и конвертирует в mp4 через ffmpeg:#!/bin/bashГде:
for num in $(seq -f %02g 1 17); do
wget "https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_000${num}.ts"
done
cat *.ts > all.ts
ffmpeg -i all.ts -acodec copy -vcodec copy all.mp4
- Команда
seq -f %02g 1 17 генерирует последовательность чисел 01..17 с добавлением дополнительных нулей перед числом, если оно однозначное (благодаря формату %02g.- Цикл
for подставляет значения из диапазона чисел, как значение переменной num — эта переменная используется в цикле для подстановки номера фрагмента видео в ссылку для скачивания.- Собственно
wget скачивает видео по ссылке. ${num} — это как раз место подстановки номера видео.-
cat *.ts > all.ts склеивает фрагменты в один файл.-
ffmpeg конвертирует формат ts в mp4.#bash #linux #hacks
⚡2
Chet Ramey, Bash.pdf
128.8 KB
Chet Ramey, сопровождающий GNU Bash, написал хорошую статью про (внезапно!) GNU Bash, где описаны его возможности и связанные стандарты (в частности, POSIX.2: Shell and Utilities (IEEE Std 1003.2-1992)).
Источник:
https://tiswww.case.edu/php/chet/bash/article.pdf
#gnu #bash #shell
Источник:
https://tiswww.case.edu/php/chet/bash/article.pdf
#gnu #bash #shell