diff options
author | Minijackson <minijackson@riseup.net> | 2024-10-28 18:04:59 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2024-10-28 18:08:44 +0100 |
commit | 66f0be8ea9195f795639cbf6cb858cb8fb200809 (patch) | |
tree | f03fb55aedfa8a14b14d848e25f91ed34c8ef8df | |
parent | 3747cf3128390b5364fed4f484fdff11f1bf5d78 (diff) | |
download | nixos-config-reborn-66f0be8ea9195f795639cbf6cb858cb8fb200809.tar.gz nixos-config-reborn-66f0be8ea9195f795639cbf6cb858cb8fb200809.zip |
dotfiles/zshrc: add cdt and sll functions from sll
-rw-r--r-- | dotfiles/zshrc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dotfiles/zshrc b/dotfiles/zshrc index 553bfe1..35026f3 100644 --- a/dotfiles/zshrc +++ b/dotfiles/zshrc | |||
@@ -213,6 +213,67 @@ function ssht | |||
213 | 213 | ||
214 | compdef ssht=ssh | 214 | compdef ssht=ssh |
215 | 215 | ||
216 | # From GRML | ||
217 | |||
218 | function cdt { | ||
219 | builtin cd "$(mktemp -d)" | ||
220 | builtin pwd | ||
221 | } | ||
222 | |||
223 | zmodload -a zsh/stat zstat | ||
224 | |||
225 | function sll { | ||
226 | if [[ -z ${1} ]] ; then | ||
227 | printf 'Usage: %s <symlink(s)>\n' "${0}" | ||
228 | return 1 | ||
229 | fi | ||
230 | |||
231 | local file jumpd curdir | ||
232 | local -i 10 RTN LINODE i | ||
233 | local -a SEENINODES | ||
234 | curdir="${PWD}" | ||
235 | RTN=0 | ||
236 | |||
237 | for file in "${@}" ; do | ||
238 | SEENINODES=() | ||
239 | ls -l "${file:a}" || RTN=1 | ||
240 | |||
241 | while [[ -h "$file" ]] ; do | ||
242 | LINODE=$(zstat -L +inode "${file}") | ||
243 | for i in ${SEENINODES} ; do | ||
244 | if (( ${i} == ${LINODE} )) ; then | ||
245 | builtin cd -q "${curdir}" | ||
246 | print 'link loop detected, aborting!' | ||
247 | return 2 | ||
248 | fi | ||
249 | done | ||
250 | SEENINODES+=${LINODE} | ||
251 | jumpd="${file:h}" | ||
252 | file="${file:t}" | ||
253 | |||
254 | if [[ -d ${jumpd} ]] ; then | ||
255 | builtin cd -q "${jumpd}" || RTN=1 | ||
256 | fi | ||
257 | file=$(readlink "$file") | ||
258 | |||
259 | jumpd="${file:h}" | ||
260 | file="${file:t}" | ||
261 | |||
262 | if [[ -d ${jumpd} ]] ; then | ||
263 | builtin cd -q "${jumpd}" || RTN=1 | ||
264 | fi | ||
265 | |||
266 | ls -l "${PWD}/${file}" || RTN=1 | ||
267 | done | ||
268 | shift 1 | ||
269 | if (( ${#} >= 1 )) ; then | ||
270 | print "" | ||
271 | fi | ||
272 | builtin cd -q "${curdir}" | ||
273 | done | ||
274 | return ${RTN} | ||
275 | } | ||
276 | |||
216 | # }}} | 277 | # }}} |
217 | 278 | ||
218 | # Abbreviations {{{ | 279 | # Abbreviations {{{ |