ฉันจะเปิดไฟล์ข้อความในเทอร์มินัลได้อย่างไร


152

มีไฟล์ชื่อRESULTS.txtและฉันต้องการเปิดไฟล์นี้ในเทอร์มินัลของฉัน (ฉันหมายถึงฉันต้องการที่จะเห็นเนื้อหาของไฟล์ที่จะปรากฏใน terminal และไม่ได้อยู่ในการแก้ไขข้อความบางส่วน)

ฉันจะทำอย่างไร


17
ฉันเห็นผู้อัปโหลด 9 คน แต่จริงๆแล้วนี่เป็นพื้นฐาน คุณลองค้นหาคำตอบออนไลน์หรือไม่
Colton

5
มันเป็นคำถามที่สนุกที่แสดงให้เห็นถึงการตั้งค่าของผู้คนจากง่ายcatเพื่อsedที่จะnanoไปvim
alvas

12
@Sparksis เมื่อฉันค้นหา "เปิดไฟล์ข้อความในเทอร์มินัล" ฉันได้รับผลลัพธ์จากฟอรัม mac สำหรับสิ่งต่าง ๆ เช่น pico ฯลฯ ซึ่งไม่ได้อยู่ใน Ubuntu คำถามแบบนี้ยินดีมากที่นี่
Jorge Castro

1
คุณอาจต้องการดูบทแนะนำเชลล์ Ubuntu เบื้องต้นสำหรับผู้เริ่มต้น - พวกเขาจะอธิบายวิธีการทำสิ่งนี้และสิ่งที่เกี่ยวข้อง
l0b0

5
@Sparksis ใช่มันส่งฉันที่นี่ :)
johnc

คำตอบ:


183

สำหรับไฟล์สั้น ๆ :

cat <path/your_file>

แสดงไฟล์ข้อความในเทอร์มินัลโดยตรง

สำหรับไฟล์ที่ยาวกว่า:

less <path/your_file>

ให้คุณเลื่อนและค้นหา ( / text to search Enter) ในไฟล์; กดqเพื่อออก

เช่น

cat /home/john/RESULTS.txt
less /home/john/RESULTS.txt

1
เมื่อเข้าสู่คำสั่งเหมือนที่cat /home/suhail/RESULT.txtฉันได้รับนี้cat: /home/suhail/RESULT.txt: No such file or directory
Suhail Gupta

เมื่อคุณทำ "ls" ผลที่ได้คืออะไร?
Thomas15v

4
หากคุณอยู่ในโฟลเดอร์เดียวกับไฟล์คุณไม่จำเป็นต้องทำพา ธ แบบเต็ม คุณสามารถทำได้cat RESULT.txt
Shauna

1
@SuhailGupta: อาจมีมากกว่าหนึ่งsuhailไดเรกทอรี /home/suhailเป็นไดเรกทอรีบ้านของคุณ อะไรpwdพิมพ์? นอกจากนี้การเสร็จแท็บยังสะดวกมาก หากคุณพิมพ์cat R<tab>และมีไฟล์เดียวในไดเรกทอรีปัจจุบันที่ชื่อขึ้นต้นด้วยRไฟล์นั้นจะขยายเป็นชื่อของไฟล์นั้น
Keith Thompson

1
โดยวิธี - บน windows คำสั่งคือtype
mowwwalker

33

vimทางเลือกหนึ่งคือ

vim RESULTS.txt

เมื่อคุณเปิดไฟล์ด้วยเสียงเรียกเข้าคุณสามารถแทรกข้อความโดยพิมพ์iเช่น หากคุณต้องการบันทึกการใช้ไฟล์:w(เขียน) หรือ:q(ออก) หรือ:wq(สำหรับเขียนและเลิก) หรือ:q!(ออกและไม่บันทึก) บางครั้งคุณต้องกดESCปุ่มเพื่อให้สามารถพิมพ์คำสั่ง

Vim ต้องการการเรียนรู้บางส่วน แต่มีการใช้กันอย่างแพร่หลายและมีความหลากหลายมาก

ตรวจสอบวิกิช่วยเหลือชุมชน: https://help.ubuntu.com/community/VimHowto

