我在/etc/profile.d/sh_aliases中为所有用户都有一个bash别名。其中一个别名如下:
alias nlanhosts = 'nmap -sn 192.168.0.* | grep "[0-9]* hosts up" | grep -o "[0-9]*"'
当我尝试正常运行上述命令时(即没有别名或单引号),我得到一个数字。但是使用别名,我打印出4个数字。我不知道为什么当别名时行为不同。我尝试使用它作为一个功能,它没有任何区别。在制作别名时是否需要转义任何字符?
答案 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
格式而不是*