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

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

2
มีวิธีใดที่จะทำให้ข้อความถูกส่งผ่านไปยังส่วนหัว, หาง, น้อยลง, ฯลฯ เป็นสีหรือไม่?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Super User อพยพ 7 ปีที่ผ่านมา มีวิธีที่จะทำให้ colorization ของข้อความใด ๆ ที่ส่งผ่านท่อ|ไปhead, tail, lessฯลฯ ?

1
วิธีหนีสัญลักษณ์ท่อ ในค้างคาวสคริปต์?
ฉันต้องการ echo commad การใช้งานเช่นนี้ใน batch script ชื่อ command.bat command.bat on|off ฉันไม่สามารถใช้ echo %0 on|off ฉันรู้ว่าฉันสามารถใช้ echo "%0 on|off" แต่มันทำให้คำพูดพร้อม มีวิธีอื่น ๆ ?
26 pipe  echo  batch-file 

2
เหตุใดจึงจำเป็น xargs
สมมติว่าฉันต้องการลบไฟล์ทั้งหมดในไดเรกทอรียกเว้นไฟล์ที่มีชื่อว่า "notes.txt" ฉันจะทำเช่นนี้กับไปป์ไลน์, ls | grep -v "notes.txt" | xargs rm. เหตุใดฉันจึงต้องการ xargs หากเอาต์พุตของไพพ์ที่สองคืออินพุตที่ rm ควรใช้? เพื่อประโยชน์ในการเปรียบเทียบไปป์ไลน์echo "#include <knowledge.h>" | cat > foo.cแทรกข้อความ echoed ลงในไฟล์โดยไม่ต้องใช้ xargs ท่อสองท่อนี้แตกต่างกันอย่างไร?
25 bash  pipe  xargs  coreutils 

5
สัญลักษณ์ท่อ linux“ |” ทำหน้าที่อะไร? [ซ้ำ]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว : ทำความเข้าใจวิธีการส่งอินพุตไปยังไพพ์ใน Bash (4 คำตอบ) ปิดให้บริการใน5 ปีที่ผ่านมา นี่คือคำสั่งที่เรียงลำดับไฟล์ในโฟลเดอร์ตามลำดับย้อนกลับ ls | sort -r อะไร|สัญลักษณ์ในคำสั่งที่ทำอย่างไร สิ่งที่ฉันกำลังมองหาจริงๆที่นี่คือคำอธิบายระดับสูง (เข้าใจง่าย) ของไพพ์สำหรับผู้เริ่มต้นใช้งาน Linux ฉันเห็นคำถามอื่นเกี่ยวกับท่อที่นี่ใน Superuser แต่ไม่มีสิ่งใดที่ทำให้เกิดคำตอบที่อธิบายในแง่ง่าย ๆ ว่าพวกเขาทำอะไรและแตกต่างจากการเปลี่ยนเส้นทางอย่างไร ( >หรือ<สัญลักษณ์)