Vim เป็นตัวแก้ไขข้อความขั้นสูงที่ให้พลังของตัวแก้ไข de-facto Unix 'Vi' พร้อมชุดคุณลักษณะที่สมบูรณ์ยิ่งขึ้น เสียงเรียกเข้ามักเรียกว่า "โปรแกรมแก้ไขของโปรแกรมเมอร์" และมีประโยชน์มากสำหรับการเขียนโปรแกรมซึ่งหลายคนคิดว่ามันเป็น IDE ทั้งหมด มันไม่ได้มีไว้สำหรับโปรแกรมเมอร์เท่านั้น Vim เหมาะสำหรับการแก้ไขข้อความทุกประเภทตั้งแต่การสร้างอีเมลไปจนถึงการแก้ไขไฟล์การกำหนดค่า


4
ทางเลือกที่ดียิ่งขึ้นคือการviewเริ่มต้น Vim ในโหมดอ่านอย่างเดียวบน Ubuntu และเนื่องจาก OP ขอให้ดูและไม่ต้องแก้ไข ... -1 แน่นอน ... ฉันจะลบ downvote ในกรณีที่สิ่งนี้ได้รับการแก้ไข
0xC0000022L

8
@ 0xC0000022L :) คุณสามารถเก็บคะแนนโหวตไว้ อย่าลังเลที่จะเพิ่มคำตอบviewถ้าคุณต้องการ Vimมีความสามารถอย่างสมบูรณ์แบบในการแสดงไฟล์และดังนั้นจึงเป็นคำตอบของคำถาม
don.joey

2
ฉันยกระดับความคิดเห็นของคุณก่อน สบายดีกับฉัน แต่เมื่อคุณพูดถึง Vim viewจะเหมาะกับคำตอบของคุณแทนที่จะเป็นคำตอบที่แยกต่างหาก ฉันยังคงคิดว่าและไม่ใช่ในโปรแกรมแก้ไขข้อความบางอันค่อนข้างชัดเจน;)
0xC0000022L

vim -Rมุมมองที่เป็นใบ้สี่นามแฝงอักษร หากคุณไม่ได้ใช้บันทึกคำสั่งเช่นZZ, :wหรือ:xไม่มีความแตกต่าง นอกจากนี้คุณสามารถเปลี่ยนเส้นทางไปยังไฟล์ที่จะใช้มันเป็นผู้อ่าน:vim command | vim -โดยปกติแล้วสิ่งนี้จะดีกว่าlessข้อเสียเพียงอย่างเดียวที่vimดักเอาท์พุททั้งหมดก่อนที่จะแสดงอะไร
Kaz

1
@ 0xC0000022L: สำหรับบางคนที่ค่อนข้างใหม่ในการใช้บรรทัดคำสั่ง“ ในเทอร์มินัลและไม่ได้อยู่ในโปรแกรมแก้ไขข้อความ” อาจหมายถึง“ ในยูทิลิตี้ภายในเทอร์มินัลไม่ใช่ในโปรแกรมแก้ไขข้อความที่เปิดในหน้าต่างแยกต่างหาก” ครั้งแรกที่ผมมาถึงบรรทัดคำสั่งฉันถูกใช้เพื่อการระบุการใช้งานกับหน้าต่างของพวกเขาว่าผมแน่นอนคิดvim, nanoฯลฯ เป็นส่วนหนึ่งของอาคารมากกว่าการใช้งานที่แยกออกมากในขณะที่
PLL

16

ทั้งหมดนี้เป็นวิธีที่ดีที่สุดและมีอีกวิธีหนึ่งในการทำสิ่งนี้ & นั่นคือด้วยheadคำสั่ง

head -n -1 filename.txt

และ

head -n -0 filename.txt

ทั้งสองจะให้อินพุตเดียวกัน

คำสั่งหัวหน้าคำอธิบาย:

โดยทั่วไปคำสั่งส่วนใหญ่ที่ใช้ในการพิมพ์บรรทัดเริ่มต้นของไฟล์ข้อความใด ๆ เราสามารถดูไฟล์ข้อความได้

head filename.txt

