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

cat เป็นยูทิลิตี้ Unix มาตรฐานที่ใช้สำหรับการต่อไฟล์หรือพิมพ์ไฟล์เฉพาะบนเอาต์พุตมาตรฐาน

2
วิธี / ทำไม cat เขียน ISO ที่สามารถบู๊ตได้ไปยังอุปกรณ์
ฉันเพิ่งค้นพบว่าฉันสามารถสร้างคีย์ USB ที่สามารถบู๊ตได้จากไฟล์ ISO เพียงแค่ใช้cat(หรือdd) ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับวิธีการทำงานของมัน ทำไมจะ: cat my.iso > /dev/sdb && sync นำไฟล์นั้นและเขียนไฟล์ทั้งหมดที่มีอยู่ในรูปแบบที่สามารถบู๊ตได้ไปยังอุปกรณ์หรือไม่?
15 cat  iso 


4
dd: ไฟล์อินพุตหลายไฟล์
ฉันต้องต่อชิ้นไฟล์สองไฟล์เข้าด้วยกัน: ถ้าฉันต้องการเชื่อมไฟล์ทั้งหมดเข้าด้วยกันฉันก็ทำได้ cat file1 file2 > output แต่ฉันต้องข้าม 1MB แรกจากไฟล์แรกและฉันต้องการเพียง 10 MB จากไฟล์ที่สอง ddเสียงเหมือนงานสำหรับ dd if=file1 bs=1M count=99 skip=1 of=temp1 dd if=file2 bs=1M count=10 of=temp2 cat temp1 temp2 > final_output มีความเป็นไปได้ที่จะทำเช่นนี้ในขั้นตอนเดียว? คือไม่จำเป็นต้องบันทึกผลลัพธ์ระดับกลางหรือไม่ ฉันสามารถใช้ไฟล์อินพุตหลายไฟล์ได้ddหรือไม่
14 files  dd  cat  data 

2
จะเก็บไฟล์รูปภาพในตัวแปร bash ได้อย่างไร?
หลังจากที่ฉันใช้คำสั่งต่อไปนี้ pngString="$(cat example.png)" echo -n "$pngString" > tmp.png ฉันไม่สามารถเปิด tmp.png เป็นไฟล์ PNG ได้ ข้อมูลบางอย่างอาจหายไปเมื่อฉันใช้$pngStringเพื่อจัดเก็บไฟล์ภาพ ดังนั้นคำถามคือฉันจะเก็บข้อมูลภาพทั้งหมดโดยใช้ตัวแปรในสคริปต์ทุบตีได้อย่างไร
14 bash  cat  images  binary  variable 

1
วิธีการ tail / grep / awk N ไบต์สุดท้ายของไฟล์แทนที่จะเป็นบรรทัด
ฉันมีแอปพลิเคชันที่กำลังบันทึกลงในไฟล์บันทึกข้อความธรรมดา (myapp.log) แต่ดูเหมือนจะไม่ได้เขียนอักขระบรรทัดใหม่ที่ท้ายรายการบันทึกแต่ละรายการ ถ้าฉันรันคำสั่งเหมือนtail -n 50 myapp.logฉันได้รับข้อความ "บรรทัด" หลายร้อยรายการ (รายการบันทึก) ไฟล์บันทึกนี้มีขนาดใหญ่มาก ๆ ประมาณ 1GB ใครจะรู้ว่า CR และ / หรือ LF ที่ผ่านมานานมาแล้วนั้นถูกแทรกเข้าไป ฉันจะคว้าตัวอย่าง 2MB ล่าสุดได้อย่างไร
14 cat  tail 

5
เหตุใด“ cat ttyUSB0” จึงไม่สร้างผลผลิต
ฉันเชื่อมต่อตัวรับสัญญาณอินฟราเรดเข้ากับพอร์ต USB ... (บรรทัดสุดท้ายของ dmesg บอกไฟล์อุปกรณ์) $ dmesg [10496.596063] usb 7-2: new full-speed USB device number 2 using uhci_hcd [10496.751112] usb 7-2: New USB device found, idVendor=0df7, idProduct=0620 [10496.751117] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [10496.751120] usb 7-2: Product: USB-Serial Controller [10496.751124] usb 7-2: Manufacturer: Prolific Technology …
13 files  usb  devices  cat  input 


