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

7
ส่งผ่านเอาต์พุตของคำสั่งก่อนหน้าไปยังอาร์กิวเมนต์
ฉันคำสั่งที่ส่งออกข้อมูลไปยัง stdout ( command1 -p=aaa -v=bbb -i=4) บรรทัดเอาต์พุตสามารถมีค่าต่อไปนี้: rate (10%) - name: value - 10Kbps ฉันต้องการ grep ผลลัพธ์นั้นเพื่อเก็บ 'rate' (ฉันเดาว่า pipe จะมีประโยชน์ที่นี่) และสุดท้ายฉันต้องการให้อัตรานั้นเป็นค่าของพารามิเตอร์ในคำสั่งที่สอง (สมมุติว่าcommand2 -t=${rate}) ดูเหมือนว่าจะเป็นเรื่องยุ่งยากในด้านของฉัน ฉันต้องการทราบวิธีการใช้ท่อ, grep, sed และอื่น ๆ ที่ดีกว่า ฉันได้ลองชุดค่าผสมจำนวนมากเช่นนั้นมาแล้ว แต่ฉันรู้สึกสับสนกับสิ่งเหล่านี้: $ command1 -p=aaa -v=bbb -i=4 | grep "rate" 2>&1 command2 -t="rate was "${rate}

2
บันทึกเอาต์พุตของเทอร์มินัลทั้งหมดเป็นไฟล์
มีวิธีการบันทึกผลลัพธ์ของเทอร์มินัลทั้งหมดไปยังไฟล์ด้วยคำสั่งหรือไม่? ฉันไม่ได้พูดถึงการเปลี่ยนเส้นทาง command > file.txt ไม่ใช่ประวัติhistory > file.txtฉันต้องการข้อความเทอร์มินัลแบบเต็ม ไม่ได้อยู่กับปุ่มลัด! สิ่งที่ต้องการ terminal_text > file.txt
61 terminal  output 

8
การแปลงเอาต์พุตสีเป็น html
มีเครื่องมือที่ให้ผลลัพธ์เป็นสี: dwdiff -c File1 File2 # word level diff grep --color=always # we all know this guy ... คำถามคือวิธีการแปลงเอาท์พุทสีของโปรแกรมโดยพลการเป็นไฟล์ html สี? รูปแบบเอาต์พุตอื่น ๆ อาจเหมาะสมเช่นกัน (LaTeX น่าจะยอดเยี่ยม) ฉันคิดว่า html นั้นเป็นจุดเริ่มต้นที่ดีเพราะมันง่ายที่จะแปลงเป็นรูปแบบอื่น (สำหรับอยากรู้วิธีเก็บรหัสสีของเทอร์มินัลโปรดทำตามคำตอบ: https://unix.stackexchange.com/a/10832/9689 ... | unbuffer command_with_colours arg1 arg2 | ...เครื่องมือunbufferเป็นส่วนหนึ่งของความคาดหวัง )

3
วิธีการส่งออกข้อความไปยังหน้าจอและไฟล์ภายในเชลล์สคริปต์?
ขณะนี้ฉันมีเชลล์สคริปต์ที่บันทึกข้อความไปยังไฟล์บันทึกเช่นนี้: log_file="/some/dir/log_file.log" echo "some text" >> $log_file do_some_command echo "more text" >> $log_file do_other_command เมื่อเรียกใช้งานสคริปต์นี้ไม่มีผลลัพธ์ไปที่หน้าจอและเนื่องจากฉันกำลังเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน putty ฉันต้องเปิดการเชื่อมต่ออื่นและทำ "tail -f log_file_path.log" เนื่องจากฉันไม่สามารถยุติการทำงานได้ สคริปต์และฉันต้องการที่จะเห็นผลลัพธ์ในเวลาจริง เห็นได้ชัดว่าสิ่งที่ฉันต้องการคือข้อความที่พิมพ์บนหน้าจอและเป็นไฟล์ แต่ฉันต้องการที่จะทำในบรรทัดเดียวไม่ใช่สองบรรทัดหนึ่งในนั้นไม่มีการเปลี่ยนเส้นทางไปยังไฟล์ ทำอย่างไรจึงจะได้สิ่งนี้?

