Bash别名未按预期替换
我试图给S3 bucket的名字加上别名,以避免在传输文件时不断输入它 在我的.bash_配置文件中:Bash别名未按预期替换,bash,Bash,我试图给S3 bucket的名字加上别名,以避免在传输文件时不断输入它 在我的.bash_配置文件中: 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-arti
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是在my~/.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
除非bash检测到递归别名替换并用一个钝错误停止它,否则我对所发生的事情一无所知
仅供参考:我是一个自诩为巴什努伯的人,温柔一点。
是的,我获取了.bash_配置文件您将bash中的别名与变量混淆了。别名只能用作命令的开头
参数可以改为变量:
alias as3="aws s3"
artifacts="s3://dev-artifacts-bucket-name"
admin="--profile admin-user"
然后你可以:
as3 cp localFile.txt $artifacts/ $admin
与其定义几个单独的变量,不如定义一个函数来包装整个命令:
upload_as_admin () {
aws s3 cp "$1" s3://dev-artfacts-bucket-name --profile admin-user
}
要使用它,请将要上载的文件作为参数传递:
upload_as_admin localFile.txt
我将使用as3 cp localFile.txt${artifacts}/${admin}。$admin不能被引用,因为它包含两个用作单独参数的单词。这两个变量都不需要导出,但admin要么不带引号,要么替换为array admin=-profile admin user,后跟as3 cp localFile.txt$artifacts/${admin[@]}。这只能解决这个确切的用例。其目的是能够执行任意操作,如列出、删除和构建可组合的快捷方式。见我对威尔回答的评论。
upload_as_admin localFile.txt