我使用this question从字符串中删除换行符,但我在一台主机上遇到了问题。
由于某种原因,/bin/echo -n foo
在该主机上没有打印任何内容。我不知道为什么那个主机表现得很奇怪。 /bin/echo foo
工作正常。它不是终端,因为echo -n foo > /tmp/bar
也没有显示任何内容。
/bin/echo --help
说应该工作:
Usage: /bin/echo [OPTION]... [STRING]...
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
--help display this help and exit
--version output version information and exit
% /bin/echo --version
echo (GNU coreutils) 5.97
什么可能导致这不起作用?在这个bash-shell中会有一些奇怪的缓冲吗?
答案 0 :(得分:1)
根据评论中的信息,似乎/bin/echo -n foo
正在产生预期的输出,但它会被您的下一个shell提示覆盖。 (很可能是你的shell,而不是你的终端设置。)
您可以通过运行
来证明这一点/bin/echo -n foo | wc
应产生此输出:
0 1 3
你也可以试试这个:
/bin/echo -n foo ; sleep 5
这会将你的下一个shell提示延迟5秒,这样你就可以在覆盖之前看到输出。
(你使用的是什么外壳?$PS1
的价值是多少?)