คำถามติดแท็ก process-substitution

การทดแทนกระบวนการรูปแบบของการสื่อสารระหว่างกระบวนการที่อนุญาตให้อินพุตหรือเอาต์พุตของคำสั่งปรากฏเป็นไฟล์ (เช่น: `<(cmd)` หรือ `> (cmd)`)

3
ไม่สามารถเปิดไฟล์กำหนดค่า '/ dev / fd / 63', ข้อผิดพลาด: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวสำหรับ wpa_supplicant
เมื่อฉันทำสิ่งนี้: sudo wpa_supplicant -D nl80211,wext -i wlp4s0 -c &lt;(wpa_passphrase "some ssid" "password") ฉันเข้าใจ Successfully initialized wpa_supplicant Failed to open config file '/dev/fd/63', error: No such file or directory Failed to read or parse configuration '/dev/fd/63' ความคิดใด ๆ

2
ทำไมฉันถึงสูญเสียข้อมูลโดยใช้การสร้างท่อ bash นี้
ฉันกำลังพยายามรวมโปรแกรมบางโปรแกรมเช่นนั้น (โปรดละเว้นการรวมพิเศษใด ๆ นี่เป็นงานที่กำลังดำเนินการอยู่): pv -q -l -L 1 &lt; input.csv | ./repeat &lt;(nc "host" 1234) แหล่งที่มาของโปรแกรมซ้ำมีลักษณะดังนี้: #include &lt;fcntl.h&gt; #include &lt;stdint.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;sys/epoll.h&gt; #include &lt;sys/stat.h&gt; #include &lt;sys/types.h&gt; #include &lt;unistd.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; inline std::string readline(int fd, const size_t len, const char delim = …

2
ใบสั่งเอาท์พุทที่มีการทดแทนกระบวนการ
นี่คือสิ่งที่ฉันมักจะทำเพื่อเรียกใช้grepและwcบนไฟล์โดยไม่ต้องสแกนสองครั้ง &lt;file.txt tee &gt;(grep LITERAL) &gt;(wc -l) &gt;/dev/null อย่างไรก็ตามอัตราผลตอบแทนนี้ EXEC LITERAL 32 บางครั้งและ 32 EXEC LITERAL ในเวลาอื่น ๆ (เอาต์พุตจากgrepนำหน้าเอาต์พุตจากwcในอินสแตนซ์แรกและกลับกันในวินาที) ในขณะที่มีการเปลี่ยนเส้นทางและอธิบายไฟล์ { { &lt;file.txt tee /dev/fd/3 | grep LITERAL &gt;&amp;4; } 3&gt;&amp;1 | wc -l ;} 4&gt;&amp;1 ฉันมักจะได้รับเสมอ EXEC LITERAL 32 ฉันชอบที่คำสั่งเอาท์พุทสามารถคาดเดาได้ แต่รับประกันด้วยแนวทางที่สองหรือไม่?

2
ทำไมการทดแทนกระบวนการ <() ไม่ทำงานกับ ssh -F
ฉันมีบางเครื่องเสมือนจรจัด เพื่อเข้าสู่พวกเขาฉันออกvagrant sshคำสั่ง ฉันต้องการเข้าสู่ระบบโดยใช้sshคำสั่งปกติ vagrant ssh-configออกผลลัพธ์เป็นไฟล์ config ที่เหมาะสม $ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2201 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/cbliard/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL เมื่อส่งออกการกำหนดค่านี้ในไฟล์และใช้กับssh -Fทุกอย่างทำงานได้ดี: $ vagrant ssh-config &gt; /tmp/config $ ssh -F /tmp/config default =&gt; logged successfully เมื่อใช้ตัวดำเนินการทดแทนกระบวนการ&lt;(cmd)เพื่อป้องกันการสร้างไฟล์กำหนดค่าชั่วคราวมันจะล้มเหลว: $ ssh -F …

