Làm cách nào để hiển thị nội dung của tệp văn bản trên dòng lệnh?


131

Tôi muốn hiển thị nội dung của một tệp văn bản trên dòng lệnh. Tệp chỉ chứa 5-6 ký tự. Có cách nào làm dễ hơn không?

Câu trả lời:


194

Sử dụng cat

Vì tập tin của bạn ngắn, bạn có thể sử dụng cat.

cat filename

Sử dụng less

Nếu bạn phải xem nội dung của tệp dài hơn, bạn có thể sử dụng máy nhắn tin như less.

less filename

Bạn có thể thực hiện lesshành vi như catkhi được gọi trên các tệp nhỏ và hành xử bình thường bằng cách chuyển nó -F-Xcờ.

less -FX filename

Tôi có một bí danh cho less -FX. Bạn có thể tự làm một cái như vậy:

alias aliasname='less -FX'

Nếu bạn thêm bí danh vào cấu hình shell của mình , bạn có thể sử dụng nó mãi mãi.

Sử dụng od

Nếu tệp của bạn chứa các ký tự lạ hoặc không thể in được, bạn có thể sử dụng odđể kiểm tra các ký tự. Ví dụ,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

+1, cũng sed -n l filecó thể hữu ích.
enzotib

1
lessbất kỳ lợi thế rõ ràng so với các chương trình máy nhắn tin khác như pg, hoặc nó chỉ sôi sục theo sở thích cá nhân?
Sam Weinberg

@SamWeinberg: lesscó nhiều tính năng hơn pg. Hãy nhìn vào less(1)và các pg(1)trang. Có máy nhắn tin khác là tốt. Hãy xem unix.stackexchange.com/questions/81129/ cấp . lesscó lẽ là máy nhắn tin được sử dụng rộng rãi nhất nhưng cái nào bạn sử dụng tùy thuộc vào sở thích cá nhân.

đừng quên moremost!
Rudolf Olah

29

Mặc dù tất cả mọi người sử dụng cat filenameđể in một tập tin văn bản cho mục đích đầu ra tiêu chuẩn, mục đích đầu tiên là con mèo . Từ trang người đàn ông của mèo:

cat - nối các tập tin và in trên đầu ra tiêu chuẩn

Bây giờ mèo là tốt để in các tập tin nhưng có những lựa chọn thay thế:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

Các ( )trả về giá trị của một biểu thức, trong trường hợp này nội dung của tên tập tin mà sau đó được mở rộng bằng cách $cho echohay printf.

Cập nhật:

< filename

Điều này làm chính xác những gì bạn muốn và dễ nhớ.

Dưới đây là một ví dụ cho phép bạn chọn một tệp trong menu và sau đó in nó.

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

Để đọc thêm:
BashPit thác - tập tin mèo | sed s / foo / bar /> file
Bash Tham khảo - Chuyển hướng


Cập nhật của bạn: " < filenamechính xác là những gì bạn muốn, ..." là sai lệch. Nhìn chung, mặc dù đây là một cuộc thảo luận thú vị về các lựa chọn thay thế, tôi nghĩ catđơn giản hơn.
X Tian

Bare < filenamekhông hiển thị nội dung của tập tin, nhưng cat filenamekhông.
jarno

Bạn cũng có thể sử dụng tee < filename.
jarno

2
+1 cho echo "$(<filename)"bashism. Không đủ điều đó ở đây.
Yokai

Đó là ý tưởng tuyệt vời để sử dụng Linux Internal Command với echo "$(<filename)". Cảm ơn ...
Reza Harasani

9

Bạn có thể sử dụng lệnh sau để hiển thị nội dung của tệp văn bản.

tên tập tin con mèo 

Để biết thêm thông tin về cat, chạy man cat.

9

Các công cụ xử lý tệp văn bản trên unix là các lệnh cơ bản, hàng ngày:

Trong unix và linux để in toàn bộ nội dung trong tệp

cat filename.txt

hoặc là

