find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
打印出我想要的当前目录的目录结构。示例:
.
|-one
|-two
| |-two_2
| |-two_1
|-test_file
但是,当我将其放入别名文件(包含所有别名的文件)时,就像这样:
alias ls_tmp="cd /tmp; find . | sed -e \"s/[^-][^\\/]*\\// |/g\" -e \"s/|\\([^ ]\\)/|-\\1/\""
,正在加载以下sed命令:
// load alias
sprintf(buf, "cat %s|grep \"^alias \"| sed -e \"s/=/ /\" | sed -e \"s/\\\\\\\\//g\"", FILE_NAME);
f = popen(buf, "r");
if (f == NULL) {
fprintf(stderr, "error: failed to init alias commands.\n");
return;
}
,实际上执行的命令实际上是
cd /tmp; find . | sed -e "s/[^-][^/]*// |/g" -e "s/|([^ ])/|-1/"
请注意,尽管我使用//来转义了反斜杠,但所有反斜杠均已删除。
我如何进行这项工作?我对
感到困惑sed -e \"s/=/ /\" | sed -e \"s/\\\\\\\\//g
确实。也许与\\\\有关?