【问题标题】:escaping single quotes inside an alias in bash [duplicate]在bash中的别名中转义单引号[重复]
【发布时间】:2016-11-26 01:28:09
【问题描述】:

我正在尝试在我的 .bashrc 文件中设置一个别名,如下所示:

clear && printf '\033[3J'

但以下不起作用

alias clall= "clear && printf \'\033[3J\'"
alias clall= "clear \&\& printf \'\\033\[3J\'"

【问题讨论】:

    标签: bash escaping alias


    【解决方案1】:

    关于别名的一般规则是,如果您对如何使用它们(或者它们是否足以满足您的目的)有疑问,则应该使用函数。函数为您提供了所有功能(就此而言,更多功能),并且不需要任何引用/转义语法:

    clall() { clear && printf '\033[3J'; }
    

    也就是说,指定所需别名的一种方法是使用以下 bash 扩展语法:

    # use $'' to make \' and '' valid/meaningful
    alias clall=$'clear && printf \'\\033[3J\''
    

    ...它使用$'' 允许在单引号内转义单引号(和反斜杠);在正常的'' 引用下,包含的反斜杠是文字。更 POSIX-y 的方法是:

    # use '"'"' to put a literal single-quote inside syntactic single-quotes
    alias clall='clear && printf '"'"'\033[3J'"'"''
    

    ...或者,如果(如此处)双引号内没有任何特殊语法:

    # ...or just use double quotes for the whole thing, absent a reason not to
    # ...using command substitution, paramater expansion, etc. would be such a reason.
    alias clall="clear && printf '\033[3J'"
    

    【讨论】:

    • 如果这完全回答了您的问题,请考虑单击答案旁边的复选框以将问题标记为已解决。
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2011-11-07
    • 2019-03-29
    相关资源
    最近更新 更多