![“”是什么意思?](https://linux22.com/image/163596/%E2%80%9C%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我很难理解重定向,我们如何使用 exec <> 作为 Linux 命令,这意味着什么。你能举个例子并解释一下吗?
答案1
重定向<>
运算符打开由右侧单词给出的文件进行读取和写入。其左侧的文件描述符编号(如果省略该编号,则在大多数 shell 中为 0)将连接到该文件。
例子:
$ echo Hello >file
这会将字符串写入Hello
文件,后跟换行符。
$ { read -r message <&3; printf 'Got "%s"\n' "$message"; echo Good bye >&3; } 3<>file
Got "Hello"
这将打开文件以在文件描述符 3 上进行读取和写入。从文件描述符 3 读取字符串并将其打印到终端。然后一个新的字符串被写入同一个文件描述符。
$ cat file
Hello
Good bye
该文件现在包含我们在上一个命令中编写的附加字符串。该字符串被插入到换行符之后,Hello
因为这是我们写入文件时文件指针所在的位置。如果之后文件中有更多数据Hello
,则该Good bye
字符串将覆盖其中的一些数据。
答案2
尝试用 来理解cat
。
您可以cat
像平常一样使用:
cat > somefile
control+d
现在你可以写一些输入,并在输入 结束后重定向与>
操作员一些文件。
现在尝试:
cat <> somefile
cat
正在做和以前一样的事情。
但不会有任何输入一些文件。
现在尝试:
cat <(echo "hello world")> somefile
现在会有一些输入一些文件广泛使用重定向运算符。