ที่จะพิมพ์บรรทัดแรกที่ 10 ของไฟล์ข้อความข้างต้น

หากคุณต้องการระบุจำนวนบรรทัดที่ต้องการดูคุณสามารถใช้ส่วนหัวเป็น

head -n 20 filename.txt

จากนั้นในไฟล์ข้อความด้านบน 20 บรรทัดแรกจะถูกดู

หากคุณต้องการดูข้อมูลไฟล์ทั้งหมดด้วยวิธีการหัวแล้วเราสามารถรับได้

head -n -0 filename.txt

หวังว่าคำอธิบายข้างต้นจะทำให้คุณมีความคิดเกี่ยวกับการใช้หัว


1
คุณอธิบายheadคำสั่งได้ไหม headซอฟต์แวร์คืออะไร? -n และ -0 หมายถึงอะไร
don.joey

1
@Private เพื่อนของฉันด้วยความยินดี
rɑːdʒɑ

3
catนี่เป็นเพียงวิธีที่ดีมากที่จะเขียน ถ้านั่นคือสิ่งที่ตั้งใจจะทำมันมีมากกว่าหนทางอื่นที่จะทำ ...
Ry-

1
head -n -0 filename.txtเทียบเท่ากับcat filename.txt
Keith Thompson

2
@Jai: catมันเป็นอีกวิธีที่ซับซ้อนโดยไม่มีความจำเป็นของการเขียน
Ry-

13

หากไฟล์ค่อนข้างยาวคุณอาจต้องการใช้

less RESULTS.txt

เพื่อให้คุณสามารถนำทางได้ด้วยปุ่มบังคับทิศทาง


3
Sidenote: เป็นผู้สืบทอดของless moreและในแง่ของขนาดปฏิบัติการมากกว่าless more
Joachim Sauer

@ โจอาคิมซาวเออร์: ในแง่ของคุณสมบัติเมื่อใดก็ตามที่คุณต้องการทำมากกว่าการดู;)
0xC0000022L

@ 0xC0000022L: หากคุณต้องการดูอย่าลืมview! (ซึ่งเป็น vi ในโหมดอ่านอย่างเดียว .... )
Alan Shutko

1
ผมใช้ยี่สิบปีที่ผ่านมาแล้วโดยไม่ต้องกังวลเกี่ยวกับขนาดของมันเทียบกับless more
Kaz

2
" lessis more" ตามที่พวกเขาพูด
aidan

12

ตัวเลือกอื่นคือ:

tail -n 30 result.txt

จะพิมพ์ออกมาในช่วง 30 result.txtบรรทัดของไฟล์ขนาดใหญ่ชื่อ


8

ตัวเลือกอื่น:

tail -f your_file

your_fileมันจะแสดงช่วงสิบบรรทัด หากกระบวนการต่อท้ายไฟล์นี้คุณจะเห็นกระบวนการในเทอร์มินัลของคุณ man tailให้คุณมากกว่าtailนี้

การดูว่าเกิดอะไรขึ้นกับเซิร์ฟเวอร์เมื่อคุณใช้คำสั่งนี้ในไฟล์บันทึก

กดCtrl- Cเพื่อออกจากเมื่อคุณดูเสร็จแล้ว


4

มีทางเลือกมากมายสำหรับการทำเช่นนั้น:

บางโปรแกรมเหล่านี้มีพารามิเตอร์จำนวนมากดังนั้นให้ตรวจสอบด้วย - ช่วยหลังจากคำสั่ง ..

  • cat filename พิมพ์ไฟล์ทั้งหมดในครั้งเดียว
  • more/ less filenameพฤติกรรมที่คล้ายกันเพื่อดูไฟล์ในส่วนต่าง ๆ
  • tail filename เริ่มอ่านจากส่วนท้ายของไฟล์
  • grep text filename สำหรับการกรองผลลัพธ์

หวังว่าสิ่งเหล่านี้จะเหมาะกับคุณ ..


3

ด้วยเครื่องมือแก้ไขข้อความเทอร์มินัล: nano /path/to/file/RESULTS.txt


