Автор AM ввел изменение в поведение скрипта --автор скрипта am решил добавить цветовое форматирование в вывод команд. Из-за этого в результатах работы команды am -l появились дополнительные символы, которые отвечают за изменение цвета текста в терминале, например, [32m и [0m. Эти символы не видны в обычном виде, но они оказались в данных, которые скрипт пытается обработать.
Эти новые символы начали мешать работе скрипта, который раньше работал без проблем. Когда скрипт пытался получить информацию о приложениях с помощью команды am -a, он сталкивался с тем, что строки содержат лишние символы. В результате команда am не могла правильно интерпретировать такие строки, и работа скрипта прерывалась ошибками.
Чтобы всё снова заработало, в скрипт была добавлена команда sed, которая удаляет эти лишние символы из вывода команды am -l. Это позволило вернуть всё на свои места: теперь скрипт снова правильно обрабатывает данные и работает как надо.
Эти изменения были необходимы, чтобы скрипт продолжал стабильно работать после изменений, которые внёс автор am. Теперь он может правильно читать и обрабатывать данные, даже с учетом нового цветного форматирования.--
пришлось внести правки в CLI оболочку для am вот исправленый код:
#!/bin/bash
#set -x
# Получаем список приложений, удаляя управляющие символы ANSI
am -l | sed -r "s/\x1B\[[0-9;]*[mK]//g" > aml.txt
# Очищаем файл от ненужных строк и пустых строк
sed -e '/YOU HAVE INSTALLED [0-9]* APPLICATIONS OUT OF [0-9]* AVAILABLE/d' \
-e '/LIST OF THE [0-9]* APPLICATIONS AVAILABLE IN THE '\''AM'\'' REPOSITORY:/d' \
-e '/^$/d' ./aml.txt > amlf.txt
while true; do
# Выбор приложения через peco
sel_file="$(cat amlf.txt | peco)"
# Проверяем, была ли нажата клавиша Esc
if [ -z "$sel_file" ]; then
echo "Exiting the script."
break
fi
# Обработка выбранной строки, убираем лишние пробелы и символы
sel_file="$(echo "$sel_file" | sed 's/.*◆ *//; s/:.*//' | xargs)"
echo "Selected file: '$sel_file'" # Отладочная информация
clear
while true; do
options=("ВЫВОД ИНФО" "УСТАНОВИТЬ" "УДАЛИТЬ" "ОБНОВИТЬ-ВСЕ")
selected_option=$(printf "%s\n" "${options[@]}" | peco)
# Проверяем, была ли нажата клавиша Esc
if [ -z "$selected_option" ]; then
echo "Exiting to main menu."
break
fi
case "$selected_option" in
"ВЫВОД ИНФО")
echo "ВЫВОД ИНФО -- $sel_file"
# Убираем кавычки вокруг переменной при вызове команды am -a
echo "Executing: am -a $sel_file"
am -a $sel_file
echo "выбран $sel_file"
echo "Для продолжения жмем ВВОД"
read ex
clear
;;
"УСТАНОВИТЬ")
echo "УСТАНОВИТЬ -- $sel_file"
am -i $sel_file
echo "Для продолжения жмем ВВОД"
read ex
clear
;;
"УДАЛИТЬ")
echo "УДАЛИТЬ -- $sel_file"
am -r $sel_file
echo "Для продолжения жмем ВВОД"
read ex
clear
;;
"ОБНОВИТЬ-ВСЕ")
echo "Обновляем все Appimage для которых есть обновления!"
am -U
;;
*)
echo "Некорректный выбор"
;;
esac
done
done