我正在尝试-n
使用echo
命令进行打印。但如果我只是输入echo -n
,它只会发出一个换行符,而不会显示-n
,而是发出一个换行符。
答案1
问题在于echo
将 解释-n
为参数。在默认的 bash 实现中,这意味着(来自help echo
):
-n do not append a newline
有多种方法可以解决这个问题:
通过添加另一个字符,将其变成非选项。例如,使用 告诉
echo
它不要打印换行符-n
,然后使用 告诉它解释反斜杠转义符-e
并明确添加换行符。$ echo -ne '-n\n' -n
或者,只需添加一个空格
$ echo " -n" -n
然而,这会增加您可能不想要的空间。
在它前面使用非打印字符。这里。我使用退格键 (
\b
)$ echo -e "\b-n" -n
这还会添加一个您可能不想要的额外字符。
使用诡计
$ echo n- | rev -n
该
rev
命令只是反向打印其输出。-
$ 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