1
กระบวนการทดแทนใน GNU Makefiles
ในการพร้อมท์ bash เราสามารถเรียกใช้ diff โดยใช้ไฟล์หลอก: diff &lt;(echo test) &lt;(echo test) การเพิ่มสิ่งนี้ตามที่เป็นลงใน Makefile ล้มเหลว: all: diff &lt;(echo test) &lt;(echo test) ข้อผิดพลาด (คำใบ้: / bin / sh ชี้ไปที่ / bin / bash ในระบบนี้): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff &lt;(echo test) &lt;(echo test)' …

3
การทดแทนกระบวนการครั้งแรกเกิดขึ้นเมื่อใด
ฉันแปลกที่จะรู้ว่านานแค่ไหนทดแทนกระบวนการได้รับรอบ มีเปลือกอะไรก่อน? เมื่อไหร่ที่มันจะถูกเพิ่มเข้าไปในกระสุนอื่น ๆ ?

2
วิธีทุบตีปฏิบัติต่อ“>> ()”
ขณะทำการทดลองกับการเปลี่ยนเส้นทางเอาต์พุตและการทดแทนกระบวนการฉันพบคำสั่งต่อไปนี้และผลลัพธ์ที่ได้: me @ elem: ~ $ echo foo&gt;&gt; (cat); แถบสะท้อนเสียง บาร์ me @ elem: ~ $ foo (ใช่แล้วบรรทัดใหม่ที่ว่างที่สุดจะเป็นเจตนา) ดังนั้นทุบบาร์ของ echo พิมพ์พรอมต์ตามปกติของฉัน, foo ของ echo, ขึ้นบรรทัดใหม่, และปล่อยเคอร์เซอร์ของฉันไว้ที่นั่น หากฉันกด Enter อีกครั้งจะพิมพ์พรอมต์ของฉันในบรรทัดใหม่และปล่อยเคอร์เซอร์ไว้ตาม (ตามที่คาดไว้เมื่อมีคนกด Enter บนบรรทัดคำสั่งว่าง) ฉันคาดหวังว่ามันจะเขียน foo ให้กับ file descriptor cat อ่านมันและ echo's foo แถบ echo echo ที่สองจากนั้นกลับไปที่ command prompt แต่นั่นไม่ใช่กรณีที่ชัดเจน ใครช่วยอธิบายหน่อยได้ว่าเกิดอะไรขึ้น?

3
Dash เทียบเท่ากับการเปลี่ยนเส้นทางของสคริปต์เอาต์พุต
ใน Bash คุณสามารถเปลี่ยนทิศทางเอาต์พุต stdout ในอนาคตทั้งหมดของสคริปต์ที่รันอยู่ในปัจจุบัน ตัวอย่างเช่นกับสคริปต์นี้ exec &gt; &gt;(logger -t my-awesome-script) echo 1 echo 2 echo 3 สิ่งนี้จะจบลงใน syslog: Oct 26 01:03:16 mybox my-awesome-script[72754]: 1 Oct 26 01:03:16 mybox my-awesome-script[72754]: 2 Oct 26 01:03:16 mybox my-awesome-script[72754]: 3 แต่นี่เป็นข้อมูลเฉพาะของ Bash และการดำเนินการเปลือยกายด้วยการเปลี่ยนเส้นทางดูเหมือนจะไม่ทำงานใน Dash Syntax error: redirection unexpected ฉันจะทำให้มันทำงานใน Dash หรืออาจเป็นได้ทั้งใน shells?

1
การทดแทนกระบวนการ bash ด้วยไฟล์ชั่วคราว
บางโปรแกรมต้องการไฟล์ของพวกเขาจะ seekable เช่นobjdumpไม่ $ objdump -D -b binary -m i8086 &lt;(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) objdump: Warning: '/proc/self/fd/11' is not an ordinary file มันจะสะดวกที่จะมีการทดแทนกระบวนการใช้ไฟล์ชั่วคราว ฉันสามารถดูได้ในหน้า man ที่ทุบตีสามารถย้อนกลับไปยังไฟล์ชั่วคราวด้วยการทดแทนกระบวนการ แต่ฉันสามารถขอให้เขาใช้ไฟล์ชั่วคราวได้หรือไม่? เช่นเดียวกับ'szsh=() $ objdump -D -b binary -m i8086 =(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) /tmp/zsh1u1Nrw: file format …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.