Форум русскоязычного сообщества Ubuntu


Голосование

Нужна ли данная ветка

Да
Нет
Затрудняюсь ответить

Автор Тема: Полезные скрипты на bash  (Прочитано 32599 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #30 : 19 Июля 2020, 22:11:10 »
Dzhoser, Зачем так сложно?
Код: (bash) [Выделить]
MAXCOUNT=10
for i in $(seq $MAXCOUNT); do echo $RANDOM; done #просто случайные
for i in $(seq $MAXCOUNT); do echo $(( RANDOM % 10 )); done #от 0 до 9
echo "-----------------"

Код: (bash) [Выделить]
(( RANDOM % 2 == 0 )) && echo true || echo false
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #31 : 20 Июля 2020, 15:44:40 »
тему развивать никто не хочет,и не надо я сам продолжу
Dosifei, не буду спорить о полезности скрипта, но вот удобство...
Это скорее продолжение, ранее скаанного.
Речь не совсем о скрипте, в прямом смысле.
 Сегодня понадобилось внести записи в nvram UEFI. Вот примерная строка:
  efibootmgr -c -d /dev/sda -p 1 -L Linux -l '\EFI\linux\vmlinuz-xx' -u "root=/dev/sda2 initrd=/EFI/linux/initrd.img-xx quiet"Ошибившись три раза, рука потянулась за долотом. Примерная идея следующая. В файлменеджере выделяешь загрузчик, жмещь ентер. Скрипт парсит данные и на их основе генерит параметры для efibootmgr.
На текущий момент код такой:
(Нажмите, чтобы показать/скрыть)
С list и delete все просто, там ничего не изобретешь.  А вот create.
Пока что просто для проверки идеи, в лоб прописаны неколько стандартных вариантов. Как пойдет дальше, время покажет.
Сильно пока не тестировал, поэтому код привожу в "отладочном режиме". Echo просто выводит на экран получившуюся строку параметров. Но пару нужных мне записей создал.
Это код для mc.menu Midnight commandera. Его несложно трансформировать в обычный скрипт, но без ФМ сразу потеряется удобство.

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2537
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #32 : 21 Июля 2020, 09:16:48 »
Дай хоть чего нибудь в этой теме напишу полезное.

cd /media/data1/dir && ls -t -Ietc* | tail -n+31 | xargs -I{} rm {}

Использую для очистки резервных копий выгрузок базы данных PostgreSQL

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #33 : 21 Июля 2020, 11:50:37 »
ls -t -Ietc* | tail -n+31 | xargs -I{} rm {}
поясните, зачем? ls в конвейер - не самая лучшая идея.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2537
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #34 : 21 Июля 2020, 16:34:24 »
Вам бы только критиковать.
Скрипт работает, свою функцию выполняет.

По какой такой причине нельзя использовать ls в конвеере?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #35 : 21 Июля 2020, 17:02:00 »
Usermaster,
Цитировать
Утилита ls может искромсать имена файлов. В зависимости от платформы, на которой выработаете, от используемых вами аргументов (или не используемых), а также в зависимости от того, указывают ли на терминал стандартные выходные данные, ls может внезапно заменить какие-то символы в имени файла на "?". Или вообще их не выводить. Никогда не пытайтесь парсить выходные данные ls.

Скрипт работает, свою функцию выполняет.
По какой такой причине нельзя использовать ls в конвеере?
А тут не работает, функцию не выполняет, по причине того, что нельзя парсить ls  ;)
(Нажмите, чтобы показать/скрыть)

« Последнее редактирование: 21 Июля 2020, 17:29:02 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2537
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #36 : 21 Июля 2020, 17:34:42 »
Ваш вариант?

P.S. Про пробел знаю, он не влияет на результат.

Пользователь добавил сообщение 21 Июля 2020, 21:04:35:
После перелопачивания кучи неверных скриптов (где то тоже с ls, где то файлы с пробелами не удаляются) родился улучшенный вариант скрипта.
Выкладываю на суд форумчан.

find -type f  -printf '%T@ %p\n' | sort -nr | tail -n+2 | cut -f 2- -d " " | xargs -I{} rm {}
« Последнее редактирование: 22 Июля 2020, 08:59:25 от Usermaster »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #37 : 30 Июля 2020, 11:15:43 »
Продолжаем разговор...
Из-за ограничений mc.menu, было принято решение вынести код в полноценный скрипт.
В mc.menu остался только код вызова скрипта:
(Нажмите, чтобы показать/скрыть)
Скрипт полностью автономен. Т.е, можно запускать его сам по себе. Например:
avnefish --create --src="/put/do/zagruzchika.efi" --Но сразу теряется половина удобства. При запуске без параметров выведет краткую справку. Если передать пареметр: "--version=dbg", то выполнится в "отладочном режиме", ничего не сделает, только выведет отладочную информацию.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #38 : 20 Августа 2020, 08:07:18 »
 Установил новинку: Ubuntu 16.04.7. Голая система, полезности нужны как нигде. Второе действие после установки системы: установка-удаление программ.
Можно сделать обычный шелл-скрипт, мне удобней mc.menu.
(Нажмите, чтобы показать/скрыть)
Пример работы.
Выбор файлов: *.key - добавление ключей репозиториев, *.install - список пакетов для установки, *.purge - список пакетов для удаления.

