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

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

6
cat line X ถึง line Y ในไฟล์ขนาดใหญ่
ว่าฉันมีแฟ้มข้อความขนาดใหญ่ (> 2GB) และฉันเพียงต้องการที่จะcatสายXไปY(เช่น 57890000-57890010) จากสิ่งที่ฉันเข้าใจฉันสามารถทำสิ่งนี้ได้โดยการไพพ์headไปยังtailหรือ viceversa เช่น head -A /path/to/file | tail -B หรืออีกวิธีหนึ่ง tail -C /path/to/file | head -D ที่A, B, CและDสามารถคำนวณจากจำนวนบรรทัดในไฟล์และXY แต่มีสองปัญหาด้วยวิธีนี้: คุณต้องคำนวณA, B, และCD คำสั่งสามารถpipeต่อบรรทัดอื่น ๆ ได้มากกว่าที่ฉันสนใจในการอ่าน (เช่นถ้าฉันอ่านเพียงไม่กี่บรรทัดที่อยู่ตรงกลางไฟล์ขนาดใหญ่) มีวิธีที่จะให้เชลล์ใช้งานและส่งออกบรรทัดที่ฉันต้องการหรือไม่? (ในขณะที่ให้เท่านั้นXและY)?
132 tail  cat  large-files  head 

8
ฉันจะแสดงเนื้อหาของไฟล์ข้อความในบรรทัดคำสั่งได้อย่างไร
ฉันต้องการแสดงเนื้อหาของไฟล์ข้อความในบรรทัดคำสั่ง ไฟล์นี้มีเพียง 5-6 ตัวอักษร มีวิธีง่ายๆในการทำเช่นนี้หรือไม่?
131 command-line  files  cat 

7
จะฆ่าแมวที่หนีไม่พ้นได้อย่างไร
หลายครั้งที่ฉันรันcatคำสั่งบนไฟล์ที่มีเนื้อหามากถึงสองสามพันบรรทัดโดยไม่ตั้งใจ ฉันพยายามฆ่าcatคำสั่งด้วยCtrl+ CหรือCtrl+ Zแต่ทั้งคู่จะมีผลเฉพาะหลังจากที่แสดงผลลัพธ์ทั้งหมดcatในเทอร์มินัลดังนั้นฉันต้องรอจนกว่าcatจะได้รับการดำเนินการอย่างสมบูรณ์ มีวิธีแก้ปัญหาที่ดีกว่าที่หลีกเลี่ยงการรอ? เพราะบางครั้งไฟล์มีขนาดไม่เกิน 100MB และทำให้เกิดความรำคาญที่จะรอ tcshฉันใช้
128 shell  terminal  kill  cat  tcsh 

8
dd vs cat - dd ยังคงเกี่ยวข้องกันหรือไม่?
ฉันเพิ่งตระหนักว่าเราสามารถใช้งานได้catมากddและเร็วกว่าจริงdd ฉันรู้ว่าddมันมีประโยชน์ในการจัดการกับเทปที่ขนาดของบล็อกมีความสำคัญในความถูกต้องไม่ใช่แค่ประสิทธิภาพ แต่ในวันนี้มีสถานการณ์ที่ddสามารถทำอะไรบางอย่างที่catไม่สามารถ? (ที่นี่ฉันจะคำนึงถึงความแตกต่างด้านประสิทธิภาพที่น้อยกว่า 20% ที่ไม่เกี่ยวข้อง) ตัวอย่างคอนกรีตจะดี!
122 dd  cloning  cat 

7
มันปลอดภัยแค่ไหนที่จะวาง cat ไฟล์ตามอำเภอใจ?
บางครั้งเมื่อฉันcatไฟล์ไบนารีโดยไม่ตั้งใจเทอร์มินัลของฉันก็สับสน ไม่มีอะไรที่รวดเร็วresetไม่สามารถแก้ไขได้ แต่ผู้โจมตีไม่สามารถสร้างไฟล์ตามทฤษฎีซึ่งเมื่อแสดงบนเทอร์มินัลจะสามารถเรียกใช้รหัสโดยอำเภอใจได้หรือไม่? ผ่านช่องโหว่ในเทอร์มินัลอีมูเลเตอร์หรืออย่างอื่น

