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

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

6
วิธีรับทั้ง PIPESTATUS และเอาต์พุตใน bash script
ฉันพยายามรับวันที่แก้ไขล่าสุดของไฟล์ด้วยคำสั่งนี้ TM_LOCAL=`ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }'` TM_LOCAL มีค่าเช่น "2012-05-16 23:18" หลังจากเรียกใช้งานบรรทัดนี้ ฉันต้องการตรวจสอบ PIPESTATUS เพื่อดูว่ามีข้อผิดพลาดหรือไม่ ตัวอย่างเช่นหากไฟล์ไม่มีอยู่lsส่งคืน 2 แต่$?มีค่า 0 เนื่องจากมีค่าส่งคืนawkเป็น ถ้าฉันรันคำสั่งนี้เพียงอย่างเดียวฉันสามารถตรวจสอบค่าส่งคืนของ ls โดยดูที่ ${PIPESTATUS[0]} ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }' แต่$PIPESTATUSไม่ทำงานอย่างที่ฉันคาดไว้ถ้าฉันกำหนดเอาต์พุตให้กับตัวแปรตามตัวอย่างแรก ในกรณีนี้$PIPESTATUSอาร์เรย์มีเพียง 1 องค์ประกอบซึ่งเหมือนกับ$? ดังนั้นคำถามคือฉันจะได้รับทั้งสอง$PIPESTATUSและกำหนดผลลัพธ์ให้ตัวแปรในเวลาเดียวกันได้อย่างไร
9 bash  pipe 

1
เป็นไปได้หรือไม่ที่จะส่งรายชื่อไฟล์ไปยัง RMDIR บน Windows
ฉันกำลังเขียนไฟล์แบตช์สำหรับพรอมต์คำสั่ง Windows เพื่อลบไดเรกทอรีทั้งหมดที่ตรงกับนิพจน์บางอย่าง ฉันก่อนใช้DIRเพื่อกลับรายการธรรมดาของไดเรกทอรีที่ตรงกับการแสดงออก ฉันต้องการไพพ์เอาต์พุตแต่ละบรรทัดลงในคำสั่ง RMDIR เช่นนี้: DIR *.delete /A:D /B /S | RMDIR /S /Q อย่างไรก็ตามคำสั่งข้างต้นดูเหมือนจะไม่ทำงาน ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้และจะขอบคุณทุกคนที่สามารถให้คำอธิบายได้


