我有一个功能ll,目前扩展到这个:
function ll ()
{
ls -lh --color "$@" | grep "^d";
ls -lh --color "$@" | grep "^-" | grep -v "~";
ls -lh --color "$@" | grep "^l"
}
Run Code Online (Sandbox Code Playgroud)
这样做是将列出的文件夹排序为首先显示目录,然后是文件,然后是链接.但是,我发现这种方法会降低ls命令的功能,例如,如果我尝试调用ll /bin /tmp,我将从两个文件夹中获取混合文件.
是否有一般的经验法则来传递命令别名/函数,以便不减少这些命令的完整功能?如果没有,我如何修复我的ll命令以便保留排序,但是完整的功能ls不会丢失?
请注意,我目前在我的系统(版本5.97)上有bash版本3.2.25(1) - release,因此--show-directories-first我无法使用标记.
编辑:
这是我最终使用的功能,我稍微修改了它,以便在ll没有任何args的情况下工作:
function ll () {
if [ $# -eq 0 ]; then set -- .; fi
for d; do
ls -lh --color "$d"|awk '$1~/^d/{i=0} $1~/^l/{i=1} $1~/^-/{i=2} NF>2{print i OFS $0}' | sort -n -k1,1 | cut -d ' ' -f2-
done
}
Run Code Online (Sandbox Code Playgroud)
分别处理每个参数ll:
function ll ()
{
for d in "$@"; do
ls -lh --color "$d" | grep "^d";
ls -lh --color "$d" | grep "^-" | grep -v "~";
ls -lh --color "$d" | grep "^l"
done
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |