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

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

1
ฉันจะเรียกใช้คำสั่งในแต่ละไฟล์ภายในไดเรกทอรีที่ตรงกับรูปแบบได้อย่างไร
ฉันพยายามเรียกใช้คำสั่งในทุกไฟล์ภายในไดเรกทอรี (วนซ้ำ) ที่ตรงกับรูปแบบ ฉันต้องการชื่อไฟล์ของแต่ละรายการที่ตรงกับคำสั่งอย่างไรก็ตาม นี่คือสิ่งที่ฉันได้: find . -name '*.jar' นั่นให้ไฟล์ทั้งหมดที่ฉันสนใจตอนนี้ฉันต้องเรียกใช้คำสั่งต่อไปนี้ในทุกไฟล์เหล่านั้น jarsigner -keystore ***** -storepass ****** $FILENAMEHERE ฉันจะอ้างอิงแต่ละไอเท็มในเอาต์พุตของ find สำหรับคำสั่งได้อย่างไร?

3
วิธีการส่งออก grep เป็น scp?
ฉันมีไฟล์โดยที่แต่ละบรรทัดเป็นชื่อไฟล์ เนื้อหาของไฟล์: file1 file2 file3 ... ฉันเรียกใช้grepคำสั่งเพื่อรับชุดย่อยของรายการชื่อไฟล์ ฉันจะป้อนข้อมูลเอาต์พุตของgrepคำสั่งลงในได้scpอย่างไร? ฉันได้เล่นกับxargsและ $()ไม่ประสบความสำเร็จมาก ...
2 unix  grep  scp  pipe  xargs 

3
นับไฟล์ในรายการไดเรกทอรี
ฉันมีไฟล์พร้อมรายการไดเรกทอรีที่ฉันอยากรู้ว่ามีกี่ไฟล์ในแต่ละไดเรกทอรี ... / images / idsuffix / userids / นี่จะให้จำนวนไฟล์และไดเรกทอรีสำหรับ 5 ไดเรกทอรีแรกแทนที่จะเป็นสำหรับแต่ละไดเรกทอรี ค้นหา ./images/00{0..5}/ | ห้องน้ำ สิ่งที่ฉันต้องการคือการนับเนื้อหาสำหรับแต่ละไดเรกทอรี ฉันพยายามส่งผ่าน xargs แต่ทำสิ่งเดียวกันและสร้างการนับสำหรับไดเรกทอรีทั้งหมด ls ./images/ > directories.lst cat directories.lst | xargs -i{} find {} | wc และนี่ไม่ได้สร้างผลลัพธ์ใด ๆ เลย cat directories.lst | xargs -I{} bash -s "find {} | wc"
2 linux  bash  find  pipe 

1
ไปป์ Unix แบบสองทิศทางบน commandline
ฉันสามารถใช้คำสั่ง linux นี้เพื่อเชื่อมต่อ Netcat กับพอร์ตอนุกรม: nc -l 80 <> /dev/ttyS0 ฉันต้องการบันทึกรายการนี้ แผนการสำรองข้อมูลของฉันคือการใช้ Wireshark เพื่อตรวจสอบกระแส netcat แต่โดยปกติแล้วฉันต้องการทำสิ่งนี้: cat /dev/ttyS0 | tee upstream.bin | nc -l 80| tee downstream.bin | /dev/ttyS0 นี่พยายามเปิด ttyS0 สองครั้งดังนั้นจึงเกิดข้อผิดพลาดในการอนุญาต ไม่มีใครรู้วิธีที่ชาญฉลาดในการทำเช่นนี้?

1
บรรทัดคำสั่ง: วิธีจัดการช่องว่างในชื่อไฟล์
ฉันกำลังวัดขนาดไฟล์ทั้งหมดของพวงซึ่งพา ธ ที่ฉันเก็บไว้ในเอกสารข้อความ files.txt ตัวอย่างเนื้อหาของ files.txt: file1.txt file2.txt file3.txt คำสั่ง shell นี้ให้ผลลัพธ์ที่ฉันต้องการ: $ du -hc $(cat files.txt) นอกเสียจากว่าฉันจะมีชื่อไฟล์ที่มีช่องว่างในนั้นเช่น: file 9.txtจากนั้นdu -hcพยายามแยกชื่อไฟล์ที่ช่องว่าง ไม่ว่าฉันจะใส่ใบเสนอราคาไว้ที่ไหนใน files.txt หรือในคำสั่งเชลล์ของฉัน ฉันควรทำอย่างไรดี FYI, เอกสารรายการไฟล์ของฉันเป็นผลลัพธ์ของคำสั่งดังนี้: find ~/Dropbox/ -type f -iname "*.BMP" >> bmpfound.txt รายละเอียดระบบของฉัน: MacOS ใช้ oh-my-zsh ใน Terminal.app

2
ไพพ์เอาต์พุต bash ไปยังอาร์กิวเมนต์ของ perl script
ฉันมีคำสั่ง bash ต่อไปนี้: find repo -name '*.c' สิ่งที่ฉันต้องการจะทำคือใช้ไฟล์ที่ส่งคืนเป็นอาร์กิวเมนต์ของสคริปต์ Perl ของฉันเพื่อให้เทียบเท่ากับการทำงาน: perl ./myscript file1.c file2.c file3.c ... ฉันจะทำสิ่งนี้ได้อย่างไร
2 bash  perl  pipe 

1
echo stdin เว้นแต่ว่าว่างเปล่าซึ่งในกรณีนี้ cat ไฟล์
ไปป์ไลน์ fstdraw in.fst | dot -Tpng | convert - -rotate 90 out.png แปลงไฟล์ในรูปแบบไบนารี่ที่แน่นอนเป็นภาพ PNG น่าเสียดายที่ในบางกรณี fstdraw ปล่อยศูนย์ไบต์ (บั๊กในแพ็คเกจ OpenFst .) จากนั้น dot ปล่อยศูนย์ด้วยไบต์แทน PNG ด้วย convert ล้มเหลวในการสร้าง out.png. ไฟล์ที่หายไปนั้นจะแบ่งคำสั่งในภายหลัง ที่สัญลักษณ์ไพพ์แรกจะมีวิธีแทรกสิ่งที่หมายถึง echo อินพุตของฉัน แต่ถ้าอินพุตของฉันว่างเปล่าให้เอาท์พุทไฟล์ dummy.txt แทน ดังนั้น out.png ถูกสร้างขึ้นเสมอ? (ใคร ๆ ก็สามารถเขียนสคริปต์ แต่แน่นอนว่าบางเชลล์สร้างขึ้นในหรือ เครื่องมือมาตรฐาน ทำสิ่งนี้แล้ว) สิ่งที่ต้องการ fstdraw in.fst | cat_maybe dummy.txt …

2
ปัญหาการสำรองข้อมูล DD Bash -“ ตัวถูกดำเนินการที่ไม่รู้จัก”
ฉันใช้Datto Block Driverเพื่อถ่ายภาพสแนปชอตของเซิร์ฟเวอร์ที่เปิดอยู่ทุกคืน หลังจากที่ถ่ายภาพสแนปชอตฉันจะddถ่ายภาพสแนปชอตจาก/dev/datto0ผ่าน PipeViewer ( pv) และgzipไปยังไฟล์ในระบบไฟล์ ไฟล์จะถูกอัปโหลดไปยัง DropBox และลบ ฉันทำสิ่งนี้โดยอัตโนมัติด้วยสคริปต์ Bash และตั้งให้ทำงานผ่าน cron job ทุกคืน นี่เป็นตัวอย่างของสคริปต์ Bash ของฉันที่ทำให้ฉันมีปัญหา: echo "$(date +"%r"): Calculating MD5 checksum of /dev/datto0..." MD5=$(md5sum /dev/datto0) echo "$(date +"%r"): MD5: $MD5" echo "$(date +"%r"): Compressing /dev/datto0 via gzip to /tmp directory..." dd if=/dev/datto0 | pv | …
1 linux  bash  dd  pipe 

1
เหตุใดการออกหนึ่ง lsof จึงเปิดตัวสองกระบวนการ
ฉันใช้ OS X 10.7 อยู่ในปัจจุบัน บางครั้งฉันต้องการตรวจสอบว่าแอปพลิเคชันใดล็อคไฟล์บางไฟล์ ฉันทำอย่างนั้นโดย lsof | grep $FILENAME lsofผมสังเกตเห็นว่าใช้คำสั่งนี้จะเรียกทั้งสองกรณีของ ทำไมถึงเป็นอย่างนั้น?
1 macos  pipe  lsof 

1
เพิ่มเวลาที่กำหนดเองให้กับเฟรมวิดีโอโดยใช้ ffmpeg
ฉันใช้ ffmpeg เพื่อเข้ารหัสข้อมูลพิกเซลแบบดิบ (bgr32) ลงในไฟล์วิดีโอ กำลังส่งข้อมูลพิกเซลจากแอ็พพลิเคชัน java ไปยัง ffmpeg stdin pipe ฉันกำลังมองหาวิธีเพิ่มการซ้อนทับเวลาลงในแต่ละเฟรมในไฟล์ fideo ที่เข้ารหัส ดูเหมือนว่าจะมีวิธีเพิ่มการประทับเวลาของเวลาปัจจุบัน คำแนะนำสามารถพบได้ที่นี่: http://einar.slaskete.net/2011/09/05/adding-time-stamp-overlay-to-video-stream-using-ffmpeg/ ไฟล์วิดีโอที่ฉันเข้ารหัสถูกจับได้ไม่กี่วันที่ผ่านมาและฉันต้องเพิ่มเวลาที่กำหนดเองให้กับแต่ละเฟรม ตัวอย่างเช่น 12/12/2013 11:11:45 ไม่ใช่เวลาปัจจุบัน เป็นไปได้ไหมที่จะทำสิ่งนี้โดยใช้ ffmpeg? ขอขอบคุณสำหรับความช่วยเหลือของคุณ.