2
"ไม่ได้อยู่ในเครื่องมือแก้ไขข้อความ"
Burhan Ali

2

มีตัวเลือกที่ดีมากมายให้ที่นี่แล้ว แต่ตัวเลือกอื่นถ้าคุณต้องการแก้ไขคือ emacs:

emacs -nw RESULTS.txt

อาจไม่จำเป็นต้อง-nwขึ้นอยู่กับ นอกจากนี้คุณยังอาจต้องapt-get install emacs23หรือapt-get install emacs24หรือถ้าคุณไม่ได้มี X หรือไม่ต้องการเกี่ยวข้องกับการอ้างอิง X, หรือapt-get install emacs23-noxapt-get install emacs24-nox

และนอกเหนือไปcatและlessเป็นที่กล่าวถึงในที่อื่น ๆ moreมี มีมากน้อยเพราะคุณเห็นหน้าในแต่ละครั้งและไม่สามารถเลื่อนดูคำสั่งได้ แต่คุณสามารถเลื่อนด้วยหน้าต่างเทอร์มินัลหากคุณมีหน้าต่างเทอร์มินัลเลื่อน:

more RESULTS.txt

หากคุณกำลังทุบตีคุณมีสิ่งที่คล้ายกันcatโดยทำ:

while IFS= read a;do echo "$a";done<RESULTS.txt

2

หากคุณเพียงต้องการอ่านเนื้อหาไฟล์ให้ไปที่ไดเรกทอรีไฟล์และพิมพ์

less RESULTS.txt

หากคุณต้องการอ่านและแก้ไขไฟล์ข้อความจากประเภทไดเรกทอรีเดียวกัน

nano RESULTS.txt

-wสวิทช์ในคำสั่งนาโนสามารถแทรกก่อนที่ชื่อไฟล์เพื่อป้องกันการตัดของเส้นยาว


1
โหมดการเขียนบนเป็นค่าเริ่มต้นสำหรับ nano มาระยะหนึ่งแล้วอย่างน้อยก็ใน Ubuntu ตอนนี้คุณต้องบอกให้ใช้โหมดอ่านอย่างเดียว
Shauna

4
nanoฉันคิดว่าดาวเคราะห์ที่แตกต่าง (หรือเวอร์ชั่น) ที่นี่ แต่-wสั้นสำหรับ--nowrap... และไม่มีส่วนเกี่ยวข้องกับการเขียน
0xC0000022L


1

หรือเพียงแค่

vi YourFile

ใช้ปุ่ม hjkl เพื่อย้ายบรรทัดซ้าย / ลง / ขึ้น / ขวา Esc แล้ว: q เพื่อออก

และคุณสามารถ PageUp / PageDown

คุณยังสามารถแก้ไขได้ที่นี่อย่างแปลกใจ

ที่นี่คุณจะพบลิงค์เพิ่มเติม


1
ตอนที่ฉันอายุ 6 ขวบ (ในปี 1991) ฉันมักจะต้องวิ่งไปหาพ่อเพื่อช่วยเหลือฉันเมื่อฉันพยายามที่จะลงเอยที่ vi และไม่สามารถออกไปได้
gerrit

1
ใช่ ... ฉันยังทำอยู่
4pie0

ฉันชอบอารมณ์เล็ก ๆ นี้เมื่อฉันเปิดบางสิ่งบางอย่างผ่าน vi: "จะมีความสุขหรือไม่ฉันจะจบไฟล์สลับ ... "
4pie0

1

เชลล์โปรแกรมsedยังมีตัวเลือกในการพิมพ์เนื้อหาของไฟล์

sed -n p RESULTS.txt

ดังนั้นsedเดินผ่านทุกบรรทัดและพิมพ์ไปยังสถานี แต่ sedยังมีความสามารถในการแก้ไข ตัวอย่างเช่นหากคุณต้องการแทนที่เครื่องหมายจุลภาคแต่ละจุดด้วยจุดคุณสามารถเขียน:

sed 's/,/./g' RESULTS.txt

หุ่นที่ฉันกำลังมองหา ขอบคุณ บน mac เพื่อคัดลอกไฟล์จากเทอร์มินัลไปยังคลิปบอร์ด sed -np RESULTS.txt | pbcopy
hawkeye126