more filename.txt

hoặc là

less filename.txt

Đối với vài dòng cuối cùng

tail filename.txt

Đối với một vài dòng đầu tiên

head filename.txt

4

Một lựa chọn là sử dụng more

ví dụ more file.txt

Tuy nhiên, nó không có tất cả các tính năng được thêm vào less.
Một ví dụ đơn giản là bạn không thể cuộn lại trong đầu ra. Nói chung, nó đã được vượt qua ít hơn - được đặt tên trong trò đùa vì

càng đơn giản càng đẹp


3

Tôi luôn luôn sử dụng $ less "your file here", vì nó rất đơn giản, cung cấp một greplệnh tương tác tích hợp và cung cấp cho bạn một giao diện dễ sử dụng mà bạn có thể cuộn bằng các phím mũi tên.

(Nó cũng được bao gồm trên gần như mọi hệ thống * nix)


lesslà phiên bản quá mức của more(so sánh man lessvới man more) và đối với tôi, nó có hai tính năng gây khó chịu: 1) nó chuyển sang bộ đệm màn hình thay thế, khi ít chấm dứt, tệp bạn vừa xem biến mất 2) tại EOF bạn phải gõ rõ ràng q(Tôi biết, có một lựa chọn cho việc này). Vì vậy, một trong những hành động đầu tiên của tôi trong một môi trường mới là thiết lập export PAGER=/bin/moretrong hồ sơ của tôi và sử dụng moremọi lúc.
ott--

@ ott--: 1) Hãy thử -Xcờ. 2) Thử -Ecờ. lessmorechế độ mô phỏng. Bạn có thể kích hoạt nó bằng cách đặt LESS_IS_MOREbiến môi trường. Bạn có thể cuộn lên trên trong morechế độ mô phỏng.


Mặc dù, nói chung, tôi đồng ý rằng lessnó quá phức tạp. Khả năng chạy các lệnh bên ngoài của nó là một ví dụ hoàn hảo về độ phức tạp quá mức của nó.

@EvanTeitelman Bản thân tôi luôn thấy chức năng grep cực kỳ hữu ích, @ ott-- Tôi thấy rằng vì nó được mô phỏng morevà nhiều tính năng bổ sung, nó hoạt động rất tốt.
SG60

2

Nếu đó là một tệp lớn và bạn muốn tìm kiếm một phần cụ thể, bạn có thể sử dụng

 cat filename | grep text_to_search -ni 

Ngoài ra, bạn có thể sử dụng trình soạn thảo Vim tương tác nhiều hơn (hoặc trình soạn thảo vi nếu bạn không có Vim):

 vim filename
Or
 vi filename

Vim / vi là một trình chỉnh sửa tuyệt vời, cũng có thể được sử dụng làm trình đọc trong "Chế độ bình thường" hoặc sử dụng tùy chọn -R, nó có nhiều tính năng sẽ giúp bạn duyệt qua tệp.


Ngắn cho vim -Rview. Nhưng hãy nhớ rằng nó không thích chuyển hướng, như đã thảo luận trong xargs và vi - Nhập Đầu vào không phải từ một thiết bị đầu cuối .
manatwork

cảm ơn @manatwork cho những người đứng đầu! Gần đây tôi đã bắt đầu sử dụng Vim và tôi thích nó vì một số tính năng của nó. Về chuyển hướng, tôi quên mất điều đó, cảm ơn đã nhắc nhở. Hiện tại, tôi đang làm việc trên một máy ảo từ xa, nơi tôi sử dụng ssh không có giao diện GUI, do đó, Vim rất hữu dụng, khi bất kỳ trình soạn thảo GUI nào khác không thể hoạt động, đó là lý do tôi nhấn mạnh Vim ở đây.
Đừng lo lắng Trẻ em

1

Sử dụng lệnh cat để hiển thị nội dung của tên tệp. tên tập tin con mèo

Sử dụng lệnh vim để chỉnh sửa tập tin. tên tệp vim

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.