2016-11-26 66 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

如果這會全面回答您的問題,請考慮點擊答案旁邊的複選框以標記已解決的問題。 –