用bash别名链接grep

时间:2017-08-27 17:59:39

标签: bash grep

我在/etc/profile.d/sh_aliases中为所有用户都有一个bash别名。其中一个别名如下:

alias nlanhosts = 'nmap -sn 192.168.0.* | grep "[0-9]* hosts up" | grep -o "[0-9]*"'

当我尝试正常运行上述命令时(即没有别名或单引号),我得到一个数字。但是使用别名,我打印出4个数字。我不知道为什么当别名时行为不同。我尝试使用它作为一个功能,它没有任何区别。在制作别名时是否需要转义任何字符?

2 个答案:

答案 0 :(得分:1)

你应该真正使用一个函数,因为你的命令链比一个简单的别名更复杂。

您可以添加:

nlanhosts() {
    nmap -sn 192.168.0.* | grep "[0-9]* hosts up" | grep -o "[0-9]*"
}

到您的.bashrc文件中的方式与别名相同。

答案 1 :(得分:1)

这有用吗?

alias nlanhosts='nmap -sn 192.168.0.* | grep -o "[0-9]* hosts up" | grep -o "[0-9]*"'

也为第一个grep添加了-o。

还尝试使用{* 1}}或192.168.0.0/24格式而不是*