5
ฉันจะเพิ่มบรรทัดใหม่ระหว่างบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร
บันทึกเมลอ่านยากอย่างไม่น่าเชื่อ ฉันจะส่งออกบรรทัดว่างระหว่างแต่ละบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันกำลังพิมพ์บันทึก ด้วยวิธีนี้หลายบรรทัดที่พันกันจะไม่สับสน

3
วิธีการป้องกันเอาท์พุทคอนโซลแบบสุ่มไม่ให้แตกขั้ว?
มีคำถามมากมายเกี่ยวกับ SE cat /dev/urandomที่แสดงวิธีการกู้คืนจากสถานีทำลายโดยมี สำหรับผู้ที่ไม่คุ้นเคยกับปัญหานี้ - นี่คือสิ่งที่เกี่ยวกับ: คุณดำเนินการcat /dev/urandomหรือเทียบเท่า (ตัวอย่างcat binary_file.dat) ขยะถูกพิมพ์ ที่จะโอเค ... ยกเว้น terminal ของคุณยังคงพิมพ์ขยะแม้กระทั่งหลังจากที่คำสั่งเสร็จเรียบร้อยแล้ว! นี่คือภาพหน้าจอของข้อความที่พิมพ์ผิดที่อยู่ในความเป็นจริงเอาต์พุต g ++: ฉันเดาว่าคนที่ถูกต้องเกี่ยวกับข้อผิดพลาด C ++ บางครั้งก็เป็นความลับเกินไป! วิธีการแก้ปัญหาตามปกติคือการเรียกใช้stty sane && resetแม้ว่ามันจะน่ารำคาญที่จะเรียกใช้ทุกครั้งที่เกิดเหตุการณ์นี้ ด้วยเหตุนี้สิ่งที่ฉันต้องการมุ่งเน้นในคำถามนี้คือเหตุผลดั้งเดิมว่าทำไมสิ่งนี้จึงเกิดขึ้นและวิธีป้องกันมิให้เครื่องแตกหลังจากคำสั่งดังกล่าวออก ฉันไม่ได้มองหาวิธีแก้ปัญหาเช่นการส่งคำสั่งที่ละเมิดไปtrหรือxxdเพราะคุณต้องรู้ว่าโปรแกรม / ไฟล์เอาต์พุตไบนารีก่อนที่คุณจะเรียกใช้ / พิมพ์จริงและจำเป็นต้องจดจำทุกครั้งที่คุณส่งออกข้อมูลดังกล่าว . ฉันสังเกตเห็นพฤติกรรมเดียวกันใน URxvt, PuTTY และ Linux frame buffer ดังนั้นฉันไม่คิดว่านี่เป็นปัญหาเฉพาะเทอร์มินัล ผู้ต้องสงสัยหลักของฉันคือการที่เอาท์พุทแบบสุ่มมีบางส่วนหลบหนีรหัส ANSI ที่พลิกเข้ารหัสอักขระ (ในความเป็นจริงถ้าคุณเรียกใช้cat /dev/urandomอีกครั้งโอกาสที่มันจะUnbreakขั้วซึ่งดูเหมือนจะยืนยันทฤษฎีนี้) หากนี่ถูกต้องรหัสหลบหนีนี้คืออะไร มีวิธีมาตรฐานในการปิดการใช้งานหรือไม่

