POSIX(unix)控制台中的$和%符号

时间:2018-02-07 10:34:56

标签: bash macos unix posix cat

Maven 3.5 Documentation

It's my bash script

什么是%和$字符?

2 个答案:

答案 0 :(得分:0)

cat -e将打印“不可打印的字符”,例如新行指示符

此实例中的

$表示存在\n字符EOL(行尾)。

当您退出流时,如果最后没有换行符(您的%的效果),tr -d '\n'字符会出现在某些shell环境中。它在技术上不是输出的一部分,而是在将输出呈现给终端后插入的指示符。

即,您可以通过tr:

将其从显示的输出中剥离出来$

$ echo "hello\nhello" | cat -e | tr -d '$' hello hello

但你不能通过做同样的事情从显示的输出中删除%:

$ echo "hello\nhello" | tr -d '\n' | cat -e | tr -d '%' hellohello%

答案 1 :(得分:0)

$%是约定使用的默认提示符号。它们出现在提示的末尾。您的输出最后没有换行符,因此提示符出现在行尾。

$表示从Bourne-shell派生的shell,包括POSIX,Korn和Bash shell。登录时,这些shell使用#,用户ID为零(通常为root)。

%表示从c-shell派生的shell,包括csh和tcsh。

所以你可能在c-shell下运行,然后你正在运行POSIX或Bourne-shell脚本(你的#!行显示sh),所以bash标记具有误导性。 可能因为您可以将提示符PS1设置为您喜欢的任何内容,从而覆盖上述约定。

要查看您正在运行的shell,只需输入ps | grep $$

即可

我在$中显示的输出中没有看到任何man cat个符号:

-e显示非打印字符(请参阅-v选项),并在每行末尾显示美元符号(“$”)。