为什么文件描述器在 grep 命令之后重定向更改?

问题描述 投票:0回答:1
$exec 3<input.txt
$sleep 60 >&3 &
[1] 32524
$ cd/proc/32534/fd 
$ ls -l
lrwx------. 1 zhangchen zhangchen 64 Sep 24 18:29 0 -> /dev/pts/0
lr-x------. 1 zhangchen zhangchen 64 Sep 24 18:29 1 -> /home/zhangchen/input.txt
lrwx------. 1 zhangchen zhangchen 64 Sep 24 18:29 2 -> /dev/pts/0
lr-x------. 1 zhangchen zhangchen 64 Sep 24 18:29 3 -> /home/zhangchen/input.txt

$grep test_word <&3
test_word
$grep test_word <&3
[nothing output] 

grep 不是用描述器 1 搜索文件吗,为什么 grep 改了文件描述器 3?

linux bash shell grep
1个回答
0
投票

你的问题不明确:你提供了一些命令及其输出,然后提出一个问题,期望读者理解你的意图;我建议如果您花更多时间仔细写下您的问题,您会得到更有用的答案。也就是说,如果我正确理解你的问题,grep 正在使用文件描述符 3,因为你使用

<&3
显式重定向了标准输入。

© www.soinside.com 2019 - 2024. All rights reserved.