2
การหยุดเอาต์พุตเทอร์มินัล
ฉันมีคำสั่งที่ส่งออกข้อมูลจำนวนมาก (พูด strace กับ syscalls จำนวนมากที่ทำงานสองสามนาที) มีตัวเลือก (เช่น wrapper คำสั่งหรือสิ่งที่คล้ายกัน) ที่จะให้ฉันหยุดการส่งออกของคำสั่ง (เพียงแค่เอาท์พุทบนหน้าจอฉันไม่รังเกียจคำสั่งทำงานในพื้นหลัง) แล้วยกเลิกมันหลังจากที่ฉันใช้ ดูผลลัพธ์ของมัน?

3
วว: เขียนไปยังหลาย ๆ ดิสก์ได้ไหม
ฉันมีรูปแบบที่เหมือนกัน 2 ขนาดเท่ากันและการ์ด SD ยี่ห้อเดียวกัน ฉันต้องการddรูปภาพไป/dev/disk2และไป/dev/disk3ในเวลาเดียวกัน pseudocode sudo dd bs=1m if=/Users/masi/2016-05-10-raspbian-jessie.img of={/dev/disk2,/dev/disk3} คุณสามารถเปลี่ยนddจากอินพุตหนึ่งไปเป็น SDs หลายเอาต์พุตได้อย่างไร
16 files  dd  output 

4
zsh สามารถเข้าถึง stdout ของโปรแกรมที่รันล่าสุดได้หรือไม่
ฉันมักจะใช้findหรือlocateค้นหาเส้นทาง (~) locate foobar.mmpz /home/progo/lmms/projects/foobar.mmpz ขั้นตอนต่อไปคือการเปิดหรือจัดการไฟล์ ในกรณีที่มีความสุขเช่นนี้ฉันสามารถทำสิ่งนี้ได้: (~) ls `!!` ls `locate foobar.mmpz` /home/progo/lmms/projects/foobar.mmpz แต่ไม่มีใครมีความสุขเกินไปเมื่อมีเอาต์พุตจำนวนมากซึ่งบางอันอาจไม่เป็นเส้นทางหรืออย่างอื่น นอกจากนี้คำสั่งที่อาจทำให้สิ้นเปลืองซ้ำแล้วซ้ำอีกนั้นไม่ได้สวยงามเช่นกัน จะมีวิธีใดบ้างที่จะลอง zsh เพื่อเก็บ stdout ไว้ในอาร์เรย์เพื่อจัดการในภายหลัง? ท้ายที่สุดมันเป็นหน้าที่ของเชลล์ในการเปลี่ยนเส้นทางสตรีมไปยังผู้ใช้ ฉันคิดว่ามันสามารถเก็บ N และ N บรรทัดสุดท้ายในตัวแปรเพื่อใช้ในภายหลังได้ทันทีเช่น$?และอื่น ๆ ตกลงดังนั้นนี่คือเย็นสวย: /unix//a/59704/5674 ตอนนี้ฉันกำลังถามเกี่ยวกับความรู้ zsh (และการย้ายรหัสไปยัง zsh) เพื่อจับภาพประเภทนี้หลังจากแต่ละบรรทัดการเรียกใช้
16 terminal  zsh  output 

4
เหตุใดคำสั่ง 'at' นี้จึงไม่พิมพ์ไปยังเอาต์พุตมาตรฐาน
ฉันเป็นสามเณร Linux ญาติ ฉันพยายามที่จะเรียนรู้วิธีการใช้เพื่อที่ฉันสามารถกำหนดการงานที่จะเริ่มต้นในเวลาต่อมาโดยไม่ต้องใช้at sleepฉันได้ดูคำถามก่อนหน้านี้เพื่อขอความช่วยเหลือ คำถามของฉันคือในสคริปต์ทุบตีตัวอย่างต่อไปนี้ที่ฉันสร้างขึ้นทำไม"กำลังรัน"ไม่เคย - เท่าที่ฉันสามารถบอกได้ - พิมพ์ไปยังเอาต์พุตมาตรฐาน (เช่นคอนโซลทุบตีของฉัน) #!/bin/bash echo "Started" at now + 1 minutes <<EOF echo "Running" EOF echo "Finished" ผลลัพธ์ที่ฉันเห็นคือตัวอย่างเช่น: Started warning: commands will be executed using /bin/sh job 3 at Fri Jul 12 17:31:00 2013 Finished พบคำตอบสำหรับคำถามของฉันในคำเตือนหรือไม่ ถ้าเป็นเช่นนั้น/bin/shแตกต่างจากเอาต์พุตมาตรฐานอย่างไร
15 output  at 