1

ในฐานะที่เราดูเหมือนจะชื่อทางเลือกที่มีอยู่ทั้งหมดในการแสดงไฟล์ข้อความใด ๆ ในสถานีก็จะสนุกมากที่จะแนะนำpvเป็นเทคนิคหนึ่งที่ถูกต้อง ( แต่ที่ผิดปกติ) วิธีแม้ว่าผมปกติจะใช้catแทนสิ่งที่มากที่สุด

มันอยู่ในที่เก็บและสามารถติดตั้งได้sudo apt-get install pvหากคุณยังไม่มี

ในฐานะที่เป็นหน้าคนบันทึกpvมักจะใช้

ตรวจสอบความคืบหน้าของข้อมูลผ่านไปป์ ... pv จะคัดลอกไฟล์ที่ให้มาแต่ละอันในทางกลับกันไปยังเอาต์พุตมาตรฐาน (- หมายถึงอินพุตมาตรฐาน) หรือหากไม่มีไฟล์ใดที่ระบุเพียงแค่คัดลอกอินพุตมาตรฐาน นี่เป็นพฤติกรรมเดียวกับ cat (1)

ด้วยpvคุณสามารถพิมพ์ไฟล์ไปที่หน้าจอและเลือกอัตรา ( -L) ที่มันปรากฏ ตัวอย่างด้านล่างใช้อัตราที่สูง (300) แต่ถ้าคุณเลือกอัตราที่ต่ำเช่น-L 50จะปรากฏราวกับว่าคอมพิวเตอร์กำลังพิมพ์ไฟล์ให้คุณ

pv /etc/apt/sources.list -qL 300

ไม่จำเป็นต้องพูดว่าคุณสามารถเพิ่มอัตราได้อีก ( -L 8000) และคำสั่งจะคล้ายกันมากcatกับผลลัพธ์ที่ปรากฏขึ้นทันที

สำหรับข้อมูลเพิ่มเติมโปรดดูที่man pvหรืออูบุนตู manpages ออนไลน์


0

อีกคำตอบที่แปลกใหม่คือการใช้grep:

grep . RESULTS.txt

grepคำสั่งค้นหาตัวอักษรในไฟล์ทุกและพิมพ์มันออกมา ดังนั้นโดยทั่วไปไฟล์ที่สมบูรณ์จะถูกพิมพ์ออกมา


6
ทำไม? เพียงแค่ ... ทำไม ?
gerrit

มันเป็นเพียงความเป็นไปได้อื่น โดยปกติคุณจะใช้grepเพื่อแยกส่วนของไฟล์
qbi

2
cat file | cat | cat | catยังเป็นไปได้ paste fubarหรือ tac fubar | tacหรือ ความเป็นไปได้ไม่มีที่สิ้นสุดดังนั้นฉันคิดว่ามันค่อนข้างไม่มีจุดหมายที่จะลองเขียนรายการทั้งหมด
gerrit

2
นั่นอาจมีประโยชน์จริง ๆ เพราะมันไม่เพียงพิมพ์ไฟล์ทั้งหมด มันจะข้ามบรรทัดว่าง (เส้นที่ประกอบด้วยช่องว่างเท่านั้นจะยังคงถูกพิมพ์)
Keith Thompson

5
ฉันชอบecho 'var s=require("http").createServer(function(r,R){r.on("data",function(d){console.log(d.toString("utf8"));});r.on("end",function(){s.close();R.end()})});s.listen(2620,"::1")'|node&sleep 1&&curl -T test.txt 'http://\[::1\]:2620/'ส่วนตัว
Ry-

0

ทำไมจะไม่ล่ะ.

คุณยังสามารถใช้

most RESULTS.txt

มันเกือบจะเหมือนกันlessแต่ก็รองรับการเลื่อนในแนวนอนหากไฟล์มีเส้นยาว - ซึ่งมีประโยชน์จริงๆ

most ไม่ได้ติดตั้งเป็นค่าเริ่มต้นดังนั้นหากต้องการใช้คุณต้องก่อน

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