Linux 命令不能用作别名

Linux 命令不能用作别名

我创建了一个命令来计算服务器上每个用户的会话数。这是:

who | awk '{ print $1}' | sort | uniq -c | sort

效果很好,但是当我将其移动到服务器上的别名时,我只能得到返回who

alias who_con="who | awk '{ print $1}' | sort | uniq -c | sort";

我认为这可能是双引号,所以我尝试用单引号进行封装,但我有相同的行为,

alias who_con='who | awk "{ print $1}" | sort | uniq -c | sort';

答案1

你需要逃离美元$1

$ alias wW="who | awk '{ print \$1}' | sort | uniq -c | sort"
$ wW
      1 tomasz

$1应该由 awk 扩展,而不是由 shell 扩展。如果没有额外的逃逸,它会被外壳扩展。你需要再一级的逃生。这也将做到:

$ alias who_con='who | awk "{ print \$1}" | sort | uniq -c | sort';
$ who_con
      1 tomasz

相关内容