Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么“cat\”返回提示?_Bash_Unix_Terminal_Sh_Cat - Fatal编程技术网

Bash 为什么“cat\”返回提示?

Bash 为什么“cat\”返回提示?,bash,unix,terminal,sh,cat,Bash,Unix,Terminal,Sh,Cat,在终端中运行cat\时,它会返回换行符和提示 > 在这里,我可以输入要打印的文件名 Echo也会这样做,所以它看起来像是Unix的东西。为什么会发生这种情况,这让我了解了Unix的一般情况 我已经阅读了相应的手册页,但没有看到任何内容。谷歌已经告诉我,由于shell的解释,后面的反斜杠必须被转义,而不是那些shell的解释是什么 这是shell语法。按enter键的换行符前面的\将转义该换行符: 来自man bash: 非引号反斜杠\是转义字符。它保留后面下一个字符的文字值,新行除外。如果出现一

在终端中运行cat\时,它会返回换行符和提示 > 在这里,我可以输入要打印的文件名

Echo也会这样做,所以它看起来像是Unix的东西。为什么会发生这种情况,这让我了解了Unix的一般情况

我已经阅读了相应的手册页,但没有看到任何内容。谷歌已经告诉我,由于shell的解释,后面的反斜杠必须被转义,而不是那些shell的解释是什么

这是shell语法。按enter键的换行符前面的\将转义该换行符:

来自man bash:

非引号反斜杠\是转义字符。它保留后面下一个字符的文字值,新行除外。如果出现一个换行符对,并且反斜杠本身没有被引用,则该换行符将被视为一个换行符,也就是说,它将从输入流中删除并被有效地忽略

或在:

未加引号的反斜杠应保留以下字符的文字值,换行除外。如果在反斜杠后面有换行符,shell应将其解释为换行符。在将输入拆分为令牌之前,应删除反斜杠和换行符。由于转义的换行符完全从输入中删除,并且没有被任何空格替换,因此它不能用作标记分隔符

这意味着输入命令行尚未完成,shell将在下一行中继续读取命令行,并显示>提示

顺便说一句,可以通过PS2环境变量配置>。尝试:

$ PS2='(continue cmdline) ... '
$ cat \
POSIX中还规定了PS2的行为:

PS2 在交互式shell中完成命令行之前,每次用户输入换行符时,该变量的值应进行参数扩展并写入标准错误。默认值为>

这是shell语法。按enter键的换行符前面的\将转义该换行符:

来自man bash:

非引号反斜杠\是转义字符。它保留后面下一个字符的文字值,新行除外。如果出现一个换行符对,并且反斜杠本身没有被引用,则该换行符将被视为一个换行符,也就是说,它将从输入流中删除并被有效地忽略

或在:

未加引号的反斜杠应保留以下字符的文字值,换行除外。如果在反斜杠后面有换行符,shell应将其解释为换行符。在将输入拆分为令牌之前,应删除反斜杠和换行符。由于转义的换行符完全从输入中删除,并且没有被任何空格替换,因此它不能用作标记分隔符

这意味着输入命令行尚未完成,shell将在下一行中继续读取命令行,并显示>提示

顺便说一句,可以通过PS2环境变量配置>。尝试:

$ PS2='(continue cmdline) ... '
$ cat \
POSIX中还规定了PS2的行为:

PS2 在交互式shell中完成命令行之前,每次用户输入换行符时,该变量的值应进行参数扩展并写入标准错误。默认值为>


反斜杠转义后面的字符,在本例中是按return键时插入的换行字符。它允许您将过长的行包装成多行,以提高可读性,例如

echo this is a very long sentence to be\
 printed to your terminal
与相同

echo this is a very long sentence to be printed to your terminal

反斜杠转义后面的字符,在本例中是按return键时插入的换行字符。它允许您将过长的行包装成多行,以提高可读性,例如

echo this is a very long sentence to be\
 printed to your terminal
与相同

echo this is a very long sentence to be printed to your terminal

我正要研究:。。。我很确定线路的延续,但不确定PS2。给我一分钟。哦,我看你找到了:pi@raspberrypi:~$PS2='continue cmdline…'pi@raspberrypi:~$cat\continue cmdline。。。PS2适合我yepok!顺便说一句,可以在这里找到/bin/sh应该在UNIX上提供的与posix兼容的shell命令语言的标准:这是一个很好的完整答案。我们刚刚要研究:。。。我很确定线路的延续,但不确定PS2。给我一分钟。哦,我看你找到了:pi@raspberrypi:~$PS2='continue cmdline…'pi@raspberrypi:~$cat\continue cmdline。。。PS2适合我yepok!顺便说一句,在这里可以找到/bin/sh应该在UNIX上提供的与posix兼容的shell命令语言的标准:这是一个很好的完整答案