4
จะใช้คำสั่ง "cat" บนเอาต์พุตของคำสั่ง "find" ได้อย่างไร
ฉันต้องการเปลี่ยนทิศทางเอาต์พุตของfindคำสั่งไปยังcatคำสั่งเพื่อให้ฉันสามารถพิมพ์ข้อมูลของไฟล์ที่กำหนด ดังนั้นสำหรับตัวอย่างเช่นถ้าผลลัพธ์ของการค้นหาเป็นแล้วแมวควรจะตีความว่าเป็น/aFile/readme cat ./aFile/readmeฉันจะทำสิ่งนั้นทันทีได้อย่างไร ฉันต้องใช้ท่อหรือไม่ ฉันลองรุ่นนี้: cat | find ./inhere -size 1033c 2> /dev/null แต่ฉันคิดว่ามันผิดอย่างสิ้นเชิงเหรอ? แน่นอนฉันแน่ใจว่าผลลัพธ์เป็นไฟล์เดียวเท่านั้นและไม่ใช่หลายไฟล์ ดังนั้นฉันจะทำอย่างไร ฉันค้นหาใน Google และไม่พบวิธีแก้ปัญหาอาจเป็นเพราะฉันค้นหาไม่ถูกต้อง: P
13 find  cat 

3
ทำไม“ cat {foo}” ไม่ส่งออก foo แต่“ cat {foo, bar}” ทำเช่นนั้น
ฉันพยายามเชื่อมไฟล์ข้อความในโฟลเดอร์ย่อยและพยายาม: cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var อย่างไรก็ตามสิ่งนี้ไม่ได้ส่งคืนสิ่งใด ดังนั้นลองเพิ่ม 'subfolder2' ที่ไม่มีอยู่ cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var และในครั้งนี้มันได้ผลโดยทำการต่อไฟล์เข้าด้วยกัน ทำไมสิ่งนี้เกิดขึ้น

2
วิธีใช้ `cat` หรือ` less` ขึ้นอยู่กับจำนวนบรรทัด?
เมื่อดูเนื้อหาของไฟล์ฉันต้องการcatย่อไฟล์โดยอัตโนมัติแต่ไฟล์lessที่เกินขนาดหน้าจอ ฉันสามารถใช้บางอย่างกับwc -lแต่มีวิธีที่ดีกว่าที่อาจพิจารณาขนาดหน้าต่าง / จำนวนบรรทัดปัจจุบันใช้ได้หรือไม่
12 less  cat 

2
การเปลี่ยนเส้นทางแมว
สมมติว่าไฟล์ที่เรียกว่าabcมีอยู่ในไดเรกทอรีปัจจุบันและมีข้อความอยู่ในนั้น เมื่อคุณรันคำสั่ง: cat abc > abc ทำไมเนื้อหาของไฟล์ถึงabcหายไป? ทำไมคำสั่งลบข้อความในนั้นและไฟล์จะกลายเป็นไฟล์ว่างเปล่า?

2
ความแตกต่างของประสิทธิภาพระหว่าง stdin และอาร์กิวเมนต์บรรทัดคำสั่ง
สำหรับบางคำสั่งคุณสามารถระบุอินพุตบางตัวเป็น stdin หรืออาร์กิวเมนต์บรรทัดคำสั่ง โดยเฉพาะสมมติว่าcommandสามารถใช้การป้อนข้อมูล stdin และชื่อไฟล์เป็นอาร์กิวเมนต์บรรทัดคำสั่งและcommand < myfile, cat myfile | command และcommand myfileสามารถผลิตผลเดียวกัน ตัวอย่างเช่น, เมื่อคำสั่งคือsed: sed s/day/night/ <myfile >new sed s/day/night/ myfile >new cat myfile | sed s/day/night/ >new เมื่อคำสั่งคือcat: cat < myfile cat myfile ฉันสงสัยว่ามีกฎทั่วไปเกี่ยวกับการแสดงของพวกเขาหรือไม่นั่นคือหนึ่งในนั้นที่มักจะมีประสิทธิภาพมากที่สุดและอย่างน้อยที่สุด? การเปลี่ยนเส้นทางดีกว่าไปป์เสมอหรือไม่

