将通配符传递给别名

Tec*_*ore 5 unix shell ksh

我使用modifies list命令作为别名(在KSH中):

alias ltf='ls -lrt -d -1 $PWD/*'

所以命令ltf显示如下:

-rw-r--r-- 1 myuser mygroup 0 Apr 18 12:00 /usr/test.txt
-rw-r--r-- 1 myuser mygroup 0 Apr 18 12:00 /usr/test.log

现在我想使用通配符.但使用ltf *.log不起作用.

实现这一目标的最佳方法是什么?


更新:我想指定我的问题,因为到目前为止答案并没有解决我的问题:该命令ls -lrt -d -1 $PWD/*执行带有一些选项的列表命令并显示完整路径,这对我来说非常重要.

不幸的是,别名方法不允许使用通配符参数.我的目标是使这成为可能.可能这是将命令创建为函数的最佳方法.这在答案中提到,但它还没有工作(见评论).

有任何想法吗?

Fre*_*Foo 6

使用shell函数而不是别名:

function ltf {
  if [ -z "$1" ]; then
    ls -lrtd1 ${PWD}/*
  else
    ls -lrtd1 $1
  fi
}
Run Code Online (Sandbox Code Playgroud)

  • 出于兴趣,在bsh中是否存在类似于bash的符号:`[[-z"$ 1"]] && ls -lrtd1"$ PWD/*"|| ls -lrtd1"$ 1"` (2认同)