1
ใช้ pdfcrack เพื่อรวมอักขระพิเศษในชุดอักขระ
ฉันพยายามกู้คืนรหัสผ่านจากไฟล์ PDF โดยใช้ pdfcrack ฉันต้องการเปลี่ยนชุดอักขระเพื่อรวมอักขระพิเศษ ฉันสามารถใช้การเปลี่ยนเส้นทางแบบ i / o เพื่อป้อนเนื้อหาของไฟล์ที่คล้ายกันได้ดังนี้: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890! @ # $% ^ & * ( '' / \ || "" เป็นพารามิเตอร์ชุดอักขระหรือไม่ แทนที่จะพยายามที่จะหลบหนีตัวละครพิเศษทั้งหมดอย่างถูกต้องให้เป็นคำสั่งอันยิ่งใหญ่?
grep  pipe  charset 

2
วิธีไพพ์ stdout แบบไบนารีไปยังการเชื่อมต่อ tls ที่บีบอัดได้อย่างไร
เมื่อไม่นานมานี้ฉันสามารถใช้: cat somefile.txt | openssl s_client -connect server:port -quiet -comp อย่างไรก็ตามคำสั่งนี้ใช้งานไม่ได้แม้กับ-ign_eof: $ cat somefile.bmp | openssl s_client -connect server:port -quiet -ign_eof write:errno=32 เพราะ somefile ประกอบด้วยข้อมูลไบนารีบริสุทธิ์(ที่.bmpเป็นรูปแบบเดียวที่ได้รับการยอมรับโดยเซิร์ฟเวอร์และsomefile.bmpจะต้องใช้เวลามากเกินไปที่จะส่งการบีบอัด) ไม่ใช่เพื่อความปลอดภัยเนื่องจากข้อมูลที่ฉันส่งเป็นข้อมูลสาธารณะ แต่ฉันไม่ได้ควบคุมเซิร์ฟเวอร์ที่ไม่อนุญาตการเชื่อมต่อที่ปลอดภัย

1
สตรีมอย่างต่อเนื่องจากไพพ์เปล่าแล้วเพิ่มข้อมูลลงในไพพ์ตามต้องการ
โดยพื้นฐานแล้วสิ่งที่ฉันต้องการทำคือให้ ffmpeg สตรีมไปยังเซิร์ฟเวอร์ RTMP อย่างต่อเนื่องโดยใช้ไพพ์เปล่าจากนั้นเมื่อฉันต้องการสตรีมข้อมูลเพิ่มข้อมูลลงในไพพ์ เหตุผลของฉันในการทำเช่นนี้คือฉันกำลังไพพ์วิดีโอจากแหล่งภายนอก เมื่อใดก็ตามที่วิดีโอสิ้นสุดลง ffmpeg จะหยุดทำงานเนื่องจากไม่ได้รับข้อมูลและฉันต้องเปิดอีกครั้ง เป็นไปได้ไหม ถ้าไม่มีวิธีอื่นรอบนี้หรือไม่ คำสั่งปัจจุบันของฉันคือ: ffmpeg -i pipe:0 -re -c copy -f flv rtmp://mystream.com/key pipe:0เป็นตัวอย่างของytdl
ffmpeg  pipe 

2
ทำไมฉันไม่สามารถเปลี่ยนเส้นทางผลลัพธ์จาก awk ได้
ฉันได้เขียนรายการนี้เพื่อแสดงการอ่าน / เขียน MB ทุก 5 วินาที #!/bin/bash #iosum.sh iostat -dmz 5 |\ awk 'BEGIN{rx=wx=0}{if($0 == ""){printf"%.1f %.1f\n",rx,wx}else if($0~/^Device:/){rx=wx=0}else{rx+=$3;wx+=$4}}' เมื่อทำงานจากบรรทัดคำสั่งมันทำงานได้อย่างสมบูรณ์ ./iosum.sh # wait 1.1 0.0 0.0 0.1 0.0 0.0 3.0 3.0 0.0 0.0 # ctrl-c อย่างไรก็ตามเมื่อฉันพยายามใส่ผลลัพธ์ลงในไฟล์ฉันจะไม่ได้อะไรเลย ./iosum.sh > out.txt # wait # ctrl-c cat out.txt # nothing! สิ่งที่ช่วยให้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.