Выбор команды в меню.

Ключи добавлены.

Индексы пакетов обновлены.

Обработка файла *.install. Идет установка.

Установка завершена. Началась обработка файла *.purge.


Из явных недостатков пока-что, доработать выводимые сообщения.
« Последнее редактирование: 19 Августа 2023, 17:27:48 от andytux »

Оффлайн BarShadow

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #39 : 07 Октября 2020, 13:39:08 »
Скрипт загрузки видео с HDRezka на базе youtube-dl и dialog:

Код: (bash) [Выделить]
#! /bin/sh
func ()
{
        filename=$(dialog --stdout --title "Ввод данных" --clear --inputbox "Номер эпизода" 16 51)
        LINK=$(dialog --stdout --title "Ввод данных" --clear --inputbox "Ссылка" 16 51)
        var=$(echo ${LINK} | rev | cut -c 20- | rev )
        youtube-dl -f mp4 -o $filename.mp4 $var
dialog  --yesno "Загрузка ${filename} завершена. Продолжить?" 7 60
case $? in
    0)
        func ;;
    1)
        echo "Выбрано 'Нет'."
        clear ;;
    255)
        echo "Нажата клавиша ESC.";;
esac
}
func

Скрипт качает видео в текущий каталог. Для этого нужно заполнить два диалоговых окна. В первом - указать имя под которым видео будет загружено. Во втором - ссылка на сегмент.
Чтобы получить ссылку на сегмент - нужно открыть инструменты разработчика (ctrl+f12), выбрать озвучку, качество видео, выбрать вкладку "сеть" и найти ссылку на любой из первых десяти сегментов.
Лично мне удобнее всего сразу сортировать результаты поиска указав "seg-1".
Видеодемонстрация работы скрипта: https://www.youtube.com/watch?v=9FW-jTtIYVs
« Последнее редактирование: 07 Октября 2020, 17:34:40 от BarShadow »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #40 : 16 Марта 2021, 04:51:31 »
Значительно обновил avnotify.
В основном, изменена внутренняя структура кода. Добавлены новые параметры. Примеры запуска:
avnotify --std="Привет" --
avnotify --notify="255" --
avnotify --speech --
Пока можно использовать и старые параметры и новые. Для большей совместимости с предыдущей версией добавить параметр "-v=16", например:
Цитировать
avnotify --version=16 --msg_svc=notify --msg="Старая версия" --
В дальнейшем, планируется старые параметры удалить.


Пользователь добавил сообщение 17 Марта 2021, 04:33:35:
Обновил "apt install-remove selected".
Сам по себе сильно изменен, плюс изменения, связанные с avnotify.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 17 Марта 2021, 04:33:35 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6834
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #41 : 23 Марта 2021, 08:24:56 »
Обновил avnEFIsh.
В основном связано с обновлением avnotify, но и помимо этого есть изменения. Например, попался на глаза "timeout", в "user menu" добавил код для него:
+= f [Ee][Ff][Ii] | f [Bb][Oo][Oo][Tt] | d /[Ee][Ff][Ii]* | d /[Bb][Oo][Oo][Tt]*
avnEFIsh timeout (run as root)
  key=%{Enter timeout:}
  key="--timeout ${key} --"; util='avnefish'
  ${util} ${key}

Оффлайн drion

  • Активист
  • *
  • Сообщений: 875
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #42 : 30 Марта 2021, 20:56:28 »
Граждане, есть задача: 
в файле, в котором более 50тыс строк, встречаются следующие последовательности
(Нажмите, чтобы показать/скрыть)
Во всём файле, в случае последовательного повтора по строкам одного аргумента, требуется оставлять только последнюю строку с этим аргументом. В данном случае аргумент А синего цвета оставить, а красные удалить. Строки, в которых более одного аргумента или аргумент отличный от указанного, оставлять без изменений.
Помогите составить скрипт.
(это надо,чтобы уменьшить к-во ненужных строк и объём файла)
« Последнее редактирование: 30 Марта 2021, 21:04:19 от drion »

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 619
  • xUbuntu 22.04
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #43 : 31 Марта 2021, 00:34:13 »
Мне кажется,drion, что Вы немного не здесь разместили сообщение … Тут же для «готовых изделий :) » вроде…

Код: (sh) [Выделить]
IFS='';shopt -s nullglob nocaseglob;for i in *.PNG *.JPEG *.JPG;do echo $i && mediainfo "$i"|egrep "Width|Height";done

Команда, или при желании можно скриптом оформить, показывает ширину и высоту изображений, перечень расширений можно увеличить
Выход вот такой:
(Нажмите, чтобы показать/скрыть)

Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн drion

  • Активист
  • *
  • Сообщений: 875
    • Просмотр профиля
Re: Полезные скрипты на bash
« Ответ #44 : 31 Марта 2021, 10:34:19 »
Мне кажется,drion, что Вы немного не здесь разместили сообщение … Тут же для «готовых изделий :)
А это и есть готовое изделие.
Пользоваться подобным скриптом надо будет постоянно при постпроцессировании сложных операций обработки в СAM-системах.
Конкретно в моём примере это программа гравировки надписи на цилиндре.
« Последнее редактирование: 31 Марта 2021, 10:37:52 от drion »

 

Страница сгенерирована за 0.034 секунд. Запросов: 28.