5
ความแตกต่างระหว่าง“ cat” และ“ cat <”
ผมทำงานผ่านการกวดวิชาและเห็นการใช้งานของทั้งสองและcat myfile.txt cat &lt; myfile.txtมีความแตกต่างระหว่างสองคำสั่งเหล่านี้หรือไม่? ดูเหมือนว่าทั้งคู่จะพิมพ์เนื้อหาของไฟล์ลงในเชลล์
70 cat 

10
มีเครื่องมือที่รวม zcat และ cat อย่างโปร่งใสหรือไม่?
เมื่อจัดการกับไฟล์บันทึกบางไฟล์จะลงท้ายด้วยไฟล์ gzipped ต้องขอบคุณlogrotateและบางไฟล์ไม่ใช่ ดังนั้นเมื่อคุณลองทำสิ่งนี้: $ zcat * คุณท้ายด้วยบรรทัดคำสั่งเช่นzcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gzแล้วด้วย: gzip: xyz.log: not in gzip format มีเครื่องมือที่จะใช้เวทย์มนตร์ไบต์คล้ายกับวิธีการfileทำงานและใช้zcatหรือcatขึ้นอยู่กับผลลัพธ์เพื่อให้ฉันสามารถท่อส่งออกไปgrepเป็นตัวอย่าง? NB: ฉันรู้ว่าฉันสามารถเขียนสคริปต์ได้ แต่ฉันกำลังถามว่ามีเครื่องมือที่มีอยู่แล้ว

6
มีคำสั่งง่ายๆสำหรับการแสดงผลคอลัมน์ที่คั่นด้วยแท็บหรือไม่
เช่นฉันมีไฟล์ (ผลิตด้วยecho -e "var1\tvar2\t\var3\tvar4" &gt; foo) ที่ส่งออกเป็น: $ cat foo case elems meshing nlsys uniform 2350 0.076662 2.78 non-conformal 348 0.013332 0.55 scale 318 0.013333 0.44 smarter 504 0.016666 0.64 submodel 360 .009999 0.40 unstruct-quad 640 0.019999 0.80 unstruct-tri 1484 0.01 0.88 ฉันต้องการผลลัพธ์เช่นนี้ (ที่นี่ฉันใช้vimและ:set tabstop=14): case elems meshing nlsys uniform …

5
ด้วยคำสั่ง Linux“ cat” ฉันจะแสดงเฉพาะบางบรรทัดตามจำนวนได้อย่างไร
หากฉันใช้cat -n text.txtเพื่อกำหนดหมายเลขบรรทัดโดยอัตโนมัติฉันจะใช้คำสั่งเพื่อแสดงเฉพาะหมายเลขที่กำหนดได้อย่างไร

4
ฉันจะรับคำสั่ง tac บน OS X ได้อย่างไร
ผมชอบที่จะใช้ในการย้อนกลับการส่งออกของtac catอย่างไรก็ตามมันไม่สามารถใช้ได้ในเทอร์มินัล Mavericks ฉันพยายามค้นหาบน MacPorts และไม่สามารถใช้งานได้อีก ใครช่วยกรุณาแสดงให้ฉันเห็นว่าจะได้รับtac? มันมีประโยชน์มากสำหรับการอ่านไฟล์บันทึก
59 osx  cat 

18
เคยมีเหตุผลที่จะใช้ `cat 'เมื่อคุณมี` น้อยลง' หรือไม่?
ฉันเคยใช้catเพื่อดูไฟล์ จากนั้นฉันได้เรียนรู้ว่าlessโดยปกติแล้วจะดีกว่าและเป็นสิ่งที่จำเป็นถ้าไฟล์มีความยาวมากกว่าสองสามแถว คำถามของฉัน: มีเหตุผลที่จะใช้catแทนlessหรือไม่? มีสถานการณ์ใดบ้างที่catทางออกที่ดีกว่า
59 less  cat 

