创建以单引号结尾的 bash 别名

Creating a bash alias that ends in single quotation

我有一个命令行字符串:

ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' '

在单行中输出当前文件夹中的文件名,并用引号括起来。

我试图将其添加到我的 .bash_profile 作为别名,但我认为单引号引起了问题,我无法将其添加到工作。

我试过了,但没有成功:

alias='ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' ''

如何为上述内容创建别名?

提前感谢任何可以帮助解决这个菜鸟问题的人,非常感谢您抽出时间:)

干杯,

斯蒂芬。

在这里使用 \"

工作
alias X="ls | sed -e 's/^/\"/g' -e 's/$/\"/g' | tr '\n' ' '"

将整个命令用双引号引起来,命令中的双引号用反斜杠转义:

alias a="ls | sed -e 's/^/\"/g' -e 's/$/\"/g' | tr '\n' ' '"

或使用函数

a() {
    ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' '
}

顺便说一下:解析 ls 是一种不好的做法。使用 glob 和 printf:

会更安全、更容易
printf '"%s" ' *

或者,如果您想正确地引用eval或类似的参数

printf '%q ' *

别名应该将命令行括在 ' 中,并且每个已经存在的 ' 应该使用 '\''

进行转义

试试这个:

alias lsquoted='ls | sed -e '\''s/^/"/g'\'' -e '\''s/$/"/g'\'' | tr '\''\n'\'' '\'' '\'''