3
วิธีการเปลี่ยนเส้นทางการส่งออกของคำสั่งใด ๆ
ฉันพยายามเขียนสคริปต์ง่าย ๆ เพื่อตรวจสอบสถานะเครือข่ายของฉันโดยไม่pingแสดงผลลัพธ์ทั้งหมด: ping -q -c 1 google.com > /dev/null && echo online || echo offline ปัญหาคือเมื่อฉันไม่ได้เชื่อมต่อฉันยังคงได้รับข้อความแสดงข้อผิดพลาดในผลลัพธ์ของฉัน: ping: unknown host google.com offline ฉันจะป้องกันไม่ให้ข้อความแสดงข้อผิดพลาดนี้ออกจากผลลัพธ์ของฉันได้อย่างไร
14 bash  ping  output 

2
สิ่งที่ป้องกันไม่ให้ stdout / stderr จาก interleaving?
ว่าฉันใช้กระบวนการบางอย่าง: #!/usr/bin/env bash foo & bar & baz & wait; ฉันรันสคริปต์ด้านบนดังนี้: foobarbaz | cat เท่าที่ฉันสามารถบอกได้ว่าเมื่อใดก็ตามที่กระบวนการเขียนไปยัง stdout / stderr ผลลัพธ์ของมันจะไม่แทรกสอด - แต่ละบรรทัดของ stdio นั้นดูเหมือนจะเป็นอะตอม มันทำงานอย่างไร ยูทิลิตี้อะไรควบคุมวิธีแต่ละอะตอมเป็นอะตอม
14 shell  osx  stdout  output  stderr 


5
ฉันจะรับสถานะ http ของไซต์ในเชลล์สคริปต์ได้อย่างไร
ฉันคิดว่าขดจะทำงาน ฉันเขียนในสคริปต์: #!/bin/sh function test { res=`curl -I $1 | grep HTTP/1.1 | awk {'print $2'}` if [ $res -ne 200 ] then echo "Error $res on $1" fi } test mysite.com test google.com ปัญหาที่นี่ไม่ว่าฉันจะทำอะไรฉันไม่สามารถหยุดพิมพ์ด้านล่างเพื่อ stdout: % Total % Received % Xferd Average Speed Time Time Time Current ฉันต้องการ cronjob …
13 cron  curl  output 

2
มีวิธีการมิเรอร์เอาท์พุท USB หรือไม่?
ฉันกำลังเขียนโปรแกรมสำหรับโครงการ มันมีไว้สำหรับระบบการอ่านอักษรเบรลล์ที่ฉันมีการเชื่อมต่อจอแสดงผลอักษรเบรลล์ผ่าน USB ที่ควบคุมโดยโปรแกรมที่เรียกว่า brltty หนึ่งในข้อกำหนดสำหรับโครงการนี้คือการมีความสามารถในการเชื่อมต่อมากกว่าหนึ่งจอแสดงผลอักษรเบรลล์แม้ว่าจะอนุญาตให้ใช้จอแสดงผลหลักเท่านั้นที่มีการควบคุมระบบ ฉันคิดว่าวิธีที่ง่ายที่สุดในการทำเช่นนี้คือแทนที่จะต้องส่งคำสั่งไปยังทุก ๆ อินสแตนซ์ของโปรแกรมของฉันฉันสามารถสะท้อนสิ่งที่ส่งออกไปยัง USB หลักไปยังพอร์ต USB แต่ละพอร์ต เป็นไปได้ไหม
12 usb  c  tty  output  mirror 

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