Можно работать
ls -R | grep ':$' | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Это показывает все подкаталоги niftly отформатированный как дерево.
Иногда существует также tree
утилита, доступная во многих дистрибутивах Linux. В противном случае затем можно установить его отсюда.
Это обеспечивает следующий вывод:
~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
| |-- dev_snmp6
| |-- netfilter
| |-- rpc
| | |-- auth.rpcsec.context
| | |-- auth.rpcsec.init
| | |-- auth.unix.gid
| | |-- auth.unix.ip
| | |-- nfs4.idtoname
| | |-- nfs4.nametoid
| | |-- nfsd.export
| | `-- nfsd.fh
| `-- stat
|-- root -> /
`-- task
`-- 15589
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/task/15589/fd
|-- fdinfo
`-- root -> /
То, что происходит, - то, что Вы рекурсивно называете Ваш ls
функция. Для использования двоичного файла можно использовать ZSH's command
встроенный.
function ls {
command ls -l "$@"
}