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

ไพพ์หรือไพพ์ที่มีชื่อเป็นคุณสมบัติของมาตรฐาน POSIX ที่อนุญาตให้กระบวนการแยกกันสื่อสารกันโดยไม่ได้รับการออกแบบให้ทำงานร่วมกันอย่างชัดเจน

5
รับผลลัพธ์ที่มีสีเมื่อใช้ไพพ์จาก grep ถึงน้อย
ฉันใช้ - สีตัวเลือกของ grep มาก แต่ฉันก็ใช้น้อยกว่าเช่นกัน ฉันจะส่งผล grep ไปยังน้อยลงและยังคงรักษาสี (หรือว่าเป็นไปได้?) grep "search-string" -R * --colour | less แก้ไข : ฉันกำลังมองหาวิธีการแก้ปัญหาโดยตรงหรืออะไรก็ตามที่เทียบเท่ากับนี้
246 colors  grep  pipe  less 

6
ฉันจะบันทึกเนื้อหาปัจจุบันของไฟล์ให้น้อยลงได้อย่างไร?
หากฉันได้ไพพ์ผลลัพธ์ของคำสั่งlessแล้วตัดสินใจว่าฉันต้องการบันทึกเนื้อหาลงในไฟล์เป็นไปได้หรือไม่ ฉันได้ลองตั้งเครื่องหมายaที่ท้ายบัฟเฟอร์แล้วกลับไปที่ด้านบนและใช้|aviเพื่อส่งเนื้อหาทั้งหมดไปviแต่ก็ไม่ได้ผล
91 bash  pipe  less 

4
วิธีไพพ์เอาต์พุตคำสั่งไปยังคำสั่งอื่น ๆ ?
ตัวอย่าง: ls | echoไม่พิมพ์อะไรเลย (บรรทัดว่างเปล่า) ฉันคาดหวังให้พิมพ์รายการไฟล์ ls | grep 'foo'ในทางกลับกันทำงานตามที่คาดไว้ (พิมพ์ไฟล์ด้วย 'foo' ในชื่อของพวกเขา) สิ่งที่ฉันทำในสถานการณ์เหล่านี้เป็นสิ่งที่ชอบ: ls | while read OUT; do echo $OUT; doneแต่มันค่อนข้างยุ่งยาก เหตุใดการไพพ์จึงทำงานกับคำสั่งบางอย่าง แต่ไม่ใช่กับคำสั่งอื่น? ฉันจะหลีกเลี่ยงปัญหานี้ได้อย่างไร
83 bash  pipe 

4
ทำไมการไพพ์ 'dd' ผ่าน gzip จึงเร็วกว่าการคัดลอกโดยตรง
ฉันต้องการสำรองเส้นทางจากคอมพิวเตอร์ในเครือข่ายของฉันไปยังคอมพิวเตอร์เครื่องอื่นในเครือข่ายเดียวกันผ่านสาย 100 Mbit / s สำหรับสิ่งนี้ฉันทำ dd if=/local/path of=/remote/path/in/local/network/backup.img ซึ่งให้ความเร็วในการถ่ายโอนข้อมูลผ่านเครือข่ายที่ต่ำมากของฉันประมาณ 50 ถึง 100 kB / s ซึ่งจะคงอยู่ตลอดไป ดังนั้นฉันจึงหยุดมันและตัดสินใจที่จะลอง gzipping มันทันทีเพื่อทำให้มันเล็กลงมากเพื่อที่จำนวนการถ่ายโอนจะน้อยลง ดังนั้นฉันทำ dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz แต่ตอนนี้ฉันได้รับความเร็วการถ่ายโอนเครือข่าย 1 MB / s ดังนั้นปัจจัย 10 ถึง 20 เร็วขึ้น หลังจากสังเกตเห็นสิ่งนี้ฉันทดสอบสิ่งนี้ในหลาย ๆ พา ธ และไฟล์และมันก็เหมือนกันเสมอ เหตุใดการส่งddผ่านท่อจึงgzipเพิ่มอัตราการถ่ายโอนด้วยปัจจัยขนาดใหญ่แทนที่จะลดเพียงความยาวคลื่น bytel ด้วยปัจจัยขนาดใหญ่เท่านั้น ฉันคาดว่าแม้อัตราการถ่ายโอนจะลดลงเล็กน้อยเนื่องจากการใช้ CPU ที่สูงขึ้นในขณะที่บีบอัด แต่ตอนนี้ฉันได้รับการบวกสองครั้ง ไม่ใช่ว่าฉันไม่มีความสุข …
79 backup  performance  dd  pipe  gzip 

