POSIX(unix) 控制台中的 $ 和 % 符号
$ and % symbols in POSIX(unix) console
It's my bash script
When I run my script and cat -e output from this script.
% 和 $ 字符是什么意思?
cat -e
将打印 'unprintable characters' 例如换行符
$
在这种情况下表示存在 \n
字符,它是 EOL
(行尾)。
当您在末尾没有换行符的情况下退出流时,%
字符会出现在某些 shell 环境中(您的 tr -d '\n'
的影响)。从技术上讲,它不是输出的一部分,而是在输出呈现到终端后插入的指示器。
即,您可以通过 tr:
将显示输出中的 $
管道返回
$ echo "hello\nhello" | cat -e | tr -d '$'
hello
hello
但是您不能通过执行相同的操作从显示的输出中删除 %:
$ echo "hello\nhello" | tr -d '\n' | cat -e | tr -d '%'
hellohello%
$
和%
是约定俗成的默认提示符号。它们出现在提示的末尾。你的输出最后没有换行符,所以提示出现在行尾。
$
表示派生自 Bourne-shell 的 shell,其中包括 POSIX、Korn 和 Bash shells .这些 shell 在使用用户 ID 为零(通常是 root)登录时使用 #
。
%
表示从c-shell导出的shell,包括csh和tcsh。
所以你是可能运行下c-shell,然后你是运行一个POSIX或者Bourne-shell 脚本(您的 #!
行显示 sh
),因此 bash
标签具有误导性。 可能 因为您可以将提示变量 PS1
设置为您喜欢的任何内容,从而覆盖上述约定。
要查看您 运行 是哪个 shell,只需键入 ps | grep $$
我在你显示的输出中没有看到任何 $
标志,摘自 man cat
:
-e 显示非打印字符(见-v选项),并在每行末尾显示一个美元符号(`$')。
It's my bash script
When I run my script and cat -e output from this script.
% 和 $ 字符是什么意思?
cat -e
将打印 'unprintable characters' 例如换行符
$
在这种情况下表示存在 \n
字符,它是 EOL
(行尾)。
当您在末尾没有换行符的情况下退出流时,%
字符会出现在某些 shell 环境中(您的 tr -d '\n'
的影响)。从技术上讲,它不是输出的一部分,而是在输出呈现到终端后插入的指示器。
即,您可以通过 tr:
将显示输出中的$
管道返回
$ echo "hello\nhello" | cat -e | tr -d '$'
hello
hello
但是您不能通过执行相同的操作从显示的输出中删除 %:
$ echo "hello\nhello" | tr -d '\n' | cat -e | tr -d '%'
hellohello%
$
和%
是约定俗成的默认提示符号。它们出现在提示的末尾。你的输出最后没有换行符,所以提示出现在行尾。
$
表示派生自 Bourne-shell 的 shell,其中包括 POSIX、Korn 和 Bash shells .这些 shell 在使用用户 ID 为零(通常是 root)登录时使用 #
。
%
表示从c-shell导出的shell,包括csh和tcsh。
所以你是可能运行下c-shell,然后你是运行一个POSIX或者Bourne-shell 脚本(您的 #!
行显示 sh
),因此 bash
标签具有误导性。 可能 因为您可以将提示变量 PS1
设置为您喜欢的任何内容,从而覆盖上述约定。
要查看您 运行 是哪个 shell,只需键入 ps | grep $$
我在你显示的输出中没有看到任何 $
标志,摘自 man cat
:
-e 显示非打印字符(见-v选项),并在每行末尾显示一个美元符号(`$')。