3
การส่งผ่านสองอาร์กิวเมนต์ไปยังคำสั่งโดยใช้ไพพ์
โดยปกติเราจะต้องผ่านการโต้แย้งเพียงครั้งเดียวเท่านั้น: echo abc | cat echo abc | cat some_file - echo abc | cat - some_file มีวิธีการผ่านสองข้อโต้แย้งหรือไม่? สิ่งที่ต้องการ {echo abc , echo xyz} | cat cat `echo abc` `echo xyz` ฉันสามารถเก็บผลลัพธ์ทั้งสองไว้ในไฟล์ก่อนได้ echo abc > file1 echo xyz > file2 cat file1 file2 แต่ฉันอาจเขียนทับไฟล์โดยไม่ตั้งใจซึ่งไม่เป็นไร นี่จะเป็นสคริปต์แบบไม่โต้ตอบ โดยพื้นฐานแล้วฉันต้องการวิธีส่งผลลัพธ์ของคำสั่งสองคำสั่งไปยังcatโดยไม่ต้องเขียนลงไฟล์ อัปเดต: ขออภัยตัวอย่างนี้ปิดบังปัญหา ในขณะที่{ echo …


7
ฉันสามารถใช้ไพพ์เอาท์พุทเป็นอาร์กิวเมนต์เชลล์สคริปต์ได้หรือไม่
สมมติว่าฉันมีสคริปต์เปลือกทุบตีเรียกMyscript.shว่าต้องการอาร์กิวเมนต์หนึ่งตัวเป็นอินพุต แต่ฉันต้องการเนื้อหาของไฟล์ข้อความที่เรียกว่าtext.txtเป็นอาร์กิวเมนต์ ฉันได้ลองแล้ว แต่มันไม่ทำงาน: cat text.txt | ./Myscript.sh มีวิธีทำเช่นนี้หรือไม่?
22 linux  bash  shell  pipe  arguments 

2
ตัวแยกวิเศษระหว่างชื่อไฟล์ในเอาต์พุต ls คืออะไร
ผลลัพธ์ของls(โดยไม่มีข้อโต้แย้ง) ปรากฏขึ้นเพื่อแยกชื่อไฟล์ด้วยการแยกบรรทัด หลักฐาน: ls | grep fooทำงานตามที่คาดไว้โดยให้grepแต่ละชื่อไฟล์เป็นบรรทัดแยกของอินพุต ls > files.txt; vim files.txt -> ใน Vim แต่ละไฟล์อยู่บนบรรทัดแยกต่างหาก และในเทอร์มินัลผลลัพธ์ของการlsวางหลายไฟล์ในหนึ่งบรรทัดโดยแยกชื่อไฟล์ด้วยช่องว่างเพื่อสร้างคอลัมน์ที่จัดเรียงอย่างสวยงาม: $ ls a.txt b.txt c.txt ดังนั้นคำถามของฉันคือ ls ทำเช่นนี้ได้อย่างไร มันใช้อักขระควบคุมพิเศษเพื่อสร้าง 'บรรทัดใหม่' หรือไม่? หรือมันรู้ว่าเมื่อมันถูกไพพ์ไปยังคำสั่งอื่นและจัดรูปแบบเอาท์พุทของมันแตกต่างกันในกรณีนี้?
20 ls  pipe  newlines 

4
ทำไมสิ่งนี้ไม่ทำงาน “ ls * .txt | xargs cat> all.txt” (ไฟล์ทั้งหมดลงในเอกสาร txt เดี่ยว)
ทำไมสิ่งนี้ไม่ทำงาน ls *.txt | xargs cat > all.txt (ฉันต้องการที่จะเข้าร่วมเนื้อหาของไฟล์ข้อความทั้งหมดลงในไฟล์ 'all.txt' ไฟล์เดียว) ค้นหาด้วย -exec ควรใช้งานได้ แต่ฉันอยากจะเข้าใจไวยากรณ์ xargs จริงๆ ขอบคุณ
20 pipe  cat  xargs 

7
ข้อดีของไฟล์ cat'ing และ piping ถึง grep
มีข้อดีเพิ่มเติมของการ cat'ing ไฟล์และ pip ​​ไปยัง grep นอกเหนือจากความสะดวกสบายแล้วหรือยัง? ความสะดวกสบายคือเมื่อฉันดึงคำสั่งเช่นที่ด้านล่างจากประวัติของฉันเคอร์เซอร์อยู่ที่ท้ายบรรทัดดังนั้นจึงง่ายต่อการแก้ไขคำสั่งด้วยข้อความที่แตกต่างเพื่อ grep เทียบกับไฟล์เดียวกัน ดังนั้นข้อดีอื่น ๆ ของการประชุมต่อไปนี้: cat /var/tmp/trace.2043925204.xt | grep -in profile cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main แทน: grep -in profile /var/tmp/trace.2043925204.xt grep -n Profile-Main /var/tmp/trace.2043925204.xt

3
การตั้งค่า pipefail สำหรับคำสั่ง piped เดียว
ฉันต้องการรันคำสั่งเชลล์ piped จำนวนหนึ่งจากสคริปต์ที่ไม่ใช่ BASH (เช่นสคริปต์ PHP) ดังนี้: command1 | command2 | command3 ดังนั้นหากcommand1ล้มเหลวด้วยรหัสออกที่ไม่ใช่ศูนย์คำสั่งอื่น ๆ ก็จะล้มเหลวเช่นกัน จนถึงตอนนี้สิ่งที่ฉันเกิดขึ้นคือ: set -o pipefail && command1 | command2 | command3 แม้ว่ามันจะทำงานได้ดีจากเทอร์มินัล แต่จะสร้างสิ่งนี้หากเรียกใช้งานจากสคริปต์: sh: 1: set: ตัวเลือกที่ผิดกฎหมาย -o pipefail

4
ใน windows ฉันสามารถเปลี่ยนเส้นทาง stdout ไปยังไพพ์ (ชื่อ) ในบรรทัดคำสั่งได้หรือไม่
มีวิธีการเปลี่ยนเส้นทางการส่งออกมาตรฐานของกระบวนการในคอนโซล Win32 ไปป์ที่มีชื่อหรือไม่ ไพพ์เนมนั้นสร้างขึ้นใน Windows และในขณะที่มันเป็นแนวคิดที่มีประโยชน์ฉันไม่เคยเห็นมันมาใช้จากบรรทัดคำสั่ง กล่าวคือ example.exe >\\.\mypipeเช่น (ไวยากรณ์นี้อาจไม่ถูกต้อง แต่คุณได้รับจุด) ฉันต้องการที่จะสามารถเปลี่ยนเส้นทางstdoutและstderrไปยังท่อที่แตกต่างกันในเวลาเดียวกัน ฉันต้องการหลีกเลี่ยงการใช้ไฟล์ทางกายภาพแทนเพื่อหลีกเลี่ยงการจัดการกับความช้าของ IO บัฟเฟอร์ IO การล็อคไฟล์สิทธิ์การเข้าถึงพื้นที่ว่างบนฮาร์ดดิสก์ที่มีอยู่การตัดสินใจเขียนทับการคงอยู่อย่างไม่ตั้งใจ ฯลฯ อีกเหตุผลหนึ่งเป็นเพราะแบบ Windows ชุดของเครื่องมือที่ไม่ได้ออกแบบมารอบ (ข้อความ) ตามปรัชญาไฟล์เท่าในขณะที่ระบบปฏิบัติการยูนิกซ์ นอกจากนี้ชื่อท่อไม่สามารถติดตั้งได้อย่างง่ายดายใน Windows ถ้าเลย ในที่สุดก็มีความอยากรู้อยากเห็นหากแนวคิดที่ดีสามารถนำไปใช้ประโยชน์ได้


3
“ -” (เครื่องหมายขีดกลาง) สุดท้ายมีความหมายอย่างไรในตัวเลือกของ“ ทุบตี”?
ในบทช่วยสอนนี้เราต้องดำเนินการคำสั่งต่อไปนี้: # curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash - สิ่งสุดท้าย-(ยัติภังค์) bashหมายถึงอะไร ฉันเห็นคำสั่งจำนวนมากด้วยสิ่งนี้และไม่สามารถหาคำอธิบายที่สมเหตุสมผลได้และไม่พบวิธีปรับโครงสร้างการค้นหาของ Google มันเป็นเอาต์พุตของคำสั่ง piped หรือไม่?

1
การแสดงผล HTML จากไปป์
ฉันต้องการที่จะสามารถสร้าง HTML จากนั้นไปป์กับโปรแกรมที่จะแสดงมันบางอย่างเช่นนี้: for i in 1 2 3 do for j in a b c do echo "<table border="1"><tr><td>$i</td><td>$j</td></tr></table>" done done | /usr/bin/firefox น่าเสียดายที่ Firefox ไม่สามารถแสดงข้อมูลที่ส่งมาจาก stdin ได้ ไม่สามารถใช้ google-chrome lynxทำได้ แต่ใครต้องการใช้สิ่งนั้น ฉันพยายามสร้างไปป์ที่มีชื่อเปิดใน Chrome และ / หรือ firefox จากนั้นไพพ์ข้อมูลไปยังที่นั้น - แต่เบราว์เซอร์ไม่อัปเดตเมื่อฉันส่งข้อมูลผ่านทางไพพ์ที่มีชื่อ มีเบราว์เซอร์ที่ไม่ใช่ข้อความซึ่งจะแสดงผล html จาก stdin หรือไม่ ผลลัพธ์ไม่จำเป็นต้องมีความหรูหราฉันส่วนใหญ่ให้ความสนใจในการทำข้อมูลที่คั่นได้ง่ายขึ้นทันที แก้ไข: ฉันพยายามใช้การทดแทนกระบวนการของ …
15 html  pipe 

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