尝试给长命令起别名只能得到它的一部分

尝试给长命令起别名只能得到它的一部分

我有以下有效命令:

ls -la | awk '$5 > 2'

我正在尝试为整个事情起别名。如果我尝试一种天真的方式:

alias ll "ls -la | awk '$5 > 2'"

这不起作用。

如果我尝试转义美元符号,我只能得到命令的一部分,ll现在是ls -la | awk $5

我应该怎么做才能按照我想要的方式定义此别名?

答案1

如果您的别名比简单命令更复杂,则只需使用 shell 函数:

lz () {
    ls -la | awk '$5 > 2'
}

...或者找到一个更简单并且适合作为别名的命令:

alias lz='find . -maxdepth 1 -size +2c -ls'

手册bash包含以下声明

对于几乎所有用途,别名都被 shell 函数取代。

有关的:为什么*不*解析`ls`?

答案2

逃避,平等

$ alias ll="ls -la | awk '\$5 > 2'"
$ alias|grep ll                                       
ll='ls -la | awk '\''$5 > 2'\'

相关内容