Автоматизация GDB с помощью xdotool

Понадобилось в отладчике gdb очень много раз повторить одинаковое действие, чтобы поймать значения переменных, которые были в момент сегфолта.

Открыл 2 терминала, в одном запустил программу под gdb, поставил точку остановки (breakpoint), запустил (run), другой средствами оконного менеджера закрепил поверх других окон, запустив в нем:
sleep 5; while true ; do xdotool type c && for type in A B ; do xdotool key KP_Enter && xdotool key p && xdotool key space && for i in $type E V R ; do xdotool type $i ; done; done && xdotool key KP_Enter ; sleep 0; if ! ps aux | grep -vE 'gdb|grep' | grep -q '/usr/bin/python3 /usr/bin/livecd-creator' ; then break ; fi; done
Этот код вводит нужные команды в gdb и проверяет, не остановился ли процесс, т.е. не произошел ли сегфолт, а если произошел, то перестает их вводить. Пошел по своим делам, оно само отработало, вернулся, передо мной был наглядный результат.

Как на коленке записывать, сколько памяти занято и чем в Linux

Понадобилось раз в N минут записывать, сколько памяти занято и чем.
Читать далее Как на коленке записывать, сколько памяти занято и чем в Linux

Скачиваем альбом или все треки исполнителя с Яндекс Музыки бесплатно

Программа youtube-dl умеет скачивать в т.ч. и с Яндекс.Музыки.
Читать далее Скачиваем альбом или все треки исполнителя с Яндекс Музыки бесплатно

Распаковка AppImage

AppImage-ы, собранные свежими версиями AppImage Kit, можно легко распаковать, например, для правки файлов перевода. Рассмотрим на примере ночных сборок Kdenlive 19.04.

Сначала создаем отдельную папку, в которую будем распаковывать AppImage. Я обычно для таких целей использую ~/.local/lib/ (по умолчанию такой директории нет, я ее придумал сам).
И так, создадим папку и переведем терминал в нее:

mkdir -p ~/.local/lib/kdenlive/
cd ~/.local/lib/kdenlive/

Читать далее Распаковка AppImage

Как в Linux/BSD распараллелить скачивание файлов по списку

Дано: есть список ссылок для скачивания в текстовом файле, по ссылке на строку, файл называется input.txt.
Задача: скачивать по N файлов одновременно, то есть скачивать список в N потоков.

Не путать с множеством потоков скачивания одного файла. Здесь мы качаем N файлов одновременно, и каждый файл качается в один поток.

Делается так:
parallel -a <(cat "input.txt") -P 16 wget "{1}"
Предварительно установить wget и parallel.

Пример с реализацией в скрипте скачивания аудио-книг с сайта "Книга в ухе" (knigavuhe.com):
https://gitlab.com/mikhailnov/kvigavuhe-download/blob/master/download.sh#L43

UPD. Дополнение от Романа Кудоярова:
"Можно xargs заюзать. И не ставить parallel
< input.txt | xargs -n 1 -P 16 -I {} wget {} "

Автоматически обрезать поля в PDF

Понадобилось в PDF на всех страницах автоматически убрать поля, т.к. большие поля мешают чтению PDF на и так маленьком экране электронной книги.
Читать далее Автоматически обрезать поля в PDF

Автоматизация пересборки зависимых пакетов при обновлении библиотек в Росе

(Эта статья будет дописываться) Как составить список пакетов для пересборки, смотрите статью №698. Нужно сделать текстовый файл с построчным списком пакетов. Предположим, что этот файл называется krb5.list .
Читать далее Автоматизация пересборки зависимых пакетов при обновлении библиотек в Росе

Автоматическое обновление Ubuntu

UPD: приведенный ниже скрипт превратился в целую систему автообновлений с блокировкой выключения во время обновления: system-autoupdate


Замучился постоянно устанавливать обновления на сервер с Ubuntu, unnatended-upgrades не хочу конфигурировать, да и делает он не совсем то, что нужно, поэтому сделал автообновление системы скриптом. Его код ниже. Что делает скрипт, прописано в коде комментариями.
Читать далее Автоматическое обновление Ubuntu

Восстановление пакетов на Archlinux/Manjaro

Получение списка установленных пакетов для быстрого восстановления системы с помощью pacman.
Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система «упала» и её сложно восстановить, pacman может легко переустановить эти пакеты.

Сначала сохраните в список пакеты (доступные в репозитории):

pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist

Безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений):

comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist

Сохраните этот файл на флэшке или на другом носителе.

Скопируйте файл pkglist в новую систему, перейдите в эту папку. Для восстановления используйте команду:

pacman -S $(cat pkglist)

Хочу заметить, для восстановления программ, установленных из aur, этот метод не работает.

Дополнение от Ивана Архипова
Получение списка пакетов установленных и из AUR:

sudo pacman -Qe > pkglist2

Восстановление:

yaourt -S $(cat pkglist2)

Автор: Олег Плужник
Другие публикации статьи: vk.com/nixscript

Перевод справки по команде trans

Translate Shell (ранее Google Translate CLI) — это программа-переводчик для командной строки терминала основанный на Google (по умолчанию), Bing переводчик, Яндекс.Перевод и Apertium. Это дает вам легкий доступ к одному из этих движков перевода в терминале.

Translate Shell брать отсюда: https://github.com/soimort/translate-shell
Установить прямо в терминале, не заходя в браузер:

$ wget git.io/trans
$ chmod +x ./trans
$ chown root:root ./trans
$ sudo mv ./trans /usr/bin/trans

Оптимальный набор параметров чтобы выдавало только перевод, без фонетики и вариантов:

$ trans -t ru -b -d -no-autocorrect "Текст для перевода"

Удобно в скриптах использовать.

Читать далее Перевод справки по команде trans