Utoljára aktív 1 month ago

urocibg gist felülvizsgálása 1 month ago. Revízióhoz ugrás

1 file changed, 5 insertions

aliasctl

@@ -1,4 +1,9 @@
1 1 #!/usr/bin/env bash
2 + # Автор: Федя Серафиев
3 + # Сайт / Проект: https://urocibg.eu
4 + # Версия: 2.0
5 + # Лиценз: Open Source
6 + # Платформа: Linux/Unix (Bash)
2 7
3 8 ALIASES_FILE="$HOME/.fedya_aliases"
4 9 EDITOR_CMD="${EDITOR:-nano}"

urocibg gist felülvizsgálása 1 month ago. Revízióhoz ugrás

1 file changed, 256 insertions

aliasctl(fájl létrehozva)

@@ -0,0 +1,256 @@
1 + #!/usr/bin/env bash
2 +
3 + ALIASES_FILE="$HOME/.fedya_aliases"
4 + EDITOR_CMD="${EDITOR:-nano}"
5 +
6 + # Модерна цветна палитра
7 + C_RESET=$'\033[0m'
8 + C_BOLD=$'\033[1m'
9 + C_DIM=$'\033[2m'
10 +
11 + # Основни цветове
12 + C_PRIMARY=$'\033[38;5;81m' # Светло синьо
13 + C_SUCCESS=$'\033[38;5;82m' # Зелено
14 + C_WARNING=$'\033[38;5;214m' # Оранжево
15 + C_ERROR=$'\033[38;5;196m' # Червено
16 + C_INFO=$'\033[38;5;147m' # Лавандула
17 +
18 + # Акцентни цветове
19 + C_TITLE=$'\033[38;5;213m' # Розово-лилаво
20 + C_KEY=$'\033[38;5;226m' # Жълто
21 + C_VAL=$'\033[38;5;153m' # Светло синьо
22 + C_BORDER=$'\033[38;5;240m' # Сиво
23 +
24 + # Box drawing символи
25 + BOX_TL="╭"
26 + BOX_TR="╮"
27 + BOX_BL="╰"
28 + BOX_BR="╯"
29 + BOX_H="─"
30 + BOX_V="│"
31 + BOX_VR="├"
32 + BOX_VL="┤"
33 +
34 + ensure_file() {
35 + [ -f "$ALIASES_FILE" ] || touch "$ALIASES_FILE"
36 + }
37 +
38 + print_header() {
39 + local width=70
40 + clear
41 + echo
42 + printf "%b" "${C_PRIMARY}${C_BOLD}"
43 + printf "%s%${width}s%s\n" "$BOX_TL" "" "$BOX_TR" | tr ' ' "$BOX_H"
44 + printf "%s%-${width}s%s\n" "$BOX_V" " 🎨 ALIASCTL - Мениджърът на Федя за Bash Алиаси" "$BOX_V"
45 + printf "%s%${width}s%s\n" "$BOX_BL" "" "$BOX_BR" | tr ' ' "$BOX_H"
46 + printf "%b\n" "${C_RESET}"
47 + }
48 +
49 + print_box() {
50 + local text="$1"
51 + local color="$2"
52 + local width=70
53 + printf "%b%s%b\n" "${color}" "$text" "${C_RESET}"
54 + }
55 +
56 + list_aliases() {
57 + ensure_file
58 + print_header
59 +
60 + local count=$(grep -c '^alias ' "$ALIASES_FILE" 2>/dev/null || echo 0)
61 +
62 + printf "%b%s %s%b\n" "${C_INFO}${C_BOLD}" "📦 Общо алиаси:" "$count" "${C_RESET}"
63 + printf "%b%s%b\n\n" "${C_DIM}" "Файл: $ALIASES_FILE" "${C_RESET}"
64 +
65 + if [ "$count" -eq 0 ]; then
66 + printf "%b%s%b\n\n" "${C_WARNING}" " ⚠️ Няма дефинирани алиаси" "${C_RESET}"
67 + else
68 + printf "%b%-20s %s%b\n" "${C_BORDER}${C_DIM}" "Име" "Команда" "${C_RESET}"
69 + printf "%b%s%b\n" "${C_BORDER}" "$(printf '%.0s─' {1..70})" "${C_RESET}"
70 +
71 + grep '^alias ' "$ALIASES_FILE" 2>/dev/null \
72 + | sed 's/^alias //' \
73 + | while IFS= read -r line; do
74 + name="${line%%=*}"
75 + cmd="${line#*=}"
76 + cmd="${cmd#\'}"
77 + cmd="${cmd%\'}"
78 +
79 + # Ограничаване на дължината за по-добра визия
80 + if [ ${#cmd} -gt 45 ]; then
81 + cmd="${cmd:0:42}..."
82 + fi
83 +
84 + printf " %b%-18s%b → %b%s%b\n" \
85 + "$C_KEY" "$name" "$C_RESET" "$C_VAL" "$cmd" "$C_RESET"
86 + done
87 + echo
88 + fi
89 + }
90 +
91 + add_alias() {
92 + ensure_file
93 + print_header
94 +
95 + printf "%b%s%b\n\n" "${C_SUCCESS}${C_BOLD}" "➕ Добавяне на нов алиас" "${C_RESET}"
96 +
97 + printf "%b%s%b" "${C_INFO}" "Име на алиаса: " "${C_RESET}"
98 + read -r name
99 +
100 + # Проверка за празно име
101 + if [ -z "$name" ]; then
102 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Името не може да бъде празно!" "${C_RESET}"
103 + sleep 2
104 + return
105 + fi
106 +
107 + # Проверка дали съществува
108 + if grep -q "^alias $name=" "$ALIASES_FILE" 2>/dev/null; then
109 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Алиас '$name' вече съществува!" "${C_RESET}"
110 + sleep 2
111 + return
112 + fi
113 +
114 + printf "%b%s%b" "${C_INFO}" "Команда: " "${C_RESET}"
115 + read -r cmd
116 +
117 + if [ -z "$cmd" ]; then
118 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Командата не може да бъде празна!" "${C_RESET}"
119 + sleep 2
120 + return
121 + fi
122 +
123 + printf "alias %s='%s'\n" "$name" "$cmd" >> "$ALIASES_FILE"
124 + printf "\n%b%s%b %b%s%b\n" "${C_SUCCESS}${C_BOLD}" "✅ Успешно добавен:" "${C_RESET}" "${C_KEY}" "$name" "${C_RESET}"
125 + sleep 2
126 + }
127 +
128 + remove_alias() {
129 + ensure_file
130 + print_header
131 +
132 + printf "%b%s%b\n\n" "${C_WARNING}${C_BOLD}" "🗑️ Премахване на алиас" "${C_RESET}"
133 +
134 + local count=$(grep -c '^alias ' "$ALIASES_FILE" 2>/dev/null || echo 0)
135 + if [ "$count" -eq 0 ]; then
136 + printf "%b%s%b\n" "${C_WARNING}" "⚠️ Няма алиаси за премахване" "${C_RESET}"
137 + sleep 2
138 + return
139 + fi
140 +
141 + printf "%b%s%b" "${C_INFO}" "Име на алиаса за премахване: " "${C_RESET}"
142 + read -r name
143 +
144 + if [ -z "$name" ]; then
145 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Не е въведено име!" "${C_RESET}"
146 + sleep 2
147 + return
148 + fi
149 +
150 + if grep -q "^alias $name=" "$ALIASES_FILE" 2>/dev/null; then
151 + sed -i "/^alias $name=/d" "$ALIASES_FILE"
152 + printf "\n%b%s%b %b%s%b\n" "${C_SUCCESS}${C_BOLD}" "✅ Премахнат:" "${C_RESET}" "${C_KEY}" "$name" "${C_RESET}"
153 + else
154 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Алиас '$name' не съществува!" "${C_RESET}"
155 + fi
156 + sleep 2
157 + }
158 +
159 + edit_aliases() {
160 + ensure_file
161 + "$EDITOR_CMD" "$ALIASES_FILE"
162 + }
163 +
164 + fzf_menu() {
165 + if ! command -v fzf >/dev/null; then
166 + print_header
167 + printf "%b%s%b\n" "${C_ERROR}" "❌ fzf не е инсталиран!" "${C_RESET}"
168 + printf "%b%s%b\n" "${C_INFO}" "Инсталирай с: sudo dnf install fzf" "${C_RESET}"
169 + sleep 3
170 + return
171 + fi
172 +
173 + ensure_file
174 + local selected=$(grep '^alias ' "$ALIASES_FILE" 2>/dev/null \
175 + | sed 's/^alias //' \
176 + | fzf --height=40% --border --prompt="🔍 Търсене: " \
177 + --color="fg:#d0d0d0,bg:#1e1e1e,hl:#5fd7ff" \
178 + --color="fg+:#ffffff,bg+:#2e2e2e,hl+:#ffaf00" \
179 + --color="info:#af87ff,prompt:#5fd7ff,pointer:#ff87d7" \
180 + --color="marker:#87ff00,spinner:#ff87d7,header:#87afaf")
181 +
182 + if [ -n "$selected" ]; then
183 + print_header
184 + printf "%b%s%b\n\n" "${C_SUCCESS}" "Избран алиас:" "${C_RESET}"
185 + printf "%b%s%b\n" "${C_VAL}" "$selected" "${C_RESET}"
186 + echo
187 + read -rp "Натисни Enter за продължаване..."
188 + fi
189 + }
190 +
191 + show_help() {
192 + print_header
193 +
194 + printf "%b%s%b\n\n" "${C_INFO}${C_BOLD}" "📖 Помощна информация" "${C_RESET}"
195 +
196 + printf "%b%s%b\n" "${C_PRIMARY}" "Файл с алиаси:" "${C_RESET}"
197 + printf " %b%s%b\n\n" "${C_VAL}" "$ALIASES_FILE" "${C_RESET}"
198 +
199 + printf "%b%s%b\n" "${C_PRIMARY}" "Редактор:" "${C_RESET}"
200 + printf " %b%s%b\n\n" "${C_VAL}" "$EDITOR_CMD" "${C_RESET}"
201 +
202 + printf "%b%s%b\n" "${C_PRIMARY}" "За да заредиш алиасите:" "${C_RESET}"
203 + printf " %b%s%b\n" "${C_VAL}" "source $ALIASES_FILE" "${C_RESET}"
204 + printf " или добави в %b~/.bashrc%b:\n" "${C_VAL}" "${C_RESET}"
205 + printf " %b%s%b\n\n" "${C_VAL}" "[ -f $ALIASES_FILE ] && source $ALIASES_FILE" "${C_RESET}"
206 +
207 +
208 + # Добавяне на линк към сайта
209 + printf "%b%s%b\n" "${C_PRIMARY}" "Посети сайта ми за още полезни неща:" "${C_RESET}"
210 + printf " %b%s%b\n\n" "${C_VAL}" "https://urocibg.eu/" "${C_RESET}"
211 +
212 + read -rp "Натисни Enter за продължаване..."
213 + }
214 +
215 + main_menu() {
216 + print_header
217 +
218 + printf "%b%s%b\n" "${C_BORDER}${C_DIM}" "Избери опция:" "${C_RESET}"
219 + echo
220 +
221 + printf " %b[1]%b 📋 Преглед на всички алиаси\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
222 + printf " %b[2]%b ➕ Добавяне на нов алиас\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
223 + printf " %b[3]%b 🗑️ Премахване на алиас\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
224 + printf " %b[4]%b ✏️ Редактиране на файла\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
225 + printf " %b[5]%b 🔍 FZF интерактивен преглед\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
226 + printf " %b[6]%b 📖 Помощ\n" "${C_KEY}${C_BOLD}" "${C_RESET}"
227 + echo
228 + printf " %b[q]%b 🚪 Изход\n" "${C_ERROR}${C_BOLD}" "${C_RESET}"
229 + echo
230 +
231 + printf "%b%s%b " "${C_PRIMARY}" "➤" "${C_RESET}"
232 + read -r choice
233 +
234 + case "$choice" in
235 + 1) list_aliases; read -rp "Натисни Enter за продължаване...";;
236 + 2) add_alias;;
237 + 3) remove_alias;;
238 + 4) edit_aliases;;
239 + 5) fzf_menu;;
240 + 6) show_help;;
241 + q|Q)
242 + clear
243 + printf "\n%b%s%b\n\n" "${C_SUCCESS}${C_BOLD}" "👋 Довиждане!" "${C_RESET}"
244 + exit 0
245 + ;;
246 + *)
247 + printf "\n%b%s%b\n" "${C_ERROR}" "❌ Невалидна опция!" "${C_RESET}"
248 + sleep 1
249 + ;;
250 + esac
251 + }
252 +
253 + # Главен цикъл
254 + while true; do
255 + main_menu
256 + done
Újabb Régebbi