awk 在 .zshrc 和在 zsh 里行为不一致问题

2021-01-18 12:55:56 +08:00
 vision1900

我想写个扫描端口的 alias

先在 zsh 里直接试: netstat -tln | awk '(NR>2) {print $4}

输出是:

0.0.0.0:80
127.0.0.53:53
0.0.0.0:443
0.0.0.0:9000
:::80
:::9184
:::60000
:::9000
:::9001

在 .zshrc 里: alias sop="netstat -tln | awk '(NR>2) {print $4}'" source 之后 sop 的输出居然是:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::9184                 :::*                    LISTEN     
tcp6       0      0 :::60000                :::*                    LISTEN     
tcp6       0      0 :::9000                 :::*                    LISTEN     
tcp6       0      0 :::9001                 :::*                    LISTEN

请问造成 awk 这种行为不一致的原因是什么呢? BTW, sop => scan open ports, 系统 Ubuntu 20.04 x86_64, VPS

2160 次点击
所在节点    Linux
10 条回复
lcdtyph
2021-01-18 13:06:43 +08:00
因为$4 在执行 alias 的时候就被代换成空字符串了,你需要在 alias 的时候把$给转译了
debuggerx
2021-01-18 13:10:38 +08:00
搜索引擎关键词: 'alias awk'
pkookp8
2021-01-18 13:13:43 +08:00
更像是 awk 没执行
sammyM
2021-01-18 13:48:17 +08:00
应该这样写吧 alias sop='netstat -tln|awk "(NR>2){print \$4}"'
vision1900
2021-01-18 13:48:41 +08:00
@pkookp8 还是执行了的,只是删除了 netstat 的前两行输出,哈哈
vision1900
2021-01-18 13:49:28 +08:00
@lcdtyph 谢谢大佬,问题已经解决,我说 $4 的颜色和周围的字符不一样呢
lcdtyph
2021-01-18 13:50:30 +08:00
@sammyM
如果外面的 alias 用单引号,里面就不用转译
Jirajine
2021-01-18 13:51:00 +08:00
不要用 alias,用 function
vision1900
2021-01-18 13:51:45 +08:00
@sammyM 是的,要转译美刀符,我搞了个简洁输出的版本出来:
```
alias sop="netstat -tln | awk '(NR>2) {print \$4}' | rev | cut -d':' -f1 | rev | sort -n | uniq"
```
vision1900
2021-01-18 16:25:08 +08:00
@Jirajine 试了下 function 确实可以,谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/745878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX