Я сделал этот небольшой скрипт, который делает это. Я использую cd "$1"; pwd
, чтобы получить текущий каталог, чтобы пути не были канонизированы (скажем, если вы попробуете magic-ls .
и ваш текущий каталог / var / lib / postgres, но это символическая ссылка на / mnt / postgres, вы получите /var
, /var/lib
и /var/lib/postgres
, при использовании realpath
вы получите /mnt
и /mnt/postgres
)
magic-ls() {
local current=$(cd "$1"; pwd)
while [[ $current != '/' ]]; do
ls -ld "$current"
current=$(dirname "$current")
done
}
Вот пример вывода:
[leodag@desk ~]$ magic-ls
drwx------ 1 leodag leodag 2722 jun 21 13:49 /home/leodag
drwxr-xr-x 1 root root 18 mai 2 2019 /home
Кстати, он также будет работать без аргументов, поскольку cd ""
не изменяет ваш каталог.
Edit: удалено realpath
из проверки while, так как это может привести к неожиданным результатам если в пути была ссылка на /
и она не нужна.