我正在尝试为S3存储桶的名称设置别名,以便在传输文件时不必经常输入它。
在我的.bash_profile中:
alias as3="aws s3"
alias artifacts="s3://dev-artifacts-bucket-name"
alias admin="--profile admin-user"
使用别名的所需命令示例:
as3 cp localFile.txt artifacts/ admin
哪个应该解决:
aws s3 cp localFIle.txt s3://dev-artifacts-bucket-name/ --profile admin-user
其中“admin-user”是我的〜/ .aws / config文件中配置的IAM角色的名称。
相反,我得到了错误:
as3 cp ./upload.sh artifacts/ admin
Unknown options: admin
或当我删除个人资料别名
时as3 cp ./upload.sh artifacts/ --profile admin-user
usage: aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
Error: Invalid argument type
错误消息清楚地显示了第一个别名,因为我收到“aws s3”使用错误,但第二个别名没有被触发。用set -x尝试调试并得到:
as3 cp upload.sh artifacts admin
+ aws s3 cp upload.sh artifacts admin
除非bash检测到递归别名替换并以钝误的方式阻止它,否则我对所发生的事情感到茫然。
FYI:我是一个自称为bash noob的人,要温柔。 (是的,我采购了.bash_profile)
答案 0 :(得分:1)
您在Bash中使用变量混淆alias
。 alias
只能用作命令的开头。
参数可以是变量:
alias as3="aws s3"
artifacts="s3://dev-artifacts-bucket-name"
admin="--profile admin-user"
然后你可以:
as3 cp localFile.txt $artifacts/ $admin
答案 1 :(得分:0)
不是定义几个单独的变量,而是定义一个函数来包装整个命令:
def get_first_element(MyModel):
my_query = your query //may return multiple results
return my_query[:1]
要使用它,请将文件传递给上传作为参数:
upload_as_admin () {
aws s3 cp "$1" s3://dev-artfacts-bucket-name --profile admin-user
}