带有单引号和双引号的 bash 别名命令
- 2024-10-25 08:42:00
- admin 原创
- 82
问题描述:
我有以下命令:
svn status | awk '$1 =="M"{print $2;}'
我如何用它创建别名?我尝试过:
alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"
解决方案 1:
您只需要正确地逃避它。
alias xxx="svn status | awk '$1 ==\"M\"{print $2;}'"
解决方案 2:
以下是不使用别名即可完成相同操作的代码。将其放入 .bashrc 中的函数中:
xx() {
svn status | awk '$1 =="M"{print $2;}'
}
这样你就不必担心引号是否正确。它使用的语法与你在命令行中使用的语法完全相同。
解决方案 3:
自Bash 2.04以来,除了使用函数或像@ffledgling 那样转义之外,还有第三种(更简单)的方法:使用字符串文字语法(这里有一个很好的答案)。
举例来说,如果您想为这个在线者创建一个别名,它最终将是:
alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'
因此,您只需$
在字符串前面添加并转义单引号。
这会带来shellcheck 警告,您可以放心地使用 将其# shellcheck disable=SC2139
禁用。
解决方案 4:
您可以还原双引号和单引号,以便双引号位于单引号之外。
例如,这不起作用:
alias docker-table='docker ps --format "table {{.ID}} {{.Image}} {{.Status}}"'
但这有效:
alias docker-table="docker ps --format 'table {{.ID}} {{.Image}} {{.Status}}'"
当您检查实际解释的别名时,您会发现内部引号实际上已被转义。
$ alias docker-table
alias docker-table='docker ps --format '\''table {{.ID}} {{.Image}} {{.Status}}'\'''
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD