使用 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 到 运行 命令
无需转义引用!如此简单,快乐编码
我正在尝试配置一个别名,它将给我一个 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 到 运行 命令
无需转义引用!如此简单,快乐编码