Введённая для рассматриваемого случая команда sudo hdparm -I /dev/sdс покажет такой же результат (см. в разделе Capabilities:):
про свой опыт решения некоторых проблем и использования ряда возможностей ОС и приложений
четверг, 28 мая 2026 г.
Принудительная установка значения APM для внешних ноутбучных HDD (2,5 дюйма)
Введённая для рассматриваемого случая команда sudo hdparm -I /dev/sdс покажет такой же результат (см. в разделе Capabilities:):
среда, 28 августа 2024 г.
Автоматизация действий с файлами при использовании Syncthing
Например, перенести файлы jpg и mp4 в нужные папки $dest1 или $dest2. Подсчёт нужных файлов производится по их расширениям:
Для файлов jpg:
cjpg=`find $source -maxdepth 1 -name "*.jpg" | wc -l`
if [ $cjpg -eq 0 ]; then
:
else
mv $source/*.jpg $dest1
fi
Для файлов mp4:
cmp4=`find $source -maxdepth 1 -name "*.mp4" | wc -l`
if [ $cmp4 -eq 0 ]; then
:
else
mv $source/*.mp4 $dest2
fi
Для переноса папок вопрос усложняется, так как необходимо учесть множество условий. Задача становится более простой, если передаваемая папка будет упакована в какой-либо архив: tar, zip. 7z Если при подсчёте файлов будут найдены файлы с расширениями tar, zip, 7z, то будет запущена задача извлечения данных из таких архивов в папку назначения (например, $dest), а исходные файлы могут быть либо удалены начисто, либо перемещены в Корзину. Примеры ниже.
Файлы архивов tar
ctar=`find $source -name "*.tar" | wc -l`
if [ $ctar -eq 0 ]; then
:
else
for package in $dest/*.tar;
do
tar -xf "$package" -C $dest
done
# указать одно из двух
rm $source/*.tar # удалить начисто
gio trash $source/*.tar # удалить в Корзину
fi
Файлы архивов tar.gz
ctargz=`find $source -name "*.tar.gz" | wc -l`
if [ $ctargz -eq 0 ]; then
:
else
for package in $dest/*.tar.gz;
do
tar -xzf "$package" -C $dest
done
# указать одно из двух
rm $source/*.tar.gz # удалить начисто
gio trash $source/*.tar.gz # удалить в Корзину
fi
Файлы архивов zip
czip=`find $dest -name "*.zip" | wc -l`
if [ $czip -eq 0 ]; then
:
else
for package in $dest/*.zip;
do
unzip -d $dest "$package"
done
# указать одно из двух
rm $source/*.zip # удалить начисто
gio trash $source/*.zip # удалить в Корзину
fi
Файлы архивов 7z
c7zsp=`find $source -name "*.7z" | wc -l`
if [ $c7z -eq 0 ];
then
:
else
for package in $source/*.7z;
do
7z x "$package" -o$dest
done
# указать одно из двух
rm $source/*.7z # удалить начисто
gio trash $source/*.7z # удалить в Корзину
fi
Если архивы 7z закрыты паролем, данный пароль не меняется и применяется постоянно, то команда распаковки будет иметь вид:
7z x -pпароль "$package" -o$dest
Такие архивы можно помечать дополнительной буквой, например s, добавляемой к концу имени файла. Тогда вместо *.7z нужно будет указать *s.7z
пятница, 15 марта 2024 г.
Запланировать выключение компьютера через графическую форму
Собственно сам скрипт (исполняемый файл):
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59 = в 23 часа 59 минут.\n+15 = через 15 минут.\n+155 = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
shutdown $(cat /tmp/down.txt) &
else
zenity --width=150 --height=50 --info --timeout=5 --title="Уведомление" --text="Не указано время\nвыключения.\nЗадание не назначено."
fi
exit
Пробелы перед знаком = подбирались так, чтобы этот знак на каждой последующей строке находился примерно под таким же знаком в предыдущей.
--width= и --height= определяют ширину и высоту форм.
--timeout=5 указывает на интервал в 5 секунд, после которого форма уведомления автоматически будет закрыта. Если это не востребовано, то используйте:
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59 = в 23 часа 59 минут.\n+15 = через 15 минут.\n+155 = через 2 часа 35 минут." --entry > /tmp/down.txt
if [ -s /tmp/down.txt ]; then
shutdown $(cat /tmp/down.txt) &
else
:
fi
exit
или так:
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59 = в 23 часа 59 минут.\n+15 = через 15 минут.\n+155 = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
shutdown $(cat /tmp/down.txt) &
fi
exit
Вы можете подобрать свои значения, если указанные в примере скрипта вас не устраивают.
✅ Добавление подтверждающих сообщений
Результат ввода значений можно отобразить информационным сообщением. Примеры:
Чтобы отображалось нужное сообщение, поскольку ввод может быть как в формате ЧЧ:ММ (часов минут), так и в формате +М (минут), то в скрипт вводится проверка введённого значения на наличие символа двоеточия (или +, но тогда следует поменять местами порядок выполнения по условию).
var=`cat /tmp/down.txt`
if [[ $var =~ ":" ]]; then
zenity --width=150 --height=50 --info --timeout=7 --title="Подтверждение" --text="Компьютер будет\nвыключен в $(cat /tmp/down.txt)"
else
zenity --width=150 --height=50 --info --timeout=7 --title="Подтверждение" --text="Компьютер будет\nвыключен\n через $(cut -c2- <<< $(cat /tmp/down.txt)) мин."
fi
Если в считанном значении будет найден символ двоеточия, то результатом будет вывод сообщения о выключении ЧЧ:ММ. В ином случае будет выводиться сообщение о выключении через М минут. При выводе второго сообщения не отображается символ +, что обеспечивается инструкцией $(cut -c2- <<< $(cat /tmp/down.txt)). --timeout=7 указывает, что после 7 секунд выводимое сообщение автоматически исчезнет. Таким образом, листинг скрипта с информационными сообщениями имеет вид:
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59 = в 23 часа 59 минут.\n+15 = через 15 минут.\n+155 = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
shutdown $(cat /tmp/down.txt) &
var=`cat /tmp/down.txt`
if [[ $var =~ ":" ]]; then
zenity --width=150 --height=50 --info --timeout=7 --title="Уведомление" --text="Компьютер будет\nвыключен в $(cat /tmp/down.txt)"
else
zenity --width=150 --height=50 --info --timeout=7 --title="Уведомление" --text="Компьютер будет\nвыключен\n через $(cut -c2- <<< $(cat /tmp/down.txt)) мин."
fi
else
zenity --width=150 --height=50 --info --timeout=5 --title="Уведомление" --text="Не указано время\nвыключения.\nЗадание не назначено."
fi
exit
✅ Чтобы сделать кнопку вызова созданного скрипта в главном меню создайте файл .desktop, например, Shutdown-at.dеsktop, который должен располагаться в скрытой папке вашего домашнего каталога (папки) ~/.local/share/applications и впишите в него:
[Desktop Entry]
Name=Shutdown-at
Exec=полный путь к файлу sh
Comment=Назначить время выключения
Terminal=false
PrefersNonDefaultGPU=false
Icon=укажите значок для кнопки, например, application-exit или system-shutdown
Type=Application
Categories=GTK;Development;
Если нужно, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= , в которой укажите свой текст.
Строка Categries= не является обязательной. В данном случае она будет указывать на то, что кнопка будет отображаться в меню "Программирование" (Cinnamon) или "Разработка" (xfce).
Демонстрационный ролик (ниже или на Google Drive):
вторник, 5 марта 2024 г.
Склеить файл, разрезанный при помощи split, в терминале без указания терминальной команды
Создайте исполняемый файл sh с содержанием:
#!/bin/bash
echo " "
echo " "
echo " Выберите папку с исходными файлами,"
echo " имена которых начинаются на x..."
echo " "
echo " "
sleep 3
dir=$(zenity --file-selection --directory)
zenity --width=280 --question --title "Имя файла" --text="Укажите полное имя склеиваемого файла,\nвключая его расширение, например:\n\nХудожественный фильм.mkv или\nДокументальная телепередача.mp4\n $task" \
--ok-label="Да" \
--cancel-label="Нет"
answer=$?
if [ "$answer" -eq 0 ]; then
zenity --width=100 --title "Ввод текста" --text "Ввод имени файла с расширением:" --entry > /tmp/output.txt
elif [ "$answer" -eq 1 ]; then
> /tmp/output.txt
elif [ "$answer" -eq 5 ]; then
> /tmp/output.txt
fi
if [ -s /tmp/output.txt ]; then
cd "$dir"
echo " Производится склейка частей"
echo " в файл с указанным именем."
echo " "
echo " По завершении процесса Вы получите"
echo " сообщение в этом же окне."
cat x* > "$dir/$(cat /tmp/output.txt)"
find "$dir" -maxdepth 1 -name 'x*' -exec rm {} \;
echo " "
echo " "
echo " Процесс успешно завершён."
echo " Исходные файлы х... удалены."
echo " "
echo " "
sleep 7
xdg-open "$dir" &
else
echo " "
echo " Вы не указали имя файла."
echo " "
sleep 3
fi
rm /tmp/output.txt
exit
В процессе работы сценария (скрипта bash) отображаются две формы запросов:
C вариантами ответов "Да" и "OK" всё понятно. В результате выполнения указанных выше форм создаётся файл /tmp/output.txt , содержащий имя выходного файла с его расширением.
Если же выбрано "Нет" в первой форме или "Отменить" во второй, либо нажата кнопка закрытия окна запроса, то также создаётся файл /tmp/output.txt , но без какого-либо содержания. То есть, с точки зрения его наполнения он является пустым.
Далее при помощи инструкции if [ -s /tmp/output.txt ] файл анализируется на наличие в нём содержания. Если он признаётся как "не пустой", то в выбранной в самом начале папке содержание всех файлов, имена которых начинаются на букву x, копируются в файл, имя которого считывается из файла /tmp/output.txt По завершении процесса исходные файлы x... удаляются и в сопоставленном приложении (как правило, файловом менеджере) открывается папка со склеенным файлом.
Процесс сопровождается поясняющими фразами, отображаемыми в окне терминала. Эти фразы указаны в строках, начинающихся с echo. Сами тексты сообщений содержатся между кавычками. Число пробелов от левой кавычки до буквы подбиралось экспериментально с целью наилучшего восприятия строк текста в окне терминала.
При удалении исходных файлов используется инструкция maxdepth 1, которая указывает скрипту не искать файлы во вложенных папках, ограничившись верхним уровнем указываемого пути.
Если файл признаётся как "пустой", то никаких действий не производится, а просто отображается сообщение о том, что имя файла не указано.
После этого производится удаление /tmp/output.txt и работа скрипта завершается с автоматическим закрытием окна терминала.
После создания скрипта sh создайте для него кнопку запуска для его вызова из меню, например,
xed /home/minter/.local/share/applications/join.desktop
и впишите в него следующее:
[Desktop Entry]
Name=Join
Exec=/home/minter/Tools/scripts/modules/join.sh
Comment=
Terminal=true
PrefersNonDefaultGPU=false
Icon=emblem-plus
Type=Application
Categories=GTK;Development;
Name[ru]=Склеить файлы
В строке Exec= указывается полный путь до созданного файла sh
Icon= указывает на значок, под которым эта кнопка запуска будет отображаться в меню.
Categories=GTK;Development; означает, что кнопка будет расположена в меню "Программирование" в Cinnamon или "Разработка" в xfce. Если эту строку убрать, то кнопка будет расположена в меню "Прочие" в Cinnamon или "Прочее" в xfce.
Name[ru]=Склеить файлы является необязательной строкой, указывающей на то, что кнопка должна отображаться не под именем Join, а под именем "Склеить файлы".
Перейдите в каталог applications
xdg-open /home/user/.local/share/applications
(user – это ваша домашняя папка) и в свойствах созданной кнопки запуска в разделе "Права" укажите, что его можно исполнять как программу. В Cinnamon он будет отображён как файл Склеить файлы без расширения, а в xfce как файл Join.desktop Чтобы в файловом менеджере Thunar вместо значка шестерёнки отображался значок, указанный в строке Icon= в свойствах файла перейдите в раздел "Значок запуска" и поставьте галочку в поле "Установить этот файл как доверенный".
четверг, 4 января 2024 г.
Использование split без ввода в терминале команды с параметрами
Icon= указывает на значок, под которым созданная кнопка будет отображаться. В поле Comment= добавить поясняющий текст для чего это нужно и "с чем его едят" 😁.
пятница, 8 декабря 2023 г.
Кнопка запуска пакетной передачи папок и файлов через rclone
Ожидаемый результат: все что расположено в специальной папке будет передано в выбранное облако, а исходные данные в папке передачи будут удалены.
Необходимые условия:
1) папка, откуда будут передаваться данные;
2) установленное и соответствующим образом настроенное ПО rclone;
3) сценарий для указания адреса передачи в синтаксисе rclone (скрипт bash);
4) сценарий запуска передачи (скрипт bash);
5) собственно сама кнопка запуска.
Сценарий для указания адреса передачи в синтаксисе rclone
#!/bin/bash
out=/tmp/to.txt # файл, в который будет записан адрес передачи
zenity --width=200 --title "Cloud" --text="Адрес в формате rclone:" --entry > $out
exit
Сценарий запуска передачи (пример)
#!/bin/bash
/home/minter/Tools/scripts/modules/what-cloud.sh
rclone move --delete-empty-src-dirs --progress /home/minter/Документы/Send $(cat /tmp/to.txt)
exit
$(cat /tmp/to.txt) подставляет в строку команды считанное из файла /tmp/to.txt значение адреса передачи.
Строка move --delete-empty-src-dirs --progress указывает rclone, что должно быть осуществлено перемещение данных в облако (со всей иерархией папок), а оставшиеся после перемещения данных пустые папки должны быть удалены. При этом передача будет сопровождаться отображением хода процесса, например:
Кнопка запуска приложения
На рабочем столе создаётся значок запуска (xfce), либо кнопка запуска (Cinnamon), в которой указывается вызов сценария запуска (передачи), в параметрах которой указано выполнение в терминале. Созданный значок запуска (кнопку запуска) переместите в свою папку ~/.local/share/applications Значок/кнопка запуска представляет из себя исполняемый файл .desktop, который можно редактировать в текстовом редакторе. Пример:
[Desktop Entry]
Version=1.0
Type=Application
Name=Upload
Comment=
Exec=/home/minter/Tools/scripts/modules/upload.sh
Icon=mintupload
Path=
Terminal=true
StartupNotify=false
По умолчанию, значок/кнопка запуска будет отображаться в категории "Прочее" (xfce) или "Прочие" (Cinnamon). Для указания другой категории добавьте в файл строку Categories= , в которой после знака равенства укажите необходимые значения. Например, для "Разработка" (xfce) или "Программирование" (Cinnamon) это будет иметь вид Categories=GTK;Development; , а для категории "Интернет" – Categories=Network;
Если надо, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= и после знака равенства напишите русский текст, например, Передача файлов (без кавычек).
После успешного завершения процесса передачи окно терминала будет закрыто автоматически.
понедельник, 27 ноября 2023 г.
Перекодировать flac в mp3
суббота, 25 ноября 2023 г.
Запросы пользователю на монтирование дисков в папки его профиля
Про автоматическое монтирование дисков при старте системы имеется достаточное количество материалов. Но в большинстве случаев такие решения сводятся к внесению изменений в файл /etc/fstab. У меня же возникла необходимость выдачи запроса на монтирование дисков. При положительном ответе "да" диски будут смонтированы, при отрицательном "нет" монтирование производится не будет.
Обусловлено личными потребностями, так как упоминаемые диски могут быть временно изъяты из компьютера и при обычном автомонтировании через /etc/fstab система будет на некоторое время сильно задумываться, пока не сообразит, что упоминаемых дисков не имеется и загрузка может быть продолжена.
Для удобства целесообразно создать стартовый сценарий, например, start.sh, который будет автоматически выполняться при каждом входе пользователя в систему. То есть, создать файл и установить его в автозагрузку. В Linux xfce это настраивается в Система/Сеансы и запуск, а в Cinnamon – Параметры/Автозагрузка.
#!/bin/bash
...
...
exit
Создаются 2 файла sh, которые собственно и командуют монтирование дисков. При этом каждый диск у меня идетифицируется не как /dev/sd... , а по своему uuid. Связано с тем, что при обратной установке шлейфы могут быть воткнуты не туда где были раньше, то есть порядок определения дисков по /dev/sd... может быть перепутан. А так как мои диски монтируются в папки AG-2 и AN-2 моего домашнего каталога, то не хочется быть удивлённым тому, что содержание данных папок потом будет не таким, как было раньше. uuid дисков определяется через команду
sudo blkid
Для 1-го диска файл mount-g2.sh
#!/bin/bash
mount --uuid="c57e4566-84ed-4d54-8cd4-1e0eaeac5b4e" /home/minter/AG-2 &
exit
Для второго диска файл mount-n2.sh
#!/bin/bash
mount --uuid="b72b0384-9782-4eaf-9606-ca48469ef6da" /home/minter/AN-2 &
exit
Поскольку монтирование осуществляется через sudo, то имеет смысл внести в файл /etc/sudoers записи, в соответствии с которыми пароль для sudo запрашиваться не будет.
sudo xed /etc/sudoers и внести строки (пример):
minter ALL=NOPASSWD: /home/minter/Tools/scripts/modules/mount-g2.sh
minter ALL=NOPASSWD: /home/minter/Tools/scripts/modules/mount-n2.sh
minter – это мой логин в системе.
Создаются 2 файла запросов на монтирование каждого из дисков. Пример приводится для 1-го диска (для второго будет аналогично):
#!/bin/bash
log=/home/minter/Документы/Reports/$(date '+%d').txt
zenity --width=150 --height=50 --question --timeout=10 --title="Запрос" --text="\nМонтировать G-2? \n$task" \
--ok-label="Нет" \
--cancel-label="Да"
answer=$?
if [ "$answer" -eq 0 ]; then
:
echo "$(date '+%H.%M.%S') – G-2 not mounted" >> $log
echo "0" >> /tmp/mount1.txt
elif [ "$answer" -eq 1 ]; then
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
echo "$(date '+%H.%M.%S') – G-2 mounted" >> $log
echo "1" >> /tmp/mount1.txt
elif [ "$answer" -eq 5 ]; then
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
echo "$(date '+%H.%M.%S') – G-2 mounted" >> $log
echo "1" >> /tmp/mount1.txt
fi
exit 0
Если не нужно вести протокола и записывать результат "смонтировано" или "не смонтировано" в файлы /tmp/mount...txt, то строку log= и начинаются с echo строки можно удалить. Мне они нужны для протоколирования отработки стартового сценария в целом, а также процедур по автоматической очистке Корзин на монтируемых дисках с удалением из них всех объектов (папки и файлы) старше 3 суток.
При появлении окна запроса система ожидает решения пользователя 10 секунд. Если за это время ничего не было выбрано, то система будет считать, что пользователь выбрал "Да", то есть монтировать и, соответственно перейдёт к команде монтирования диска, то есть
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
Если выбрано "Нет", то монтирование диска не производится.
В start.sh вносятся команды с запросами монтирования с интервалом между ними 5 секунд и 5-секундным интервалом после запроса на монтирование 2-го диска. Интервал в 5 секунд необходим для того, чтобы окно запроса на монтирование 2-го диска не перекрывало окно запроса на монтирование 1-го диска. Вспомним, что система ожидает решения пользователя 10 секунд.
sleep 5
$do/modules/querry-mount-g2.sh
sleep 5
$do/modules/querry-mount-n2.sh
sleep 5
И, собственно, результат:
вторник, 25 июля 2023 г.
Посчитать число файлов fb2 в выбранной папке (действие в Nemo)
По аналогии с подсчётом числа файлов fb2 в выбранной папке через правое контекстное меню в xfce аналогичное действие в Nemo выполняется следующим образом.
Выполните в терминале команду nemo ~/.local/share/nemo/actions У вас откроется нужная папка, в которой создайте файл с расширением .nemo_action
В описываемом примере рассматривается файл count_fb2_files.nemo_action Его содержание:
[Nemo Action]
Active=true
Name=Подсчет fb2
Comment=Сколько всего файлов fb2 в папке
Exec=sh -c 'find %F -name "*.fb2" | wc -l | cat - /dev/tty'
Icon-Name=emblem-hexagon-green
Selection=s
Extensions=dir;
Quote=double
Terminal=true
В строке Icon-Name= указано имя значка, под которым будет отображаться команда в правом контекстном меню (ПКМ).
В свойствах файла (Права) отметьте, что его разрешено выполнять как программу.
Для подсчёта числа любых файлов в выбранной папке строку Exec= укажите в виде:
Exec=sh -c 'find %F -type f | wc -l | cat - /dev/tty'
Количество файлов в выбранной папке будет отображено в окне терминала.
четверг, 20 июля 2023 г.
Кнопка запуска (лаунчер) для запланированного выключения Linux Mint

shutdown часов:минут для выключения в определённое время, например, 22:59 – shutdown 22:59;
shutdown +40 для выключения через 40 минут.
✅ Примечание. Обычно приводится команда shutdown -h часов:минут, но, как показала практика, достаточно команды shutdown часов:минут.
Для своих нужд (в угоду собственной ленивости 😄) было принято решение создать в меню кнопку запуска (лаунчер), которая, в зависимости от потребности, позволила бы вводить различные значения времени выключения и передавать их команде shudown.
Сначала создаётся скрипт (сценарий), который будет вызывать кнопка запуска, а затем создаётся сама кнопка запуска.
1. Скрипт (сценарий) представляет из себя файл текста (с расширением sh или без него), в свойствах которого (Права) указано, что его разрешено выполнять как программу.
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
shutdown $(cat /tmp/down.txt) &
exit
Выполняется запрос ввода времени когда или через сколько необходимо выключить компьютер. Введённое значение записывается во временный файл, например, /tmp/down.txt :
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
Значение --width=220 указывает на ширину окна формы запроса. Изменяя значение после знака = можно отрегулировать желаемую ширину окна формы запроса.
Символы \n указывают переходы на следующую строку.
shutdown $(cat /tmp/down.txt) & соответствует выполнению команды shutdown и значения, которое считывается из сохранённого файла /tmp/down.txt, после чего выполнение самого скрипта (сценария) завершается. Символ & означает переход к выполнению следующей команды, не дожидаясь завершения выполнения предыдущей.
Как это выглядит:
Если поясняющего текста формы отображать не требуется, то листинг формы запроса будет иметь вид:
zenity --width=220 --title "Когда выключить" --entry > /tmp/down.txt
2. Кнопка запуска (лаунчер) создаётся на рабочем столе через правое контекстное меню мыши. Примеры для Cinnamon и xfce смотрите по ссылкам: Cinnamon, xfce. Указывать выполнение команды в терминале не требуется.
При создании кнопки запуска она по умолчанию создаётся на рабочем столе и в меню в категории "Разное". После создания кнопки запуска её с рабочего стола можно удалить (для поддержания его в чистоте 😀).
Если в категории "Разное" у вас имеется слишком много созданных кнопок запуска, то кнопку запуска запланированного выключения можно поместить в категорию "Программирование". Для этого откройте в менеджере файлов папку (каталог) своей домашней папки ~/.local/share/applications , найдите в ней свой созданный файл .desktop (в Cinnamon расширение .desktop отображаться не будет, будут отображены только названия файлов) и откройте его в текстовом редакторе. В конец файла добавьте строку
Categories=GTK;Development;
и сохраните его. После этого ваша кнопка будет отображаться в категории "Программирование" (Cinnamon) или "Разработка" (xfce).
Протестируйте работу, указывая различные варианты запланированного времени выключения.
🔔 Будьте внимательны при вызове созданной кнопки запуска. Если вы даже ничего не вводили или нажали кнопку "Отменить", то у вас уже передана команда shutdown. Команда shutdown без аргументов соответствует команде выключения компьютера через 60 секунд.
При необходимости подбора ширины окна формы запроса времени выключения вводите в терминале команду:
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
При этом передачи системе команды shutdown произведено не будет.
воскресенье, 25 июня 2023 г.
Запуск файлов приложений вида .desktop в bash
пятница, 12 мая 2023 г.
Пакетное переименование расширения файлов JPG в jpg
суббота, 11 марта 2023 г.
Удаление остатков работы с архивами zip в каталоге .cache
понедельник, 31 октября 2022 г.
Внесение в cron нескольких заданий через bash
01 18-21 * * * /home/minter/.config/scripts/cron1.sh
05 21 * * * /home/minter/.config/scripts/cron2.sh
суббота, 17 сентября 2022 г.
Пакетное (массовое) переименование файлов через bash
При использовании средства массового переименования файлов через Bulk Renamer со временем появилась некоторая неудовлетворённость необходимостью осуществлять ряд однотипных действий применительно к каждому набору файлов (папок с файлами). Поскольку во всех папках присутствуют файлы, содержащие в себе один и тот же набор символов, то для массового переименования файлов в папке было принято решение попробовать воспользоваться средствами bash. Для его использования необходимо наличие установленной программы rename. Как правило, она уже в системе присутствует, но если её не имеется, то устанавливается командой sudo apt install -y rename
В итоге получился сценарий (скрипт):
#!/bin/bash
dir=$(zenity --file-selection --directory)
cd "$dir"
rename 's/Classy_Wallpapers_//g' *.jpg
rename 's/__/_/g' *.jpg
exit
🔎 Пояснения.
dir=$(zenity --file-selection --directory) осуществляет выбор папки (каталога), содержащего файлы, имена которых необходимо обработать, а команда cd "$dir" осуществляет переход в выбранную папку (каталог). Кавычки учитывают пробелы в имени папки или пути к ней.
Далее следуют команды непосредственно замены "чего" на "что".
Команда rename 's/Classy_Wallpapers_//g' *.jpg во всех файлах jpg удаляет из названия файлов Classy_Wallpapers_
Команда rename 's/__/_/g' *.jpg во всех файлах jpg заменяет символ __ на символ _
Как итог, при массовом переименовании файлов осуществляется 2 действия (запустить скрипт и выбрать папку с файлами) вместо прежних 9. Так как нет необходимо использовать графический интерфейс, то операции замены символов в именах файлов происходит значительно быстрее, чем при использовании массового переименования из комплекта поставки Linux Mint. Команду скрипта (сценария) sh можно "посадить" на горячие клавиши через "Настройка клавиатуры – Комбинации клавиш" либо через программу Autokey.




































