From 66f0be8ea9195f795639cbf6cb858cb8fb200809 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Mon, 28 Oct 2024 18:04:59 +0100 Subject: dotfiles/zshrc: add cdt and sll functions from sll --- dotfiles/zshrc | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/dotfiles/zshrc b/dotfiles/zshrc index 553bfe1..35026f3 100644 --- a/dotfiles/zshrc +++ b/dotfiles/zshrc @@ -213,6 +213,67 @@ function ssht compdef ssht=ssh +# From GRML + +function cdt { + builtin cd "$(mktemp -d)" + builtin pwd +} + +zmodload -a zsh/stat zstat + +function sll { + if [[ -z ${1} ]] ; then + printf 'Usage: %s \n' "${0}" + return 1 + fi + + local file jumpd curdir + local -i 10 RTN LINODE i + local -a SEENINODES + curdir="${PWD}" + RTN=0 + + for file in "${@}" ; do + SEENINODES=() + ls -l "${file:a}" || RTN=1 + + while [[ -h "$file" ]] ; do + LINODE=$(zstat -L +inode "${file}") + for i in ${SEENINODES} ; do + if (( ${i} == ${LINODE} )) ; then + builtin cd -q "${curdir}" + print 'link loop detected, aborting!' + return 2 + fi + done + SEENINODES+=${LINODE} + jumpd="${file:h}" + file="${file:t}" + + if [[ -d ${jumpd} ]] ; then + builtin cd -q "${jumpd}" || RTN=1 + fi + file=$(readlink "$file") + + jumpd="${file:h}" + file="${file:t}" + + if [[ -d ${jumpd} ]] ; then + builtin cd -q "${jumpd}" || RTN=1 + fi + + ls -l "${PWD}/${file}" || RTN=1 + done + shift 1 + if (( ${#} >= 1 )) ; then + print "" + fi + builtin cd -q "${curdir}" + done + return ${RTN} +} + # }}} # Abbreviations {{{ -- cgit v1.2.3