1

我注意到 Bash 中关于重定向的奇怪行为,无法解释。当我输入

ls <>一个
当前目录的文件打印到标准输出(Bash shell),文件a被创建并留空。我预计会出现错误,因为没有指定输入文件。当我输入
ls >< 一个
我收到一个错误(意外的令牌'<')。在我看来,如果发生第一件事,这应该尝试使用文件a作为 ls 的输入。这感觉不协调。正在做
ls <>
给我一个错误(意外的令牌'换行')
ls ><
给了我一个不同的错误(意外的令牌'<')

谁能解释这里发生了什么?

4

2 回答 2

2

<>是一个有效的 bash 运算符,而不是连续的<and>运算符。 ><不是有效的运算符,因此它确实被解释为连续的><运算符。检查手册页

重定向运算符

[n]<>word 

导致名称为扩展名的文件在文件描述符或文件描述符(如果未指定)word上打开以进行读写。如果文件不存在,则创建它。n0n

于 2013-01-30T05:52:05.997 回答
1

>< 不是有效的 Bash 内置函数。<> 是,但是。

[fd] <> *word*

它所做的只是导致打开名称是输入扩展的文件,以便在该文件描述符上进行读取和写入。

如果您想了解更多关于它和其他重定向的信息,http://www.gnu.org/software/bash/manual/bashref.html#Redirections是一个很好的来源。

哦,当你点击“enter”时,你会在终端中创建一个换行符,这就是 shell 认为的单词。

于 2013-01-30T06:02:47.773 回答