projects:projects
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
projects:projects [2025/03/22 19:12] – создано - внешнее изменение 127.0.0.1 | projects:projects [2025/03/23 20:46] (текущий) – | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Проекты ===== | + | ====== Проекты |
+ | ===== Донастройки | ||
Linux | Linux | ||
- | |||
- | Скрипты далее перебирают все скрипты '' | ||
- | и отбирают те в которых есть ''# | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | # ==AUTOEXEC== | ||
- | # === Название программы === | ||
- | # * Строка для основного описания | ||
- | # * Строки для развернутого описания | ||
- | # * Строки для развернутого описания | ||
- | # | ||
- | </ | ||
- | |||
- | признаком окончания описания является первая строка в которой после ''#'' | ||
- | ==== Лаунчер скриптов (средствами bash) ==== | ||
- | |||
- | ++++ Скрипт для поиска и запуска скрптов из подкаталогов при помощи утилиты bash (нажмите чтобы раскрыть)| | ||
- | <file bash launcher.sh> | ||
- | #!/bin/bash | ||
- | export LANG=en_US.UTF-8 | ||
- | export LC_ALL=en_US.UTF-8 | ||
- | |||
- | # --- Конфигурация --- | ||
- | INCLUDE_MARKER="# | ||
- | ROOT_DIR=" | ||
- | TMP_LIST="/ | ||
- | |||
- | # --- Поиск подходящих скриптов --- | ||
- | > " | ||
- | find " | ||
- | if grep -q " | ||
- | TITLE_TEXT="" | ||
- | SHORT_TEXT="" | ||
- | while IFS= read -r line; do | ||
- | [[ -z " | ||
- | if [[ " | ||
- | CLEANED_LINE=" | ||
- | if [[ " | ||
- | TITLE_TEXT=" | ||
- | elif [[ " | ||
- | SHORT_TEXT=" | ||
- | break | ||
- | fi | ||
- | fi | ||
- | done < <(tail -n +2 <(grep -A30 " | ||
- | if [ -n " | ||
- | SHORT_DESC=" | ||
- | else | ||
- | SHORT_DESC=" | ||
- | fi | ||
- | echo -e " | ||
- | fi | ||
- | done | ||
- | |||
- | if [ ! -s " | ||
- | echo "❌ Подходящих скриптов не найдено. Убедитесь, | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | # --- Отображение меню --- | ||
- | PS3=" | ||
- | echo "📜 Найденные скрипты:" | ||
- | echo " 0) ❌ Выход" | ||
- | echo | ||
- | mapfile -t ENTRIES < <(cut -d' | ||
- | ENTRIES+=(" | ||
- | select ENTRY in " | ||
- | if [[ " | ||
- | echo "👋 До свидания!"; | ||
- | fi | ||
- | [ -z " | ||
- | SELECTED=$(grep -F " | ||
- | break | ||
- | done | ||
- | |||
- | # --- Показ подробного описания --- | ||
- | echo | ||
- | echo "📂 Скрипт: | ||
- | echo "🔍 Подробное описание:" | ||
- | DESC=() | ||
- | TITLE="" | ||
- | while IFS= read -r line; do | ||
- | [[ -z " | ||
- | if [[ " | ||
- | CLEANED_LINE=" | ||
- | if [[ " | ||
- | TITLE=" | ||
- | else | ||
- | DESC+=(" | ||
- | fi | ||
- | else | ||
- | break | ||
- | fi | ||
- | done < <(grep -A20 " | ||
- | |||
- | if [ -n " | ||
- | echo -e " | ||
- | fi | ||
- | for line in " | ||
- | echo " | ||
- | done | ||
- | echo | ||
- | |||
- | # --- Выбор действия --- | ||
- | PS3=" | ||
- | echo " 0) ❌ Выход" | ||
- | select ACTION in " | ||
- | if [[ " | ||
- | echo "👋 До свидания!"; | ||
- | fi | ||
- | case $REPLY in | ||
- | 1) echo " | ||
- | 2) | ||
- | echo " | ||
- | read confirm | ||
- | if [[ " | ||
- | echo "🚀 Запуск..." | ||
- | bash " | ||
- | else | ||
- | echo "❎ Отмена." | ||
- | fi | ||
- | break;; | ||
- | 3) echo "👋 До свидания!"; | ||
- | *) echo "❌ Неверный выбор";; | ||
- | esac | ||
- | done | ||
- | |||
- | </ | ||
- | |||
- | Более наглядный интерфейс через скрипт далее | ||
- | требуется установка fzf (предложит установить при запуске если еще не установлен) | ||
- | Если откажетесь при установке, | ||
- | |||
- | ==== Лаунчер скриптов (fzf) ==== | ||
- | ++++Скрипт для поиска и запуска скрптов из подкаталогов при помощи утилиты fzf (нажмите чтобы раскрыть)| | ||
- | <file bash launcher_fzf.sh> | ||
- | #!/bin/bash | ||
- | export LANG=en_US.UTF-8 | ||
- | export LC_ALL=en_US.UTF-8 | ||
- | |||
- | # Проверка наличия fzf | ||
- | if ! command -v fzf &>/ | ||
- | echo "📦 Утилита fzf не найдена. Установить её сейчас? | ||
- | read -r confirm | ||
- | if [[ " | ||
- | sudo apt update && sudo apt install -y fzf | ||
- | else | ||
- | echo " | ||
- | bash ./ | ||
- | exit 0 | ||
- | fi | ||
- | fi | ||
- | |||
- | # Конфигурация | ||
- | INCLUDE_MARKER="# | ||
- | ROOT_DIR=" | ||
- | TMP_LIST="/ | ||
- | |||
- | > " | ||
- | |||
- | # Сбор скриптов с заголовком и кратким описанием | ||
- | find " | ||
- | if grep -q " | ||
- | TITLE="" | ||
- | SHORT="" | ||
- | while IFS= read -r line; do | ||
- | [[ -z " | ||
- | if [[ " | ||
- | CLEANED=" | ||
- | if [[ " | ||
- | TITLE=" | ||
- | elif [[ " | ||
- | SHORT=" | ||
- | fi | ||
- | fi | ||
- | done < <(tail -n +2 <(grep -A30 " | ||
- | |||
- | DISPLAY_LINE=" | ||
- | echo -e " | ||
- | fi | ||
- | |||
- | done | ||
- | |||
- | if [ ! -s " | ||
- | echo "❌ Не найдено подходящих скриптов." | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | # Выбор через fzf с превью полного описания | ||
- | SELECTED_LINE=$(cat " | ||
- | fzf --prompt=" | ||
- | --preview=' | ||
- | [ -f " | ||
- | --preview-window=right: | ||
- | |||
- | if [ -z " | ||
- | echo "❎ Отмена пользователем." | ||
- | exit 0 | ||
- | fi | ||
- | |||
- | SELECTED_FILE=$(echo " | ||
- | |||
- | # Запуск с подтверждением | ||
- | echo " | ||
- | echo "📂 Файл: $SELECTED_FILE" | ||
- | echo " | ||
- | read -r confirm | ||
- | if [[ " | ||
- | echo "🚀 Запуск..." | ||
- | bash " | ||
- | else | ||
- | echo "❎ Отмена." | ||
- | fi | ||
- | |||
- | rm -f " | ||
- | </ | ||
- | |||
- | |||
- |
projects/projects.1742659957.txt.gz · Последнее изменение: — 127.0.0.1