使用 jq 和多个引号配置别名

Configure alias with jq and multiple quotes

我正在尝试配置一个别名,它将给我一个 AWS 资源列表,但它在使用单引号和双引号转义时总是失败。

aws ec2 describe-instances --filters "Name=tag:tag,Values=foo1" "Name=bar,Values=foo2,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' |  sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq

用 single/double 引号包裹所有内容是行不通的 - alias alias1='aws ec2 describe-instances --filters "Name=tag:tag,Values=foo1" "Name=bar,Values=foo2,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' | sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq'

我想知道我应该把转义字符放在哪里

在上述情况下使用 alias 将需要转义大量引号

我最好的建议是使用函数

myFunc(){
aws ec2 describe-instances --filters "Name=tag:tag,Values=foo1" "Name=bar,Values=foo2,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' |  sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq
 }

你可以把它放在你的 .bashrc 里。只需输入 myFunc 到 运行 命令

无需转义引用!如此简单,快乐编码