【发布时间】:2018-12-19 19:17:10
【问题描述】:
我已经成功地将一些 bash 命令连接在一起:
$> foo --color=RED | grep -Eo '(v[1-9])'
$> v1
假设foo 是一个打印出很多东西的别名,我想获取一个version number 并将其传递给另一个命令bar,它会得到一个id。所以我添加了这个并且它有效:
$> foo --color=RED | grep -Eo '(v[1-9])' | \
awk '{print "bar --version="$1" --color=RED"}' | xargs -0 bash -c
$> ID: 1234
很棒。现在,我想在我的 .aliases 文件中创建一个条目,这样我就可以像这样运行它:
$> wombat RED
问题:我无法让它工作
alias wombat='function _w() {
COLOR=$1; # cache the color
foo --color=$COLOR | grep -Eo "(v[1-9])" | \
awk '{print "bar --version=$1 --color=$COLOR"}' | xargs -0 bash -c;
};_w'
问题似乎在于我如何在awk 命令周围转义(或不转义)。 注意:在awk 命令中,我需要引用两个我传递给别名的version number 和color。
我尝试了很多变体,但似乎无法做到正确。有人可以帮忙吗?
【问题讨论】:
-
为什么是别名?只需创建一个函数并在外部调用它
-
你是说创建一个 bash 脚本和别名吗?只要我可以从系统中的任何位置调用它,就可以了。
-
不,只需在
~/.bashrc中创建此函数并在任何地方调用它即可 -
有人应该为“如何为复杂命令定义别名?”写一个好的副本。这只是显示如何使用函数
-
使用 bash 别名的正确方法是从不。