如何打印“-n”而不发出换行符?

如何打印“-n”而不发出换行符?

我正在尝试-n使用echo命令进行打印。但如果我只是输入echo -n,它只会发出一个换行符,而不会显示-n,而是发出一个换行符。

答案1

问题在于echo将 解释-n为参数。在默认的 bash 实现中,这意味着(来自help echo):

  -n  do not append a newline

有多种方法可以解决这个问题:

  1. 通过添加另一个字符,将其变成非选项。例如,使用 告诉echo它不要打印换行符-n,然后使用 告诉它解释反斜杠转义符-e并明确添加换行符。

    $ echo -ne '-n\n'
    -n
    
  2. 或者,只需添加一个空格

    $ echo " -n"
     -n
    

    然而,这会增加您可能不想要的空间。

  3. 在它前面使用非打印字符。这里。我使用退格键 ( \b)

    $ echo -e "\b-n"
    -n
    

    这还会添加一个您可能不想要的额外字符。

  4. 使用诡计

    $ echo n- | rev
    -n
    

    rev命令只是反向打印其输出。

  5. 使用适合这项工作的工具

    $ printf -- '-n\n'
    -n
    

答案2

有时使用正确的工具是个好主意。你可以改用printf

% printf "-n\n"       
-n

答案3

您可以使用此命令,但它会增加额外的空格。

echo -e  "\r-n"

这是一种黑客行为。

-e启用反斜杠命令符号。

\r是回车符。

实际上,任何\有效字符都可以出现在字符串的任何位置。

您可以通过 查看哪些是有效的help echo

echo "-n"不起作用,因为-n用作 的参数echo

附言我认为最好的解决方案是

echo -e "-n\c"

它不添加任何额外的字符

echo -e "-n\n"

打印相同内容但带有新行符。

答案4

你们真是想太多了。

 echo -e \\055n

或者没有尾随换行符

 echo -en \\055n

相关内容