【问题标题】:A confusion about the alias area of bashrc file关于 bashrc 文件的别名区域的混淆
【发布时间】:2020-06-27 09:26:07
【问题描述】:

我想写我自己的别名oepnserveroepnserver的功能是:

  • 显示我的IP地址
  • 使用 python 模块在当前文件夹上启动服务器。

详细代码如下:

alias openserver="ifconfig wlan0 |grep inet\ |awk '{print $2}' && python3 -m http.server 54188"

当我输入oepnserver 时,我的终端只显示:

        inet 172.34.162.200  netmask 255.255.224.0  broadcast 172.34.191.255
Serving HTTP on 0.0.0.0 port 54188 (http://0.0.0.0:54188/) ...

然而,我的期望是

172.34.162.200
Serving HTTP on 0.0.0.0 port 54188 (http://0.0.0.0:54188/) ...

我也尝试使用ifconfig wlan0 |grep inet\ |awk '{print $2}',得到正确的输出。

我应该使用另一种方式来组合这两个命令而不是&&吗?还是我打错字了?

【问题讨论】:

  • 不,&& 是正确的,假设您只希望在前面的所有命令都成功的情况下运行 python。 inet\ 末尾的 \ 是可疑的,你没有用单引号括起整个论点是错误的。我会说更可能的问题是 ifconfig 正在打印到 stderr 而不是 stdout 但如果命令从命令行工作,那么它就不可能了。
  • @EdMorton 谢谢你,我会根据你的建议再试一次。

标签: linux bash awk grep


【解决方案1】:

根据您显示的代码,我正在尝试对其进行优化,这可以通过单个 awk 完成。

ifconfig wlan0 | awk '/inet /{print $2}' && your python code

另外恕我直言,您应该尝试将其作为函数而不是别名。

【讨论】:

  • 结论是别名方式(即使使用你的答案)不能满足我的需求......,但你的回答也给了我一个很好的建议,让alias 做它应该做的,而不是接管function 工作。我以function 的方式重新编码openserver 并解决了我的问题。谢谢。
猜你喜欢
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2018-06-07
相关资源
最近更新 更多