summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2024-10-28 18:04:59 +0100
committerMinijackson <minijackson@riseup.net>2024-10-28 18:08:44 +0100
commit66f0be8ea9195f795639cbf6cb858cb8fb200809 (patch)
treef03fb55aedfa8a14b14d848e25f91ed34c8ef8df
parent3747cf3128390b5364fed4f484fdff11f1bf5d78 (diff)
downloadnixos-config-reborn-66f0be8ea9195f795639cbf6cb858cb8fb200809.tar.gz
nixos-config-reborn-66f0be8ea9195f795639cbf6cb858cb8fb200809.zip
dotfiles/zshrc: add cdt and sll functions from sll
-rw-r--r--dotfiles/zshrc61
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
214compdef ssht=ssh 214compdef ssht=ssh
215 215
216# From GRML
217
218function cdt {
219 builtin cd "$(mktemp -d)"
220 builtin pwd
221}
222
223zmodload -a zsh/stat zstat
224
225function 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 {{{