1
ภาพท่อ ffmpeg ที่ดึงมาจากวิดีโอ
ฉันสามารถใช้คำสั่งต่อไปนี้เพื่อดึงภาพจากวิดีโอโดยใช้ ffmpeg บันทึกไว้ในระบบไฟล์: ... | ffmpeg -i - -f image2 'img-%03d.png' ฉันต้องการไพพ์อิมเมจเหล่านี้ไปยังแอปพลิเคชันอื่นแทนที่จะบันทึกลงในระบบไฟล์ - วิธีที่จะแยกพวกเขาในไพพ์มีความสำคัญเล็กน้อยเนื่องจากมันจะเป็นสคริปต์ NodeJS ที่ฉันควบคุมตัวเอง ต่อไปนี้ใช้ไม่ได้: ... | ffmpeg -i - -f image2 pipe: | ... เกิดข้อผิดพลาดกับ [image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d …
8 linux  video  ffmpeg  pipe 

3
เหตุใดไฟล์ทั้งหมดจึงไม่ถูกบีบอัดและวิธีปรับปรุงโซลูชัน
ฉันมีโฟลเดอร์ที่มีไฟล์ประมาณ 20K ไฟล์จะถูกตั้งชื่อตามรูปแบบเช่นxy_{\d1,5}_{\d4}\.abc xy_12345_1234.abcฉันต้องการบีบอัด 10K แรกของพวกเขาโดยใช้คำสั่งนี้: ls | sort -n -k1.4,1.9 | head -n10000 | xargs tar -czf xy_0_10000.tar.gz อย่างไรก็ตามไฟล์ผลลัพธ์มีไฟล์ประมาณ 2K เท่านั้น ls | sort -n -k1.4,1.9 | head -n10000 | wc -l อย่างไรก็ตามส่งคืน 10,000 ตามที่คาดไว้ ดูเหมือนว่าฉันจะเข้าใจผิดบางสิ่งพื้นฐานที่นี่ ... ฉันใช้ zsh 5.0.2 บน Linux Mint 17.1, GNU tar 1.27.1 แก้ไข: ฟอร์กแนะนำโดย …
8 linux  shell  zsh  tar  pipe 

2
ไพพ์รหัสทางออก grep ออกไป
เมื่อฉันต้องระงับเอาต์พุตบางประเภทเช่น foo | grep -v bar แต่บางครั้ง foo ให้เท่านั้น: bar bar bar... grep จะส่งคืน -1 ฉันจะแปลงรหัสทางออก 1 เป็น 0 ได้อย่างไร
6 grep  pipe  exit 

4
เปลี่ยนเป็น stdout ไหม
ฉันสามารถเข้าถึงเซิร์ฟเวอร์สำรองได้ทางโปรโตคอล rsync (เฉพาะ rsync เท่านั้น) ตอนนี้ฉันต้องการดึงไฟล์จากที่นั่น (ซึ่งคือ. tar.gz) และส่งต่อไปยังคำสั่ง tar โดยตรงโดยไม่ต้องบันทึกไฟล์เก็บถาวรในระบบไฟล์ในเครื่อง เมื่อต้องการเห็นภาพด้วยการเข้าถึง ssh ฉันสามารถ: ssh remote_host cat backup.file.tar.gz | tar xzf - และฉันจะได้รับการสำรองข้อมูลที่ไม่มีการบีบอัดในเครื่องโดยไม่ต้องเก็บ. tar.gz ไว้ในเครื่องของคุณ มันเป็นไปได้ที่จะประสบความสำเร็จเมื่อใช้ rsync?
6 linux  shell  rsync  tar  pipe 

3
คุณจะใช้ PIPESTATUS, tee และ / bin / sh ร่วมกันได้อย่างไร
เมื่อฉันวิ่ง curl | tee test.txt; echo ${PIPESTATUS[0]} ฉันเห็นอย่างถูกต้อง curl: ลอง 'curl --help' หรือ 'curl - คู่มือ' สำหรับข้อมูลเพิ่มเติม 2 แต่เมื่อฉันพยายามเรียกใช้คำสั่งเดียวกันโดยใช้ '/ bin / sh': sh -c "curl | tee test.txt; echo \${PIPESTATUS[0]}" ฉันเข้าใจ curl: ลอง 'curl --help' หรือ 'curl - คู่มือ' สำหรับข้อมูลเพิ่มเติม sh: 1: การเปลี่ยนตัวไม่ดี เราจะแก้Bad substitutionปัญหาได้อย่างไร
6 linux  bash  pipe  exit-code 

2
PHP output piped to 'less' ต้องการ <enter> หลังจากทุกคำสั่ง
การส่งออกไปป์ไลน์ของ PHP ไปยังคำสั่ง 'น้อย' ของ linux จะทำให้ 'น้อย' ลงมือทำจริง ๆ (CentOS 6.2 ไม่ได้เกิดขึ้นกับ CentOS 5) เมื่อฉันไพพ์เอาต์พุตจาก php เป็น 'less' มันต้องenterกดคีย์หลังจากทุกคำสั่งแม้หลังจากคำสั่ง 'j' (คำสั่งเพื่อเลื่อนลงหนึ่งบรรทัด) นอกจากนี้คีย์คำสั่งจะแสดงขึ้นบนหน้าจอและ 'น้อย' จะไม่ล้างหน้าจอ ดังนั้นหลังจากทำงาน: $ php -r 'for ($i=0; $i&lt;300; $i++) { print "$i\n";}' | less จากนั้นพิมพ์j(ซึ่งมักจะเลื่อนลงหนึ่งบรรทัด) ฉันเห็นอักขระ 'j' ปรากฏขึ้นที่ด้านล่างของหน้าจอหลังจากอักขระ ':' การกดenterทำให้น้อยลงจนในที่สุด "รับ" คำสั่ง j และมันจะเลื่อนแน่นอน แต่ตอนนี้ฉันเห็น ": …
5 pipe  less  php-cli 

2
ฉันจะเก็บเน้นการจับคู่ของ grep ได้อย่างไรเมื่อทำการ piping ไปที่ grep
หากฉันเรียกใช้grep foo bar.txtgrep จะเน้นการ "foo" ในbar.txtแต่ละครั้ง แต่บางครั้งฉันต้องการใช้findเพื่อตรวจสอบว่าไฟล์ grep ค้นหา ดังนั้นฉันจะทำสิ่งนี้: find . -iname "*.abc" | xargs grep foo หรือสิ่งนี้: find . -iname "*.abc" -exec grep foo {} \; ในทั้งสองกรณี grep ค้นหาเหตุการณ์ "foo" ในไฟล์ที่ระบุอย่างถูกต้อง แต่เอาต์พุตไม่มีการเน้นสีใด ๆ ฉันจะใช้findเพื่อเลือกไฟล์สำหรับ grep เพื่อค้นหาโดยไม่ไฮไลต์ได้อย่างไร ฉันใช้ Gnome Terminal 3.4.1.1 บน Ubuntu 12.04 โดยมี bash เป็น shell ของฉัน

1
ไปป์ / ส่งคำสั่งเพื่อประมวลผลการทำงานใน nohup ที่รับอินพุตจาก STDIN
nohup program &amp;ผมมีโปรแกรมที่ผมทำงานใช้ STDINโปรแกรมนี้จะรับข้อมูลจาก มีวิธีการส่งข้อความไปยังSTDINโปรแกรมที่ทำงานผ่านnohupหรือไม่? นี่คือการทำงานของ FreeBSD ที่ทุบตี ฉันต้องการจะดูว่าสิ่งนี้ทำบน linux เช่นกัน
4 pipe  nohup 

2
จัดเรียงไฟล์ด้วย grep
ฉันมีไฟล์เอาต์พุตหลายร้อยไฟล์ซึ่งบางไฟล์มีข้อความแสดงข้อผิดพลาด ให้บอกว่าฉันต้องการใส่ไฟล์ทั้งหมดที่มีสตริง "ERROR_1" โดยอัตโนมัติใน "subfolder_1" และที่เหลือใน "subfolder_2" อันที่สอง สิ่งนี้น่าจะเป็นไปได้โดยการวาง grep สิ่งที่จะเป็นไวยากรณ์ที่มีประโยชน์?
4 bash  grep  sorting  pipe 

2
ใช้ไพพ์ภายในคำสั่ง find exec
ฉันพยายามหาขวดที่มีคลาสฉันเขียนด้านล่างซึ่งดูเหมือนจะไม่ทำงาน ความคิดใด ๆ find -type f -name "*.jar" -exec jar -tvf "{}" \| grep MyClass \; -ls
3 find  pipe  jar 


1
ใช้ pv (1) เพื่อ จำกัด ความเร็ว rsync
ฉันพยายามที่จะใช้pvมากกว่า builtin rsync ของ--bwlimitการ จำกัด แบนด์วิดธ์ของการถ่ายโอน rsync เพราะ--bwlimitถูกนำมาใช้ในทางที่ในที่สุดก็สอดคล้องและเงินโอนของฉันจึงสั้น ๆ ที่วงเงินไม่จริง kicks ใน. นี้เกือบทำงาน แต่ระบบ doesn เลิกอย่างถูกต้อง สำหรับผู้ที่ไม่คุ้นเคยpvคือยูทิลิตีไปป์ -View แต่มันมีความสามารถเล็กน้อยที่รู้จักในการ จำกัด อัตราการส่งข้อมูลผ่านไปป์ แก้ไขเพื่อเพิ่ม: ฉันเชื่อว่าฉันพบปัญหารูทแล้ว โดยปกติกระบวนการในไปป์ไลน์จะหยุดอย่างใดอย่างหนึ่งเนื่องจาก a) stdin ปิดหรือ b) ได้รับ SIGPIPE ขณะที่เขียนไปยัง stdout สิ่งเหล่านี้ไม่ได้เกิดขึ้นเนื่องจากก) rsync ไม่เคยปิดซ็อกเก็ตบน stdin (เห็นได้ชัด) และ b) ไม่เคยพยายามเขียนไปยัง stdout เพราะ rsync หยุดส่งข้อมูลบน stdin ทันทีที่ stdout ปิด สิ่งที่ฉันต้องการก็คือการห่อคำสั่งบางอย่างที่ทำให้ pv …
3 linux  unix  rsync  pipe 

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