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)"
1212BASHRC=" $HOME /.bashrc"
1313
1414# Colors
15- RED=' \033[0;31m'
1615GREEN=' \033[0;32m'
1716YELLOW=' \033[0;33m'
1817BLUE=' \033[0;34m'
19- NC=' \033[0m' # No Color
18+ NC=' \033[0m'
2019
2120# ============================================
22- # Aliases Definition
21+ # Aliases
2322# ============================================
2423declare -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# ============================================
122111COMPLETIONS=(
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-
145130echo -e " ${BLUE} "
146131echo " ╔═══════════════════════════════════════╗"
147132echo " ║ ExpTech Bash Aliases Installer ║"
148- echo " ║ Version: $VERSION ║"
133+ echo " ║ Version: ${ VERSION} ║"
149134echo " ╚═══════════════════════════════════════╝"
150135echo -e " ${NC} "
151136
152- # Ensure .bashrc exists
153137touch " $BASHRC "
154138
155- # Backup .bashrc
139+ # Backup
156140if [[ ! -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"
159143fi
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
196168done
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
208189done
190+ echo -e " ${GREEN} [done]${NC} $comp_added added"
209191
210- echo -e " ${GREEN} [done]${NC} $comp_added completions added"
211-
192+ # Summary
212193echo " "
213194echo -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 "
217196echo -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