问题描述
我正在尝试配置一个别名,该别名将为我提供 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
用单/双引号包裹所有内容不起作用 - alias alias1='aws ec2 describe-instances --filters "Name=tag:tag,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' | sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq'
我想知道我应该把转义字符放在哪里
解决方法
在上述情况下使用别名需要转义很多引号
我最好的建议是使用函数
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 即可运行命令
无需转义报价!如此简单,快乐的编码