2016-11-26 39 views
0

我试图建立一个别名,在我的.bashrc文件,如下面:逃逸单引号的别名内部在bash

clear && printf '\033[3J' 

但下面不工作

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

回答

3

一般关于别名的规则是,如果你有关于如何使用它们的问题(或者它们是否足够用于你的目的),你应该使用一个函数。一个函数给你所有的能力(相当多的,对于这个问题),并且不需要任何报价/转义语法:

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'" 
+0

谢谢你这么多 – user2567338

+0

如果这会全面回答您的问题,请考虑点击答案旁边的复选框以标记已解决的问题。 –