如何为包含单引号的命令创建别名?
How do I create an alias for a command containing single quotes?
要读取 fitsfile 的 header,我在 bash 中使用此命令:
hexdump -e '"%_ad\t" 80/1 "%_p" "\n"' astlimits.fits | less
这里,fits文件可以从官网下载:
http://das.sdss.org/contents/fits/astlimits.fits
现在我尝试在 BASH 中创建别名,如下所示:
alias fitsheader='hexdump -e \'"%_ad\t" 80/1 "%_p" "\n"\''
但是,它没有用。
正确的语法是什么才能使以下命令起作用:
fitsheader astlimits.fits | less
别为别名烦恼;请改用函数。
fitsheader () {
hexdump -e '"%_ad\t" 80/1 "%_p" "\n"' ""
}
在 Bash(和其他 POSIX 兼容的 shell)中 不支持在单引号字符串中嵌套单引号。
但是,您可以使用 ANSI C-quoted string ($'...'
),其中 '
可以引用(转义)为 \'
。
alias fitsheader=$'hexdump -e \'"%_ad\t" 80/1 "%_p" "\n"\''
请注意,\t
和 \n
将由 $...
,但是,这在这里没有区别;如有疑问,请将原始字符串中的所有 \
个实例加倍。
不过,一般来说,考虑使用一个函数,如 ,因为它避免了引号问题并且是可扩展的。
要读取 fitsfile 的 header,我在 bash 中使用此命令:
hexdump -e '"%_ad\t" 80/1 "%_p" "\n"' astlimits.fits | less
这里,fits文件可以从官网下载:
http://das.sdss.org/contents/fits/astlimits.fits
现在我尝试在 BASH 中创建别名,如下所示:
alias fitsheader='hexdump -e \'"%_ad\t" 80/1 "%_p" "\n"\''
但是,它没有用。
正确的语法是什么才能使以下命令起作用:
fitsheader astlimits.fits | less
别为别名烦恼;请改用函数。
fitsheader () {
hexdump -e '"%_ad\t" 80/1 "%_p" "\n"' ""
}
在 Bash(和其他 POSIX 兼容的 shell)中 不支持在单引号字符串中嵌套单引号。
但是,您可以使用 ANSI C-quoted string ($'...'
),其中 '
可以引用(转义)为 \'
。
alias fitsheader=$'hexdump -e \'"%_ad\t" 80/1 "%_p" "\n"\''
请注意,\t
和 \n
将由 $...
,但是,这在这里没有区别;如有疑问,请将原始字符串中的所有 \
个实例加倍。
不过,一般来说,考虑使用一个函数,如