คำถามติดแท็ก pipe

ไปป์คือการเชื่อมต่อระหว่างกระบวนการระหว่างตัวอธิบายไฟล์ของสองกระบวนการ ไปป์ถูกสร้างขึ้นด้วยฟังก์ชัน POSIX ไปป์ () (จาก <unistd.h>) เชลล์สร้างท่อระหว่างกระบวนการถ้า "|" ใช้สัญลักษณ์: "cmd1 | cmd2" กำหนดเอาต์พุตของ cmd1 ไปยังอินพุตของ cmd2 บน Windows ให้ใช้ CreatePipe () กลไกนี้เปลี่ยนทิศทางอินพุตมาตรฐานเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังกระบวนการเรียกใน. NET และ Java

7
วิธีการเปลี่ยนเส้นทางและผนวกทั้ง stdout และ stderr ไปยังไฟล์ด้วย Bash?
เพื่อเปลี่ยนเส้นทางstdoutไปยังไฟล์ที่ถูกตัดทอนใน Bash ฉันรู้ว่าจะใช้: cmd &gt; file.txt หากต้องการเปลี่ยนเส้นทางstdoutใน Bash ต่อท้ายไฟล์ฉันรู้ที่จะใช้: cmd &gt;&gt; file.txt เพื่อเปลี่ยนเส้นทางทั้งstdoutและstderrไปยังไฟล์ที่ถูกตัดทอนฉันรู้ว่าจะใช้: cmd &amp;&gt; file.txt ฉันจะเปลี่ยนเส้นทางทั้งstdoutและstderrต่อท้ายไฟล์ได้อย่างไร cmd &amp;&gt;&gt; file.txtไม่ได้ผลสำหรับฉัน
1533 linux  bash  redirect  stream  pipe 

11
ฉันจะไปป์ stderr ได้อย่างไรและไม่ใช่ stdout?
ผมมีโปรแกรมที่เขียนข้อมูลไปยังstdoutและstderrและฉันต้องgrepผ่านอะไรมาเพื่อstderrขณะที่ไม่คำนึงถึงstdout แน่นอนฉันสามารถทำได้ใน 2 ขั้นตอน: command &gt; /dev/null 2&gt; temp.file grep 'something' temp.file แต่ฉันต้องการที่จะสามารถทำได้โดยไม่ต้องไฟล์ temp มีเทคนิคการวางท่อแบบอัจฉริยะหรือไม่?
981 bash  grep  stdout  pipe  stderr 

7
เปลี่ยนเส้นทาง Windows cmd stdout และ stderr เป็นไฟล์เดียว
ฉันพยายามเปลี่ยนเส้นทางเอาต์พุตทั้งหมด (stdout + stderr) ของคำสั่งDOSเป็นไฟล์เดียว: C:\&gt;dir 1&gt; a.txt 2&gt; a.txt The process cannot access the file because it is being used by another process. เป็นไปได้หรือฉันควรเปลี่ยนเส้นทางไปยังสองไฟล์แยกกัน


15
ไพพ์เอาต์พุตและสถานะการดักจับใน Bash
ฉันต้องการรันคำสั่งที่รันเป็นเวลานานใน Bash และทั้งคู่ก็จับสถานะทางออกของมันและเอาท์พุทของมันที ดังนั้นฉันทำสิ่งนี้: command | tee out.txt ST=$? ปัญหาคือตัวแปร ST รวบรวมสถานะการออกของteeและไม่ใช่คำสั่ง ฉันจะแก้ปัญหานี้ได้อย่างไร โปรดทราบว่าคำสั่งนั้นใช้เวลานานและการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์เพื่อดูในภายหลังไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับฉัน

6
วิธีการตรวจสอบว่าสคริปต์เปลือกของฉันทำงานผ่านท่อ
ฉันจะตรวจจับจากภายในสคริปต์เชลล์ได้อย่างไรหากเอาต์พุตมาตรฐานกำลังถูกส่งไปยังเทอร์มินัลหรือถ้ามันถูกส่งไปยังกระบวนการอื่น กรณีตรงประเด็น: ฉันต้องการเพิ่มรหัสหลีกเลี่ยงเพื่อกำหนดสีเอาท์พุท แต่เฉพาะเมื่อทำงานแบบโต้ตอบ แต่ไม่ใช่เมื่อมีการไพพ์คล้ายกับสิ่งที่ls --colorทำ
253 bash  shell  pipe 


5
จะไปป์ stdout ขณะที่เก็บไว้บนหน้าจอได้อย่างไร (และไม่ใช่ไฟล์เอาต์พุต)
ฉันต้องการส่งออกมาตรฐานของโปรแกรมในขณะที่เก็บไว้บนหน้าจอ ด้วยตัวอย่างง่ายๆ ( echoใช้ที่นี่เป็นเพียงภาพประกอบเท่านั้น): $ echo 'ee' | foo ee &lt;- ผลลัพธ์ที่ฉันต้องการดู ฉันรู้ว่าทีสามารถคัดลอก stdout ไปยังไฟล์ได้ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ $ echo 'ee' | tee output.txt | foo ฉันพยายาม $ echo 'ee' | tee /dev/stdout | fooแต่มันใช้งานไม่ได้ตั้งแต่เอาท์พุททีไป/dev/stdoutเป็น pipfoo
234 bash  shell  pipe  output  stdout 

