Bash
ls -l –group-directories-first (也作用於符號連結)
ls
選項--group-directories-first
會導致目錄列在頂部,這使得輸出變得ls
乾淨整潔:ls -l --group-directories-first
但是,它並不作用於
symlinks
實際上是symlinks
對目錄的 。有可能使用ls -l -L --group-directories-first
它將在頂部列出這兩種目錄,但不會區分正確目錄和符號連結目錄,這再次令人困惑。
可以
ls
在頂部顯示符號連結目錄,同時仍使它們與正常目錄不同?編輯: 我正在使用
bash
.
不,但如果使用
zsh
,你可以這樣做:mll() { (($#)) || set -- *(N-/) *(N^-/) (($#)) && ls -ldU -- $@ }
您還可以定義一個 globbing 排序順序,例如:
dir1st() { [[ -d $REPLY ]] && REPLY=1-$REPLY || REPLY=2-$REPLY;}
並像這樣使用它:
ls -ldU -- *(o+dir1st)
這樣,您可以將它用於其他命令,而不是
ls
使用ls
不同的選項,或者用於不同的模式,例如:ls -ldU -- .*(o+dir1st) # to list the hidden files and dirs
或者:
ls -ldU -- ^*[[:lower:]]*(o+dir1st) # to list the all-uppercase files and dirs
如果您必須使用
bash
,則相當於:mll() ( if (($# == 0)); then dirs=() others=() shopt -s nullglob for f in *; do if [[ -d $f ]]; then dirs+=("$f") else others+=("$f") fi done set -- "${dirs[@]}" "${others[@]}" fi (($#)) && exec ls -ldU -- "$@" )
bash
沒有 globbing 限定符或任何影響 glob 排序順序的方式,或任何方式在每個 glob 的基礎上打開 nullglob,或具有選項的本地上下文(除了啟動子外殼,因此()
而不是{}
上面)AFAIK .