1
เปลี่ยนการอนุญาตของไฟล์ด้วยความช่วยเหลือของแมวของฉัน
root@system:~# less myfile -bash: /bin/less: Input/output error ระบบไฟล์รูทตาย แต่แมวของฉันยังมีชีวิตอยู่ (ในความทรงจำของฉัน): root@system:~# cat &gt; /tmp/somefile C^d root@system:~# เขาเป็นคนขี้เหงา แต่เพื่อน ๆ ของเขาก็จากไปแล้ว: root@system:~# mount -bash: /bin/mount: Input/output error root@system:~# dmesg -bash: /bin/dmesg: Input/output error root@system:~# less -bash: /bin/less: Input/output error root@system:~# chmod -bash: /bin/chmod: Input/output error ระบบยังคงทำงานอยู่และบรรลุตามวัตถุประสงค์ ฉันรู้ว่าฉันรู้ว่าการตอบสนองที่มีเหตุผลเพียงอย่างเดียวของเรื่องนี้คือทำให้ระบบล่มและแทนที่ไดรฟ์ราก น่าเสียดายที่มันไม่ใช่ตัวเลือกเพราะมันต้องใช้เวลาและเงินเป็นจำนวนมาก นอกจากนี้มันจะฆ่าแมวของฉันและนั่นจะทำให้ฉันเศร้า ฉันคิดว่าจะพาเขาไปหาเพื่อนผู้บริจาคของเขา ฉันไม่กล้าลอง …

2
คุณจะใช้การเปลี่ยนเส้นทางผลลัพธ์ร่วมกับ here-เอกสารและ cat ได้อย่างไร
สมมติว่าฉันมีสคริปต์ที่ฉันต้องการไพพ์ไปยังคำสั่งอื่นหรือเปลี่ยนเส้นทางไปยังไฟล์ (ไพพ์shสำหรับตัวอย่าง) สมมติว่าฉันใช้ทุบตี ฉันสามารถทำได้โดยใช้echo: echo "touch somefile echo foo &gt; somefile" | sh ฉันสามารถทำสิ่งเดียวกันได้โดยใช้cat: cat &lt;&lt; EOF touch somefile echo foo &gt; somefile EOF แต่ถ้าฉันแทนที่ "EOF" ด้วย "EOF | sh" แค่คิดว่ามันเป็นส่วนหนึ่งของ heredoc ฉันจะสร้างมันขึ้นมาเพื่อให้catส่งออกข้อความจาก stdin แล้วไปป์ที่ตำแหน่งใด ๆ ?

4
ฉันควรจะดูแลแมวที่ไม่จำเป็นหรือไม่?
ยูทิลิตีบรรทัดคำสั่งจำนวนมากสามารถรับอินพุตได้จากไพพ์หรือเป็นอาร์กิวเมนต์ชื่อไฟล์ สำหรับเชลล์สคริปต์แบบยาวฉันพบว่าการเริ่มต้นลูกโซ่ด้วย a catทำให้อ่านได้ง่ายขึ้นโดยเฉพาะถ้าคำสั่งแรกต้องการอาร์กิวเมนต์หลายบรรทัด เปรียบเทียบ sed s/bla/blaha/ data \ | grep blah \ | grep -n babla และ cat data \ | sed s/bla/blaha/ \ | grep blah \ | grep -n babla วิธีหลังมีประสิทธิภาพน้อยลงหรือไม่ ถ้าเป็นเช่นนั้นความแตกต่างมากพอที่จะใส่ใจว่าสคริปต์รันหรือไม่พูดเป็นวินาทีหรือไม่ ความแตกต่างในการอ่านไม่มาก

6
ฉันจะอ่านทีละบรรทัดจากตัวแปรใน bash ได้อย่างไร
ฉันมีตัวแปรที่มีเอาต์พุตหลายบรรทัดของคำสั่ง วิธีที่มีประสิทธิภาพมากที่สุดในการอ่านบรรทัดเอาต์พุตโดยบรรทัดจากตัวแปรคืออะไร ตัวอย่างเช่น: jobs="$(jobs)" if [ "$jobs" ]; then # read lines from $jobs fi
48 bash  shell  io  cat 

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