15
อ่านค่าลงในตัวแปรเชลล์จากไพพ์
ฉันพยายามรับทุบตีเพื่อประมวลผลข้อมูลจาก stdin ที่ได้รับการประปา แต่ไม่โชคดี สิ่งที่ฉันหมายถึงคือไม่มีงานต่อไปนี้: echo "hello world" | test=($(&lt; /dev/stdin)); echo test=$test test= echo "hello world" | read test; echo test=$test test= echo "hello world" | test=`cat`; echo test=$test test= test=hello worldที่ฉันต้องการที่จะออก ฉันได้ลองใส่เครื่องหมายคำพูดรอบ ๆ"$test"ที่ไม่ได้ผล
205 linux  bash  pipe 

15
วิธีไพพ์รายชื่อไฟล์ที่ส่งคืนโดยคำสั่ง find เพื่อ cat เพื่อดูไฟล์ทั้งหมด
ฉันทำfindแล้วได้รับรายชื่อไฟล์ ฉันจะไพพ์ไปยังยูทิลิตี้อื่นเช่นcat(เพื่อให้ cat แสดงเนื้อหาของไฟล์เหล่านั้นทั้งหมด) และโดยทั่วไปจำเป็นต้องมีgrepบางอย่างจากไฟล์เหล่านี้
204 unix  find  pipe 

2
จะใช้ `jq 'ใน shell shell ได้อย่างไร?
ดูเหมือนว่าฉันจะไม่สามารถjqทำงานได้ "ปกติ" ในไปป์ไลน์เชลล์ ตัวอย่างเช่น: $ curl -s https://api.github.com/users/octocat/repos | jq | cat ผลลัพธ์jqเพียงพิมพ์ข้อความช่วยเหลือของ * สิ่งเดียวกันนี้เกิดขึ้นหากฉันพยายามเปลี่ยนเส้นทางjqผลลัพธ์ไปยังไฟล์: $ curl -s https://api.github.com/users/octocat/repos | jq &gt; /tmp/stuff.json มีjqการประกันตัวโดยจงใจหากพิจารณาว่าไม่ได้เรียกใช้จาก tty หรือไม่? ฉันจะป้องกันพฤติกรรมนี้เพื่อให้สามารถใช้jqในขั้นตอนการทำงานได้อย่างไร * (ฉันรู้ว่าตัวอย่างนี้มีการใช้แมวที่ไร้ประโยชน์มันเป็นเพียงภาพประกอบเท่านั้น)
198 shell  pipe  jq 

11
เหตุใดข้อผิดพลาดของ cURL ส่งคืนข้อผิดพลาด“ (23) เนื้อความการเขียนล้มเหลว”
มันทำงานได้ดีเป็นเครื่องมือเดียว: curl "someURL" curl -o - "someURL" แต่มันไม่ทำงานในขั้นตอน: curl "someURL" | tr -d '\n' curl -o - "someURL" | tr -d '\n' มันกลับมา: (23) Failed writing body ปัญหาในการไพพ์เอาต์พุต cURL คืออะไร วิธีบัฟเฟอร์เอาต์พุต cURL ทั้งหมดจากนั้นจัดการ?
153 macos  bash  curl  osx-lion  pipe 

2
มัลติโพรเซสซิง - ไปป์เทียบกับคิว
อะไรคือความแตกต่างพื้นฐานระหว่างการรอคิวและท่อในแพคเกจ multiprocessing งูใหญ่ ? ในสถานการณ์ใดควรเลือกหนึ่งในอีกสถานการณ์หนึ่ง จะใช้Pipe()เมื่อไร? จะใช้Queue()เมื่อไร?

6
จะเปิดทุกไฟล์ในโฟลเดอร์ได้อย่างไร?
ฉันมี python script parse.py ซึ่งในสคริปต์เปิดไฟล์ให้พูด file1 แล้วทำบางสิ่งบางอย่างอาจพิมพ์จำนวนอักขระทั้งหมด filename = 'file1' f = open(filename, 'r') content = f.read() print filename, len(content) ตอนนี้ฉันกำลังใช้ stdout เพื่อนำผลลัพธ์ไปยังไฟล์เอาต์พุตของฉัน - เอาต์พุต python parse.py &gt;&gt; output อย่างไรก็ตามฉันไม่ต้องการทำไฟล์นี้ด้วยไฟล์เองมีวิธีดูแลไฟล์ทุกไฟล์โดยอัตโนมัติหรือไม่? ชอบ ls | awk '{print}' | python parse.py &gt;&gt; output แล้วปัญหาคือฉันจะอ่านชื่อไฟล์จาก standardin ได้อย่างไร? หรือมีฟังก์ชั่นบิวท์อินบางตัวในการทำ ls และงานเหล่านั้นได้อย่างง่ายดาย? ขอบคุณ!
148 python  file  pipe  stdout  stdin 

9
วิธีหลอกให้แอปพลิเคชันคิดว่า stdout เป็นเทอร์มินัลไม่ใช่ไปป์
ฉันกำลังพยายามทำสิ่งที่ตรงกันข้ามกับ " ตรวจหาว่า stdin เป็นเทอร์มินัลหรือท่อหรือไม่ " ฉันกำลังเรียกใช้แอปพลิเคชันที่เปลี่ยนรูปแบบผลลัพธ์เนื่องจากตรวจพบไพพ์บน STDOUT และฉันต้องการให้คิดว่าเป็นเทอร์มินัลแบบโต้ตอบเพื่อให้ได้ผลลัพธ์เดียวกันเมื่อเปลี่ยนเส้นทาง ฉันคิดว่าการห่อไว้ในexpectสคริปต์หรือใช้proc_open()ใน PHP จะทำ แต่ไม่ได้ มีความคิดเห็นอะไรบ้าง?
147 bash  terminal  pipe  stdin 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.