2
ฉันจะพิมพ์เนื้อหาแทนชื่อไฟล์โดยใช้คำสั่ง linux find ได้อย่างไร
ฉันมีหลายพันไฟล์ UNL cbs_cdr_vou_20180624_603_126_239457.unlชื่ออะไรเช่นนี้ ฉันต้องการพิมพ์ทุกบรรทัดจากไฟล์เหล่านั้นโดยใช้คำสั่งต่อไปนี้ แต่มันให้ฉันชื่อไฟล์เท่านั้น ฉันไม่ต้องการชื่อไฟล์ฉันแค่ต้องการเนื้อหาจากไฟล์เหล่านั้น find -type f -name 'cbs_cdr_vou_20180615*.unl' > /home/fifa/cbs/test.txt กระแสไฟขาออก: ./cbs_cdr_vou_20180615_603_129_152023.unl ./cbs_cdr_vou_20180615_603_128_219001.unl ./cbs_cdr_vou_20180615_602_113_215712.unl ./cbs_cdr_vou_20180615_602_120_160466.unl ./cbs_cdr_vou_20180615_603_125_174428.unl ./cbs_cdr_vou_20180615_601_101_152369.unl ./cbs_cdr_vou_20180615_603_133_193306.unl ผลลัพธ์ที่คาดหวัง: 8801865252020|200200|20180613100325|; 8801837463298|200200|20180613111209|; 8801845136955|200200|20180613133708|; 8801845205889|200200|20180613141140|; 8801837612072|200200|20180613141525|; 8801877103875|200200|20180613183008|; 8801877167964|200200|20180613191607|; 8801845437651|200200|20180613200415|; 8801845437651|200200|20180613221625|; 8801839460670|200200|20180613235936|; โปรดทราบว่าสำหรับคำสั่ง cat ฉันได้รับข้อผิดพลาดแบบ-bash: /bin/logger: Argument list too longนั้นเป็นเหตุผลที่ต้องการใช้findแทนcatคำสั่ง
10 linux  find  cat 

1
OS X, bash: ใช้งานได้กับตัวอธิบายไฟล์ที่เปิดน้อยกว่า cat ไม่ทำงาน
ในสคริปต์ทุบตีที่ฉันกำลังทำงาน (ซึ่งต้องทำงานบน Ubuntu และ OS X) ฉันต้องเปลี่ยนเส้นทางเอาต์พุตของคำสั่งหลายร้อยไปยังไฟล์ แทนที่จะเพิ่ม&>...พวกเขาทั้งหมดต่อท้ายฉันก็ทำได้ exec 9>&1 exec 5<>/tmp/some-file.txt exec 1>&5 จนถึงตอนนี้ดีมาก แต่ครึ่งหนึ่งของคำสั่งเหล่านั้นฉันต้องอ่านทุกอย่างที่เขียนไปแล้วในขณะที่เปิดไฟล์ descriptor ไว้ ตอนนี้บน Ubuntu ฉันสามารถทำได้ cat /dev/fd/5 หรือ tee </dev/fd/5 แต่ใน OS X ไม่มีอะไรถูกพิมพ์เลย (และคำสั่งจะออกทันที) อย่างไรก็ตามการใช้lessฉันสามารถดูเนื้อหาของไฟล์ทั้งสอง ฉันสามารถบรรลุผลข้างต้น (ทำงานกับทั้งสองระบบปฏิบัติการ) โดยใช้ less /dev/fd/5 | tee แต่ดูเหมือนว่าแฮ็ค ดังนั้นเหตุใดจึงlessเห็นสิ่งที่catไม่สามารถใช้กับ OS X ได้ (หรือลูกหลาน BSD ทุกคนได้รับผลกระทบหรือไม่) หรือฉันกำลังทำอะไรผิดพลาด?

4
จะแทรกบรรทัดของไฟล์ตั้งแต่สองไฟล์ขึ้นไปได้อย่างไร
ฉันพยายามรับไฟล์ 2 ไฟล์ในไฟล์เดียว ฉันได้ลองคำสั่งด้านล่าง: cat file1 file2 แต่ที่นี่ข้อมูลจะถูกผนวกกับfile2file1 สิ่งที่ฉันต้องการคือfile1บรรทัดที่ 1 ตามด้วยfile2บรรทัดแรกและfile1บรรทัดที่สองตามด้วยfile2บรรทัดที่สองเป็นต้น ใครช่วยบอกฉันได้ว่าจะทำในวิธีที่ง่าย?

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