Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中转义别名中的单引号_Bash_Escaping_Alias - Fatal编程技术网

在bash中转义别名中的单引号

在bash中转义别名中的单引号,bash,escaping,alias,Bash,Escaping,Alias,我正在尝试在.bashrc文件中设置别名,如下所示: clear && printf '\033[3J' 但以下方法不起作用 alias clall= "clear && printf \'\033[3J\'" alias clall= "clear \&\& printf \'\\033\[3J\'" 关于别名的一般规则是,如果您对如何使用别名(或者别名是否足以满足您的需要)有疑问,应该使用函数。函数为您提供了所有功能(就此而言,功能要多得多

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

clear && printf '\033[3J'
但以下方法不起作用

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

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

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

如果这完全回答了你的问题,请考虑点击答案旁边的复选框来解决问题。