linux - 如何在引号内使用 sed 中的引号?

标签 linux bash sed alias quotes

我怎么得到这个

ls -1 | sed 's/\(.*\)/alias \1 "shot \1"/'

变成别名?

例子:

alias asdf "ls -1 | sed 's/\(.*\)/alias \1 "shot \1"/'"

问题是当我找到别名的引号时。

最佳答案

不要使用别名,使用函数:

my_func() {
  ls -1 | sed 's/.*/alias & "shot &"/'
}

但是你应该avoid parsing the output of ls .请阅读链接!

在您的情况下,假设文件名中没有换行符,可以使用 ^0:

my_func() {
  printf '%s\n' * | sed 's/\(.*\)/alias \1 "shot \1"/'
}

^0 这会让您遇到解析 ls 时遇到的相同问题,但不会调用额外的进程,因为 printf 是内置的。

关于linux - 如何在引号内使用 sed 中的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41188475/

相关文章:

python - 如何从终端卸载特定的 python 程序?

bash - Platypus 的替代品(它构建了一个 mac .app,当用户双击它时运行脚本),它在 Linux 上运行?

linux - bash shell 脚本是否保留其命令历史记录?

bash - 使用 sed 或 awk 对输出数据进行分组

bash - 无法让 sed 插入 `\n`

linux - 如何在 Mint 上安装 phpmyadmin

linux - #interrupt-cells 是 2 但中断是一个 3 元组

c++ - 使用 CMake 导入错误编译带有嵌入式 Python 的 C++

mysql - 如何从 bash 提供 mysql 查询

sed - 如果 sed 命令中只有行的第一个字符匹配,则替换值