在Bash LS别名中使用星号



in〜/.bash_aliases我想创建一个重复单词的别名,该单词将重复给定命令n时间。

repeat() {
    n=$1
    shift
    while [ $(( n -= 1 )) -ge 0 ]
    do
        "$@"
    done
}

我想使用重复列出目录中的更新文件,因此我做了以下函数(等待,清除,列表):

wcls() {
    m=$1
    shift
    clear
    date
    ls -l "$@"
    sleep $m
}

我有一个文件夹,其中my_file1和my_file2。如果我运行脚本:

repeat 500 wcls 2 my_file*

我得到

my_file1 ...
my_file2 ...

,与此同时,我将my_file2更改为my_file3脚本不会更新显示

的内容
my_file1 ...
my_file2 no such file or directory

我应该为正确处理星号的功能做什么?

这里的问题是您的星号正在通过交互式外壳扩展。执行别名时,您将其馈送一个文件列表,而不是带有星号的文件。

我认为,除了逃脱您的星号并让别名进行扩展外,我认为这并不是一个简单的方法。这是一个坏主意,因为随后用有趣的字符的文件名可能会影响仅因其存在而执行的内容。

相关内容

  • 没有找到相关文章

最新更新