如何为包含单引号的命令创建别名?

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 将由 $...,但是,这在这里没有区别;如有疑问,请将原始字符串中的所有 \ 个实例加倍。

不过,一般来说,考虑使用一个函数,如 ,因为它避免了引号问题并且是可扩展的。