我经常会意外地对某个文件执行了 ls ,而我原本想做更少的操作。
有没有办法创建一个别名或函数,对目录执行 ls,对文件执行 less。
答案1
你想要的基本东西可能看起来像这样:
function my_less()
{
obj=$1
shift
test -d $obj && ls $obj $@
test -f $obj && less $obj $@
}
然后
my_less thing
将根据类型执行ls
或。less
抓取obj=$1
函数的第一个参数。shift
将剩余的参数“向左”移动,并且$@
是当前参数列表。
如果您想要对开关进行一些基本的处理,您可以像这样扩展此功能:
function my_less()
{
switches=
obj=
while true
do
case $1 in
-*)
switches="$switches $1"
shift
;;
*)
obj=$1
shift
break
;;
esac
done
test -d $obj && ls $switches $obj $@
test -f $obj && less $switches $obj $@
}
这将收集所有领先的开关并设置obj
为第一个非开关。这会经常出错,但这只是下一步的建议。