7
cURL: จะระงับเอาต์พุตที่แปลกเมื่อเปลี่ยนเส้นทางได้อย่างไร
ฉันพยายามพิมพ์เฉพาะส่วน verbose ของคำร้องขอ cURL (ซึ่งถูกส่งไปstderr) จาก bash shell แต่เมื่อฉันเปลี่ยนเส้นทางstdoutเช่นนี้: curl -v http://somehost/somepage > /dev/null ตารางผลลัพธ์บางประเภทปรากฏขึ้นกลางผลลัพธ์ไปที่stderr: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 ตามมาด้วยสิ่งนี้ใกล้จะจบ: { [data not shown] …

3
อนุรักษ์สีในขณะที่ไปป์ไลน์
ls -l --color=auto | tee output.log ไม่มีท่อ / ทีมันมีสี ฉันจะทำให้มันเป็นสีได้อย่างไรในขณะที่ใช้งานtee(สามารถระบายสีบนหน้าจอได้เท่านั้นฉันไม่สนใจสีในบันทึก)
62 pipe  tee 

5
อัตรา จำกัด ท่อภายใต้ลินุกซ์ได้อย่างไร
มีตัวกรองที่ฉันสามารถใช้เพื่อ จำกัด อัตราของ pip บน linux หรือไม่? ถ้ามีอยู่ให้เรียกว่าขีด จำกัด อัตราฉันต้องการพิมพ์เทอร์มินัลอย่างเช่น cat /dev/urandom | rate-limit 3 -k | foo เพื่อส่งสตรีมแบบสุ่มไบต์ไปยังอินพุตมาตรฐานของ foo ในอัตรา (ต่ำกว่า) 3 kbytes / s
58 linux  pipe 

8
ฉันทามติทั่วไปเกี่ยวกับ“ การใช้แมวที่ไร้ประโยชน์” คืออะไร?
เมื่อฉันไพพ์คำสั่ง unix หลายคำสั่งเช่น grep, sed, tr ฯลฯ ฉันมักจะระบุไฟล์อินพุตที่กำลังถูกประมวลผลโดยใช้ cat cat file | grep ... | awk ... | sed ...ดังนั้นสิ่งที่ต้องการ แต่เมื่อไม่นานมานี้หลังจากมีความคิดเห็นที่เหลืออยู่ในคำตอบของฉันแสดงว่านี่เป็นการใช้แมวที่ไร้ประโยชน์ฉันคิดว่าฉันจะถามคำถามที่นี่ ฉันค้นหาปัญหาและพบบทความของ Wikipedia เกี่ยวกับ UUOCและThe Useless Use of Cat Awardและดูเหมือนว่าสำหรับฉันแล้วข้อโต้แย้งที่ทำนั้นมาจากมุมมองของประสิทธิภาพ คำถามที่ใกล้เคียงที่สุดที่ฉันได้พบที่นี่คือคำถามนี้: การเรียกแมวเป็นเรื่องที่สิ้นเปลืองหรือไม่? - แต่มันไม่ใช่สิ่งที่ฉันถาม ฉันเดาสิ่งที่ค่าย UUOC แนะนำคือการใช้cmd1 args < file | cmd2 args | cmd3 ..หรือถ้าคำสั่งมีตัวเลือกให้อ่านจากไฟล์แล้วส่งผ่านในไฟล์เป็นอาร์กิวเมนต์ แต่สำหรับฉันcat file | cmd1 …
41 command-line  unix  pipe  cat 

7
Bash: สร้าง Fifo นิรนาม
เราทุกคนรู้mkfifoและไปป์ไลน์ คนแรกสร้างไปป์ที่มีชื่อดังนั้นหนึ่งจะต้องเลือกชื่อน่าจะด้วยmktempและในภายหลังจำที่จะยกเลิกการเชื่อมโยง อื่น ๆ สร้างไพพ์ที่ไม่ระบุชื่อไม่ต้องยุ่งยากกับชื่อและการลบ แต่ปลายท่อจะเชื่อมโยงกับคำสั่งในไพพ์ไลน์มันไม่สะดวกเลยที่จะใช้ตัวอธิบายไฟล์และใช้ส่วนที่เหลือ ของสคริปต์ ในโปรแกรมรวบรวมฉันจะทำret=pipe(filedes); ใน Bash มีexec 5<>fileใครคาดหวังอะไรแบบนี้"exec 5<> -"หรือ"pipe <5 >6"มีอะไรแบบนั้นใน Bash?
38 bash  script  pipe 

