-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathalias_functions.sh
More file actions
233 lines (195 loc) · 6.4 KB
/
alias_functions.sh
File metadata and controls
233 lines (195 loc) · 6.4 KB
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#!/usr/bin/env bash
# SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
source "$(dirname "${BASH_SOURCE[0]}")/aliases.flatpak.sh"
neofetch.() {
/usr/bin/fastfetch "$@"
return $?
}
fetch.() {
/usr/bin/fastfetch "$@"
return $?
}
fetch.ls() {
fetch. \
--key-type string \
--logo none\
--structure os:host:kernel:de:wm:terminal:cpu:gpu:gpu2:memory:swap:disk:localip:locale
}
sysinfo.fetch() {
fetch.ls "$@"
return $?
}
# ### Bookmarks
# #alias cdmyrepo="cd /mnt/data/myrepo/"
ls.() {
LC_COLLATE=C ls --color=auto --group-directories-first -a -1 "$@"
return $?
}
ls.join() {
local path_A path_B full_path=false join_type=""
local display_A display_B
while [[ $# -gt 0 ]]; do
case $1 in
-i|--inner) join_type="inner"; shift ;;
-o|--outer) join_type="outer"; shift ;;
-f|--full-path) full_path=true; shift ;;
-*) echo "Unknown option: $1" >&2; return 1 ;;
*)
if [[ -z "$path_A" ]]; then
path_A="$1"
display_A="${1/#$HOME/\~}"
elif [[ -z "$path_B" ]]; then
path_B="$1"
display_B="${1/#$HOME/\~}"
else
echo "Too many arguments" >&2; return 1
fi
shift ;;
esac
done
[[ -z "$join_type" ]] && { echo "Usage: ls.join [--inner|--outer] [-f|--full-path] path_A path_B" >&2; return 1; }
[[ -z "$path_A" || -z "$path_B" ]] && { echo "Usage: ls.join [--inner|--outer] [-f|--full-path] path_A path_B" >&2; return 1; }
[[ -d "$path_A" ]] || { echo "Error: $path_A not a directory" >&2; return 1; }
[[ -d "$path_B" ]] || { echo "Error: $path_B not a directory" >&2; return 1; }
path_A="${path_A%/}"
path_B="${path_B%/}"
display_A="${display_A%/}"
display_B="${display_B%/}"
echo "| Path A | Path B |"
echo "|--------|--------|"
if [[ "$join_type" == "inner" ]]; then
comm -12 <(ls -1 "$path_A" | sort) <(ls -1 "$path_B" | sort) |
if [[ "$full_path" == true ]]; then
awk -v a="$display_A" -v b="$display_B" '{ print "| `" a "/" $0 "` | `" b "/" $0 "` |" }'
else
awk '{ print "| `" $0 "` | `" $0 "` |" }'
fi
else
if [[ "$full_path" == true ]]; then
comm -3 <(ls -1 "$path_A" | sort) <(ls -1 "$path_B" | sort) |
awk -v a="$display_A" -v b="$display_B" '
/^\t/ { sub(/^\t/, ""); print "| | `" b "/" $0 "` |"; next }
{ print "| `" a "/" $0 "` | |" }
'
comm -12 <(ls -1 "$path_A" | sort) <(ls -1 "$path_B" | sort) |
awk -v a="$display_A" -v b="$display_B" '{ print "| `" a "/" $0 "` | `" b "/" $0 "` |" }'
else
comm -3 <(ls -1 "$path_A" | sort) <(ls -1 "$path_B" | sort) |
awk '
/^\t/ { sub(/^\t/, ""); print "| | `" $0 "` |"; next }
{ print "| `" $0 "` | |" }
'
comm -12 <(ls -1 "$path_A" | sort) <(ls -1 "$path_B" | sort) |
awk '{ print "| `" $0 "` | `" $0 "` |" }'
fi
fi
}
lsw() {
local dir="${1:?"Directory is required."}"
local name="${2:?"File name wildcard template is required."}"
find -L "${dir}" -wholename "${name}" -ls
return $?
}
catw() {
local dir="${1:?"Directory is required."}"
local name="${2:?"File name wildcard template is required."}"
find -L "${dir}" -wholename "${name}" -exec cat {} \;
return $?
}
catp() {
# Example: catp '[\d]+.*[.]md'
local pattern="${1:?"Pattern is required."}"
cat $(ls -1 | grep -P "${pattern}")
# If `grep`` is without PCRE (`perl`) support: use `ls -1 | perl -ne "print if /${pattern}/"`
}
lsd.() {
lsd -1 -A -G -X --color always --group-dirs first -l -g "$@"
return $?
}
eza.() {
eza -1AlF --color=always --icons=always --group-directories-first --smart-group --git-repos "$@"
return $?
}
md.() {
mkdir "$@"
return $?
}
rename.() {
prename "$@"
return $?
}
# mvall() {
# local match="${1}"
# local ext="${2}"
# for file in $match; do mv "$file" "${file%.}.${ext}"; done
# }
# pgrep.() {
# local pipe # TODO: Accept pipe stdin
# local file # TODO: Accept file path
# local regex="${1:?"Regex required."}"
# perl -ne "print if /${regex}/"
# return $?
# }
# #### For flatpaks
# # alias appfp='flatpak run tld.author.app'
af.flat.template() {
local command="${1:?"Command is required."}"
local package="${2:?"Package is required."}"
echo -e "${command}(){\n\tflatpak run --command=\"${command}\" --file-forwarding ${package} \"\$@\"\n\treturn \$?\n}"
return $?
}
export -f neofetch.
export -f fetch.
export -f fetch.ls
export -f sysinfo.fetch
export -f ls.
export -f ls.join
export -f lsw
export -f catw
export -f catp
export -f lsd.
export -f eza.
export -f md.
export -f rename.
export -f af.flat.template
# npm() {
# pnpm "$@"
# return $?
# }
# #### For distrobox apps
# ##### Arch
# alias gitbatch_db_a='distrobox enter arch -- gitbatch'
# alias pacmana='toolbox run --container arch pacman'
# alias microa='toolbox run --container arch micro'
# alias pandoca='toolbox run --container arch pandoc'
# ##### Fedora
# alias dnftb='toolbox run --container fedora sudo dnf'
# alias rpmtb='toolbox run --container fedora sudo rpm'
# alias yumtb='toolbox run --container fedora sudo yum'
# alias pandoc='toolbox run --container fedora pandoc'
# alias pandoctb='toolbox run --container fedora pandoc'
# alias libreofficetb='toolbox run --container fedora libreoffice'
# alias ffmpegtb='toolbox run --container fedora ffmpeg'
# alias lyxtb='toolbox run --container fedora lyx'
# alias abiwordtb='toolbox run --container fedora abiword'
# ###### pdf tools
# alias pdf2dsctb='toolbox run --container fedora pdf2dsc'
# alias pdfattachtb='toolbox run --container fedora pdfattach'
# alias pdffontstb='toolbox run --container fedora pdffonts'
# alias pdflatextb='toolbox run --container fedora pdflatex'
# alias pdfsigtb='toolbox run --container fedora pdfsig'
# alias pdftohtmltb='toolbox run --container fedora pdftohtml'
# alias pdftotexttb='toolbox run --container fedora pdftotext'
# alias pdf2pstb='toolbox run --container fedora pdf2ps'
# alias pdfdetachtb='toolbox run --container fedora pdfdetach'
# alias pdfimagestb='toolbox run --container fedora pdfimages'
# alias pdflatex-devtb='toolbox run --container fedora pdflatex-dev'
# alias pdftextb='toolbox run --container fedora pdftex'
# alias pdftoppmtb='toolbox run --container fedora pdftoppm'
# alias pdfunitetb='toolbox run --container fedora pdfunite'
# alias pdfatfitb='toolbox run --container fedora pdfatfi'
# alias pdfetextb='toolbox run --container fedora pdfetex'
# alias pdfinfotb='toolbox run --container fedora pdfinfo'
# alias pdfseparatetb='toolbox run --container fedora pdfseparate'
# alias pdftocairotb='toolbox run --container fedora pdftocairo'
# alias pdftopstb='toolbox run --container fedora pdftops