根据文件类型在 bash 中调用 ls 或 less

根据文件类型在 bash 中调用 ls 或 less

我经常会意外地对某个文件执行了 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为第一个非开关。这会经常出错,但这只是下一步的建议。

相关内容