有没有根本不解释文本的文本打印应用程序?

有没有根本不解释文本的文本打印应用程序?

是否有任何 Linux 应用程序只打印您提供的任何内容而不进行任何类型的解释?因此,无论我发送给它什么,它总是会准确地输出我发送给它的内容?

echo我想要具有或功能的东西printf,但不解释\和其他所有内容。

这是我想要的应用程序类型:

newcommand "sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" ' > testfile1
cat testfile1
"sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" '

我找不到任何具有此功能的程序。基本上,每个位置参数都按原样输出,包括"'。唯一没有按原样输出的内容是出于|<>明显的原因

好的,这是我想要的更好的例子:

我想要一些可以在命令行和一行中完成的东西,可以使用nanovi并编写一整行文本来实现。

答案1

这些",\是 shell 语法的一部分,它们不是传递给命令的东西,命令不能对它们执行任何操作。

printf %s 'foo " bar' "bar ' baz" > file

命令行是sh语言中的代码(其中空格、、、'字符"具有>特定含义),它不是传递给printf实用程序的行。

shell 将其解释为使用printf,%s作为参数运行,foo " bar并且bar ' baz其标准输出重定向到file

printf看到的只是参数列表,它看不到printf用于使用该参数列表调用它的 shell 代码(或者 python 代码,如果是从 python 而不是 shell 调用的)。printf %s将打印其中的每一个而不做任何解释,这将导致file包含foo " barbar ' baz.

这里你可以使用另一种 shell 语法结构:here-document,这里的 document 分隔符被引用,在这种情况下,不进行任何解释:

cat << 'EOF' > testfile
"sa"" '' " "' ''""d f\sad\ f\sad\ \df\\ h\df\\\\\ sdf\h\sdfh\"" """" ''" " "ds\f\\\\ $%% \\as\ fsa\dg\ \afd\g\ \df\g \\df\g\\\\ n\ \n \\ sa\d \as \t a fsad g"" DF"G ""SD"F"" "DF"SG" """"Ds f"G" 'dsf'g 'sdf" G'ds f'g"SD fG"sd'f'g 'SFD""" '
EOF

对文本的唯一限制是:

  • 除了 with 之外zsh,它不能包含 NUL 字节
  • 它不能包含EOF在自己的行上(如果需要,您可以使用不同的分隔符)
  • 除非文本为空,否则始终会添加尾随换行符。

或者你可以运行:

cat > file

之后,它cat不再是 shell 接受您的用户输入,然后您可以根据需要输入内容并以 结尾Ctrl+D

作为一种黑客,您可以依靠这样一个事实:shell 不会对注释中的文本进行任何解释,并从保存的历史记录中检索命令行并输出#.例如,使用bashshell 交互:

fc -l -0 | cut -d '#' -f3- > testfile #the text here with \ ' "

答案2

它不是特定于 Linux 的应用程序,但是cat当不带参数运行时,它会执行此操作:它将其标准输入复制到其标准输出,而不进行任何更改。

相关内容