1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
#!/bin/bash
# $- meaning see https://stackoverflow.com/questions/42757236/what-does-mean-in-bash
# If not running interactively, don't do anything
#[[ $- != *i* ]] && return
# https://github.com/westscz/.dotfiles/blob/master/system/bashrc
case $- in
*i*) ;;
*) return;;
esac
. /usr/share/fzf/completion.bash
. /usr/share/fzf/key-bindings.bash
. /usr/share/bash-complete-alias/complete_alias
# default PS1
#PS1='[\u@\h \W]\$ '
# depreciated
# 0: not bold, 91: bright red
# \e[m act like \e[0m, means reset so commands after it will not be colored
# https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit
# need \[ and \] around color codes so bash ignore color codes when calculating line wraps?
# https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/#:~:text=you%20also%20need%20to%20put%20%5C%5B%20and%20%5C%5D%20around%20any%20color%20codes%20so%20that%20bash%20does%20not%20take%20them%20into%20account%20when%20calculating%20line%20wraps.
#PS1='\[\e[0;91m\][\u@\h \W]\$ \[\e[0m\]'
# \033 can be used for dash printf, but \e can't? not sure why
#PS1='\[\033[0;91m\][\u@\h \W]\$ \[\033[0m\]'
# tput is better for different terminals?
# but also need \[ and \] around color code for PS1! but seems no need for printf in script? why?
# setaf and sgr0 see `man terminfo`
PS1="\[$(tput setaf 1)\][\u@\h \W]\$ \[$(tput sgr0)\]"
# https://github.com/LukeSmithxyz/voidrice/blob/master/.config/shell/aliasrc
for cmd in iotop nethogs hardcode-fixer ventoy du units_cur fbgrab powertop nft rpi-imager fdisk intel_gpu_top; do
alias $cmd="sudo $cmd"
done
for cmd in pacdiff 'tree -a'; do
alias ${cmd%% *}="sudo -E $cmd"
done
unset cmd
# same name
alias absolutely-proprietary='echo n | absolutely-proprietary -f'
alias alsamixer='alsamixer -V all'
alias diff='diff --color=auto'
alias grep='grep --color=auto'
#alias info='info --vi-keys'
alias ls='ls --color=auto'
alias radeontop='radeontop -c'
alias rem='rem -@'
alias remind='remind -@'
alias rm='rm -I'
alias sdcv='sdcv --color'
alias shellcheck='shellcheck -x'
alias uname='uname -a'
alias watch='watch -c'
# different name
# /dev/ttyACM0 can be in config file, or as environmantal variable, see /usr/share/doc/adafruit-ampy/README.md
alias ap='sudo ampy -p /dev/ttyACM0'
alias c=cfg
alias d='\sdcv --color'
alias g=git
alias l='\ls --color=auto -A --group-directories-first'
alias ll='\ls --color=auto -lAh --group-directories-first'
alias m=man
alias p=pacman
alias pt=pactree
alias pu=paru
alias qre='qrencode -t utf8i -m 1'
alias r='rem -c+2 -@'
alias s='sudo ' # https://askubuntu.com/a/22043
alias se='sudo -E '
alias spd='speedtest; librespeed-cli'
alias sv=sudoedit
alias sy=systemctl
alias tp='sudo tio /dev/ttyACM0'
alias v='$EDITOR'
alias va='$EDITOR "$XDG_DOCUMENTS_DIR/notes/computer/arch_install.md"'
alias vc='$EDITOR "$XDG_DOCUMENTS_DIR/notes/computer/cli_notes.md"'
alias vq='$EDITOR "$XDG_DOCUMENTS_DIR/notes/others/questions_ideas_tips.md"'
alias vr='$EDITOR "$DOTREMINDERS"'
alias vvrc='$EDITOR +e\ \$MYVIMRC'
alias za='zoxide add'
# almost never use
#alias zq='zoxide query'
#alias zqi='zoxide query -i'
# depreciated
# all green color, no auto turn off color when pipe to nvim
#alias pactree='pactree -c'
#eval "$(zoxide init posix --hook prompt --no-aliases)"
# if no --no-aliases, when tab complete a dir name contain spaces, bash will not escape spaces, don't know why, maybe bug?
eval "$(zoxide init bash --no-aliases)"
z () {
if __zoxide_z "$@"; then
l
echo "$PWD"
fi
}
zi () {
if __zoxide_zi "$@"; then
l
echo "$PWD"
fi
}
# steal from fzf: https://github.com/junegunn/fzf/blob/master/shell/key-bindings.bash
# READLINE_LINE and READLINE_POINT see `man bash`
zqi_key () {
# fzf uses printf '%q' to escape output, but attention %q is not POSIX
# well we use bash here so whatever
selected="$(printf '%q' "$(zoxide query -i)")"
# if don't want to use bash builtin printf:
#selected=$(/usr/bin/printf '%q' "$(zoxide query -i)")
# no "''" if select nothing
if ! [ "$selected" = "''" ]; then
# another way:
#selected=$(zoxide query -i | tr '\n' '\0' | xargs -0 printf '%q')
#if [ "$selected" ]; then
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$selected ${READLINE_LINE:$READLINE_POINT}"
READLINE_POINT=$((READLINE_POINT+${#selected}+1))
fi
}
bind -m vi-command -x '"\C-o":zqi_key'
bind -m vi-insert -x '"\C-o":zqi_key'
# more about bash completion see https://unix.stackexchange.com/a/529357/459013
complete -c wh
# tldr-sh-client readme
complete -W "$(tldr 2>/dev/null -l -p all)" tldr
# https://unix.stackexchange.com/questions/216748/how-to-re-use-existing-completion-with-recent-bash-completion
_completion_loader info
eval "$(complete -p info | sed 's/\(.*\)info$/\1vinfo/')"
_completion_loader git
eval "$(complete -p git | sed 's/\(.*\)git$/\1cfg/')"
# complete-alias readme
complete -F _complete_alias "${!BASH_ALIASES[@]}"
|