Tôi có một tệp thực thi Linux foođọc đầu vào từ fd 0 và ghi đầu ra vào fd 0 ( không phải fd 1). Điều này chỉ hoạt động tốt để sử dụng tương tác trong thiết bị đầu cuối.
Từ dòng lệnh shell, làm thế nào tôi có thể thực hiện chương trình này sao cho các lần đọc từ fd 0 đến từ một tệp, nhưng ghi vào fd 0 đi vào một tệp khác?
Điều tốt nhất tôi có thể đưa ra là $ goo input.txt output.txt | foonơi goomột số chương trình trợ giúp, nhưng tôi không biết về bất kỳ chương trình helper hiện có, và tôi thậm chí không biết nếu ống được thành lập bởi |là hai chiều.
foo <> /dev/tcp/localhost/1234trong một cửa sổ và trong một cửa sổ nc -l 1234 < input.txt > output.txtkhác dường như làm việc!
LD_PRELOADthư viện để ghi đè write()để write()các cuộc gọi đến FD 0 được đổi thành FD 1.
foodi chuyển ra $PATHvà trình bao bọc thay thế nó, sẽ cho phép có một footrong $PATHđó hoạt động theo cách mà nó nên được viết ở vị trí đầu tiên.