2
ค้นหากระบวนการที่อยู่อีกปลายหนึ่งของไพพ์
ฉันพยายามติดตามพฤติกรรมแปลก ๆ ของกระบวนการบางอย่างและวิ่งเข้าหาจุดฉันไม่แน่ใจว่าจะติดตามอดีตได้อย่างไร กระบวนการแขวนซึ่งฉันแนบมากับการใช้strace -pแสดงให้เห็นว่านี้: Process 7926 attached - interrupt to quit read(3, โอเคมันกำลังรอการป้อนข้อมูลใน fd 3 ดังนั้นฉันจึงไปตรวจสอบว่ามันคืออะไร: $ ls -l /proc/7926/fd/3 lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922] โอเคดังนั้นมันเป็นท่อ ... ตอนนี้คำถาม - ใครคือผู้เขียนของท่อนี้? ฉันจำได้ว่าบน Linux มีคุณสมบัติพิเศษสำหรับซ็อกเก็ตโดเมน unix ที่คุณสามารถขอเส้นทางไฟล์ที่ขึ้นต้นด้วย NUL byte เพื่อเข้าถึง "abstract socket namespace" (กล่าวถึงที่นี่: http://tkhanson.net/cgit.cgi …
34 linux  pipe 

3
เหตุใด Powershell จึงแปลงอาร์เรย์สตริงด้วยหนึ่งรายการเป็นสตริงอย่างเงียบ ๆ
พิจารณาสคริปต์ Powershell ต่อไปนี้ซึ่งค้นหาโฟลเดอร์ใน C: \ ด้วย 'og' ในชื่อ: PS C: \> (ls |% {$ _. ชื่อ} |? {$ _. ประกอบด้วย ("og")}) PerfLogs ไฟล์โปรแกรม Setup.log ตอนนี้ฉัน จำกัด การค้นหาเพื่อรับรายการเดียว: PS C: \> (ls |% {$ _. ชื่อ} |? {$ _. ประกอบด้วย ("Prog")}) ไฟล์โปรแกรม สิ่งที่แปลกก็คือว่าการดำเนินการครั้งแรกที่อัตราผลตอบแทนถัวอาร์เรย์ในขณะที่การดำเนินงานที่สอง (ซึ่งเป็นความหมาย IMHO ดำเนินการเดียวกันดังนั้นจึงควรให้ผลผลิตชนิดเดียวกันผล) มีผลเป็นสตริง สามารถเห็นได้ในผลลัพธ์ต่อไปนี้: PS C: \> …
33 powershell  pipe 

3
ความคิดเห็นในคำสั่ง bash แบบหลายบรรทัด
ไฟล์สคริปต์ BASH คำสั่งเดียวนี้ยากที่จะเข้าใจดังนั้นฉันต้องการเขียนความคิดเห็นสำหรับการกระทำแต่ละอย่าง: echo 'foo' \ | sed 's/d/a/' \ | sed 's/e/b/' \ | sed 's/f/c/' \ > myfile (sed เป็นเพียงตัวอย่างจริง ๆ แล้วมันเป็นส่วนผสมของ greps และ trs และ awks) ฉันเกลียดที่จะต้องทำซ้ำบรรทัดหรือให้แต่ละข้อคิดเห็นอยู่ห่างจากบรรทัดที่ใช้กับ แต่ในเวลาเดียวกัน BASH ดูเหมือนจะไม่อนุญาตให้แสดงความคิดเห็น "ในบรรทัด" มีวิธีที่สวยงามในการแก้ปัญหานี้หรือไม่?
32 bash  pipe  comments  sh 

1
ไปทางท่อให้น้อยลง แต่ให้เน้นอยู่เสมอ
เป็นไปได้หรือไม่ที่จะใช้ไพพ์เอาท์พุท (เช่นdmesg) ไปยังคำสั่งเช่นless(หรือเทียบเท่า) และใช้ไฮไลต์ข้อความที่ใช้โดยคำสั่งดั้งเดิม? ตัวอย่าง: ด้านซ้ายด้านdmesg | lessขวาdmesg

3
ท่อ Howto: cp | tar | gzip โดยไม่ต้องสร้างไฟล์ตัวกลาง?
ใครสามารถบอกฉันว่าเป็นไปได้ที่จะไปป์ | สิ่งนี้โดยไม่ต้องสร้างไฟล์ที่มีอยู่จริงระหว่าง A ถึง B.tar.gz? นี่คือสิ่งที่ฉันพยายามทำ: ไฟล์ A เปลี่ยนชื่อ A เป็น B น้ำมันดิน gzip -9 B.tar.gz ตัวอย่างเช่น: cp A B | tar cvf - B | gzip -9 B.tar.gz
31 gzip  pipe  tar 

3
ท่อ gunzip และ mysql เพื่อ gunzip การถ่ายโอนข้อมูลและนำเข้ามัน
ฉันมีไฟล์ถ่ายโอน. gz sql (ตัวอย่าง: foo.sql.gz) ที่ฉันต้องการนำเข้าในฐานข้อมูลของฉันด้วยคำสั่ง mysql แบบคลาสสิก gunzip -c foo.sql.gz > foo.sql mysql -uroot -ppassword foo < foo.sql foo เป็นฐานข้อมูล ฉันจะไพพ์คำสั่งทั้งสองนี้ในคำสั่งเดียวได้อย่างไร พยายาม gunzip -c foo.sql.gz | mysql -uroot -ppassword foo แต่ดูเหมือนจะไม่ทำงาน ฉันเข้าใจgzip: stdout: Broken pipe
27 mysql  pipe  dump  stdout  gunzip 

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