Skip to content

Commit 58757f6

Browse files
authored
Add files via upload
1 parent 3dcc6f7 commit 58757f6

1 file changed

Lines changed: 69 additions & 93 deletions

File tree

scripts/alias.sh

Lines changed: 69 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,35 @@
22

33
# ============================================
44
# ExpTech Bash Aliases Installer
5-
# Version: 1.0.0
6-
# Date: 2025-03-06
7-
# Remote install:
5+
# Version: 1.0.1 (2025-03-06)
6+
#
7+
# Install:
88
# curl -fsSL https://raw.githubusercontent.com/ExpTechTW/API/refs/heads/main/scripts/alias.sh | bash
99
# ============================================
1010

11-
VERSION="1.0.0 (2025-03-06)"
11+
VERSION="1.0.1 (2025-03-06)"
1212
BASHRC="$HOME/.bashrc"
1313

1414
# Colors
15-
RED='\033[0;31m'
1615
GREEN='\033[0;32m'
1716
YELLOW='\033[0;33m'
1817
BLUE='\033[0;34m'
19-
NC='\033[0m' # No Color
18+
NC='\033[0m'
2019

2120
# ============================================
22-
# Aliases Definition
21+
# Aliases
2322
# ============================================
2423
declare -A ALIASES=(
25-
# Docker - Container
26-
["dps"]='docker ps -a --size --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}\t{{.Size}}"'
24+
# Docker
2725
["di"]="docker images"
2826
["dex"]="docker exec -it"
2927
["dlog"]="docker logs -f"
3028
["dstart"]="docker start"
3129
["dstop"]="docker stop"
3230
["drestart"]="docker restart"
33-
["dstopall"]="docker stop \$(docker ps -aq)"
3431
["drm"]="docker rm"
35-
["drmall"]="docker rm \$(docker ps -aq)"
3632
["drmi"]="docker rmi"
37-
["drmiall"]="docker rmi \$(docker images -q)"
3833
["dprune"]="docker system prune -af"
39-
["dip"]='docker inspect --format "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}"'
4034
["dtop"]="docker stats --no-stream"
4135

4236
# Docker Compose
@@ -49,7 +43,7 @@ declare -A ALIASES=(
4943
["dcp"]="docker compose pull"
5044
["dcps"]="docker compose ps"
5145

52-
# Git - Basic
46+
# Git
5347
["gs"]="git status"
5448
["ga"]="git add"
5549
["gaa"]="git add ."
@@ -59,78 +53,70 @@ declare -A ALIASES=(
5953
["gpf"]="git push --force-with-lease"
6054
["gpl"]="git pull"
6155
["gf"]="git fetch"
62-
63-
# Git - Branch
6456
["gb"]="git branch"
6557
["gba"]="git branch -a"
6658
["gbd"]="git branch -d"
6759
["gco"]="git checkout"
6860
["gcb"]="git checkout -b"
6961
["gm"]="git merge"
70-
71-
# Git - Diff & Log
7262
["gd"]="git diff"
7363
["gds"]="git diff --staged"
7464
["glog"]="git log --oneline --graph --decorate -15"
7565
["gloga"]="git log --oneline --graph --decorate --all -15"
76-
77-
# Git - Stash
7866
["gst"]="git stash"
7967
["gstp"]="git stash pop"
8068
["gstl"]="git stash list"
81-
82-
# Git - Reset
8369
["grh"]="git reset HEAD"
8470
["grhh"]="git reset HEAD --hard"
8571

86-
# General - Navigation
72+
# Navigation
8773
["cls"]="clear"
8874
[".."]="cd .."
8975
["..."]="cd ../.."
9076
["...."]="cd ../../.."
9177

92-
# General - List
78+
# List
9379
["ll"]="ls -lah"
9480
["la"]="ls -A"
9581
["l"]="ls -CF"
9682

97-
# General - Safety
98-
["cp"]="cp -i"
99-
["mv"]="mv -i"
100-
["rm"]="rm -i"
101-
102-
# General - Utils
83+
# Utils
10384
["h"]="history"
10485
["hg"]="history | grep"
10586
["myip"]="curl -s ipecho.net/plain; echo"
106-
["localip"]="hostname -I | awk '{print \$1}'"
10787
["ports"]="netstat -tulanp"
10888
["df"]="df -h"
109-
["du"]="du -h"
11089
["free"]="free -h"
111-
["psg"]="ps aux | grep"
112-
113-
# General - Misc
114-
["now"]="date '+%Y-%m-%d %H:%M:%S'"
90+
["now"]="date +%Y-%m-%d_%H:%M:%S"
11591
["week"]="date +%V"
116-
["path"]="echo \$PATH | tr ':' '\n'"
11792
)
11893

11994
# ============================================
120-
# Completions Definition
95+
# Functions (special characters)
96+
# ============================================
97+
FUNCTIONS=(
98+
'dps() { docker ps -a --size --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}\t{{.Size}}"; }'
99+
'dip() { docker inspect --format "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" "$@"; }'
100+
'dstopall() { docker stop $(docker ps -aq); }'
101+
'drmall() { docker rm $(docker ps -aq); }'
102+
'drmiall() { docker rmi $(docker images -q); }'
103+
'localip() { hostname -I | awk "{print \$1}"; }'
104+
'psg() { ps aux | grep "$1"; }'
105+
'path() { echo $PATH | tr ":" "\n"; }'
106+
)
107+
108+
# ============================================
109+
# Completions
121110
# ============================================
122111
COMPLETIONS=(
123-
# Docker container completions
124112
"complete -F _docker_container_logs dlog"
125113
"complete -F _docker_container_exec dex"
126114
"complete -F _docker_container_start dstart"
127115
"complete -F _docker_container_stop dstop"
128116
"complete -F _docker_container_restart drestart"
129117
"complete -F _docker_container_rm drm"
130118
"complete -F _docker_inspect dip"
131-
# Docker image completions
132119
"complete -F _docker_image_rm drmi"
133-
# Git completions
134120
"complete -o bashdefault -o default -o nospace -F __git_wrap__git_main gco"
135121
"complete -o bashdefault -o default -o nospace -F __git_wrap__git_main gcb"
136122
"complete -o bashdefault -o default -o nospace -F __git_wrap__git_main gb"
@@ -139,88 +125,78 @@ COMPLETIONS=(
139125
)
140126

141127
# ============================================
142-
# Main Installation
128+
# Install
143129
# ============================================
144-
145130
echo -e "${BLUE}"
146131
echo " ╔═══════════════════════════════════════╗"
147132
echo " ║ ExpTech Bash Aliases Installer ║"
148-
echo " ║ Version: $VERSION "
133+
echo " ║ Version: ${VERSION}"
149134
echo " ╚═══════════════════════════════════════╝"
150135
echo -e "${NC}"
151136

152-
# Ensure .bashrc exists
153137
touch "$BASHRC"
154138

155-
# Backup .bashrc
139+
# Backup
156140
if [[ ! -f "$BASHRC.bak" ]]; then
157141
cp "$BASHRC" "$BASHRC.bak"
158-
echo -e "${GREEN}[backup]${NC} Created ~/.bashrc.bak"
142+
echo -e "${GREEN}[backup]${NC} ~/.bashrc.bak"
159143
fi
160144

161-
echo ""
162-
echo "Installing aliases..."
163-
echo ""
164-
165-
added=0
166-
skipped=0
167-
updated=0
145+
# Install aliases
146+
echo -e "\n${BLUE}[Aliases]${NC}"
147+
added=0; skipped=0; updated=0
168148

169-
for alias_name in "${!ALIASES[@]}"; do
170-
alias_cmd="${ALIASES[$alias_name]}"
171-
# Use double quotes for commands containing single quotes or {{
172-
if [[ "$alias_cmd" == *"'"* ]] || [[ "$alias_cmd" == *"{{"* ]]; then
173-
alias_line="alias $alias_name=\"$alias_cmd\""
174-
else
175-
alias_line="alias $alias_name='$alias_cmd'"
176-
fi
149+
for name in "${!ALIASES[@]}"; do
150+
cmd="${ALIASES[$name]}"
151+
line="alias $name='$cmd'"
177152

178-
if grep -q "^alias $alias_name=" "$BASHRC"; then
179-
# Check if alias value is the same
180-
existing=$(grep "^alias $alias_name=" "$BASHRC")
181-
if [[ "$existing" != "$alias_line" ]]; then
182-
# Remove old alias and add new one
183-
sed -i "/^alias $alias_name=/d" "$BASHRC"
184-
echo "$alias_line" >> "$BASHRC"
185-
echo -e " ${YELLOW}[update]${NC} $alias_name"
153+
if grep -q "^alias $name=" "$BASHRC"; then
154+
existing=$(grep "^alias $name=" "$BASHRC")
155+
if [[ "$existing" != "$line" ]]; then
156+
sed -i "/^alias $name=/d" "$BASHRC"
157+
echo "$line" >> "$BASHRC"
158+
echo -e " ${YELLOW}[update]${NC} $name"
186159
((updated++))
187160
else
188-
echo -e " ${BLUE}[skip]${NC} $alias_name"
189161
((skipped++))
190162
fi
191163
else
192-
echo "$alias_line" >> "$BASHRC"
193-
echo -e " ${GREEN}[add]${NC} $alias_name"
164+
echo "$line" >> "$BASHRC"
165+
echo -e " ${GREEN}[add]${NC} $name"
194166
((added++))
195167
fi
196168
done
197169

198-
# Add completions
199-
echo ""
200-
echo "Installing completions..."
201-
comp_added=0
170+
# Install functions
171+
echo -e "\n${BLUE}[Functions]${NC}"
172+
for func in "${FUNCTIONS[@]}"; do
173+
name=$(echo "$func" | cut -d'(' -f1)
174+
if grep -q "^${name}()" "$BASHRC"; then
175+
sed -i "/^${name}()/d" "$BASHRC"
176+
fi
177+
echo "$func" >> "$BASHRC"
178+
echo -e " ${GREEN}[add]${NC} $name"
179+
done
202180

203-
for comp_line in "${COMPLETIONS[@]}"; do
204-
if ! grep -qF "$comp_line" "$BASHRC"; then
205-
echo "$comp_line" >> "$BASHRC"
181+
# Install completions
182+
echo -e "\n${BLUE}[Completions]${NC}"
183+
comp_added=0
184+
for comp in "${COMPLETIONS[@]}"; do
185+
if ! grep -qF "$comp" "$BASHRC"; then
186+
echo "$comp" >> "$BASHRC"
206187
((comp_added++))
207188
fi
208189
done
190+
echo -e " ${GREEN}[done]${NC} $comp_added added"
209191

210-
echo -e " ${GREEN}[done]${NC} $comp_added completions added"
211-
192+
# Summary
212193
echo ""
213194
echo -e "${BLUE}════════════════════════════════════════${NC}"
214-
echo -e " ${GREEN}Added:${NC} $added"
215-
echo -e " ${YELLOW}Updated:${NC} $updated"
216-
echo -e " ${BLUE}Skipped:${NC} $skipped"
195+
echo -e " ${GREEN}Added:${NC} $added ${YELLOW}Updated:${NC} $updated ${BLUE}Skipped:${NC} $skipped"
217196
echo -e "${BLUE}════════════════════════════════════════${NC}"
218-
echo ""
219197

220-
echo -e "${YELLOW}╔═══════════════════════════════════════╗${NC}"
221-
echo -e "${YELLOW}║ Run this command to activate: ║${NC}"
222-
echo -e "${YELLOW}║ ║${NC}"
223-
echo -e "${YELLOW}${GREEN}source ~/.bashrc${YELLOW}${NC}"
224-
echo -e "${YELLOW}║ ║${NC}"
225-
echo -e "${YELLOW}╚═══════════════════════════════════════╝${NC}"
226-
echo ""
198+
echo -e "
199+
${YELLOW}╔═══════════════════════════════════════╗
200+
${GREEN}source ~/.bashrc${YELLOW}
201+
╚═══════════════════════════════════════╝${NC}
202+
"

0 commit comments

Comments
 (0)