-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.bashrc_ext
157 lines (138 loc) · 3.9 KB
/
.bashrc_ext
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Check if the command 'exa' exists
command -v exa >/dev/null 2>&1 && {
alias ls='exa --long --header --git'
alias l='exa --all --long --header --git'
}
# Check if the command 'ghq' exists
command -v ghq >/dev/null 2>&1 && {
alias g='ghq'
}
# Check if the command 'batcat' exists
command -v batcat >/dev/null 2>&1 && {
alias bat='batcat'
}
alias lzd='lazydocker'
alias dcul='docker compose up -d && docker compose logs -f'
alias dcup='docker compose pull && docker compose down && dcul'
alias dcd='docker compose down'
alias dcb='docker compose build'
alias dclf='docker compose logs -f'
alias update='sudo apt update && sudo apt upgrade -y'
cd() {
if [[ $1 == ..[0-9]* ]]; then
local count="${1:2}"
local target=""
for ((i=0; i<count; i++)); do
target+="../"
done
builtin cd "$target"
else
builtin cd "$@"
fi
ls
}
declare -A saved_dirs
spwd() {
local name="default"
if [[ ! -z "$1" ]]; then
name="$1"
fi
saved_dirs["$name"]=$(pwd)
echo "Saved current directory as '$name'."
}
rpwd() {
local name="default"
if [[ ! -z "$1" ]]; then
name="$1"
fi
if [[ ! -z "${saved_dirs["$name"]}" ]]; then
cd "${saved_dirs["$name"]}" || return 1
else
echo "No saved directory found for '$name'."
fi
}
lpwd() {
for name in "${!saved_dirs[@]}"; do
echo "$name: ${saved_dirs[$name]}"
done
}
ex() {
if [ -f "$1" ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1;;
*.7z) 7z x $1 ;;
*.deb) ar x $1 ;;
*.tar.xz) tar xf $1 ;;
*.tar.zst) unzstd $1 ;;
*) echo "'$1' cannot be extracted via ex()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
mkcd() {
mkdir -p "$1"
cd "$1"
}
dotfiles_update() {
git pull
ARCH=$(uname -m); if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; else ARCH="arm64"; fi; URL=$(curl -s https://api.github.com/repos/Zelak312/dotfiles/releases/latest | jq -r --arg ARCH "$ARCH" '.assets[] | select(.name | contains("dotfiles-linux-"+$ARCH)) | .browser_download_url'); TEMP=$(mktemp) && curl -L -o $TEMP $URL && chmod +x $TEMP && $TEMP && rm $TEMP
}
backup() {
local backup_name=""
local files=()
# Loop through the arguments
for arg in "$@"; do
if [[ "$arg" == "--name" ]]; then
backup_name=true
elif [[ "$backup_name" == true ]]; then
backup_name="$arg"
backup_name="${backup_name}.tar.gz" # Ensuring the file extension
else
files+=("$arg")
fi
done
# Check if files are provided
if [ ${#files[@]} -eq 0 ]; then
echo "Usage: backup [--name custom_name] [folder1] [folder2] [file1] ..."
return 1
fi
# Set default name if not provided
if [[ -z "$backup_name" ]]; then
backup_name="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
fi
# Create the backup
tar -czf "$backup_name" -- "${files[@]}"
echo "Backup created: $backup_name"
}
check_ports() {
if [ $# -eq 0 ]; then
echo "Usage: check_ports <range>"
return 1
fi
ss -tuln | grep ":$1"
}
git_stash_diff() {
if [ $# -eq 0 ]; then
git stash show -p
else
git stash show -p stash@{"$1"}
fi
}
# on startup
# Check if tmux is installed and automatically start tmux on SSH login
if command -v tmux &> /dev/null && [ -z "$TMUX" ] && [ -n "$SSH_CONNECTION" ]; then
# Check if connection doesn't come from vscode
if [[ -z "$VSCODE_IPC_HOOK_CLI" && "$TERM_PROGRAM" != "vscode" ]]; then
tmux -u attach-session -t ssh_tmux || tmux -u new-session -s ssh_tmux
fi
fi