Bagaimana saya bisa menampilkan konten file teks pada baris perintah?

132

Saya ingin menampilkan konten file teks pada baris perintah. File hanya berisi 5-6 karakter. Apakah ada cara mudah untuk melakukan ini?

Sam Weinberg
sumber

Jawaban:

195

Menggunakan cat

Karena file Anda pendek, Anda dapat menggunakan cat.

cat filename

Menggunakan less

Jika Anda harus melihat konten file yang lebih panjang, Anda dapat menggunakan pager seperti less.

less filename

Anda dapat membuat lessberperilaku seperti catketika dipanggil pada file kecil dan berperilaku normal sebaliknya dengan meneruskannya -Fdan memberi -Xtanda.

less -FX filename

Saya punya alias untuk less -FX. Anda dapat membuatnya sendiri seperti ini:

alias aliasname='less -FX'

Jika Anda menambahkan alias ke konfigurasi shell Anda, Anda dapat menggunakannya selamanya.

Menggunakan od

Jika file Anda berisi karakter aneh atau tidak diinginkan, Anda dapat menggunakan oduntuk memeriksa karakter. Sebagai contoh,

$ 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

sumber
+1, juga sed -n l filebisa bermanfaat.
enzotib
1
Apakah lessada keuntungan yang jelas dibandingkan dengan program pager lain seperti pg, atau apakah hanya bermuara pada preferensi pribadi?
Sam Weinberg
@ SamWeinberg: lessmemiliki lebih banyak fitur daripada pg. Lihatlah less(1)dan pg(1)halaman manual. Ada pager lain juga. Lihatlah unix.stackexchange.com/questions/81129/… . lessmungkin pager yang paling banyak digunakan tetapi yang Anda gunakan turun ke preferensi pribadi.
jangan lupa moredan most!
Rudolf Olah
29

Meskipun semua orang menggunakan cat filenameuntuk mencetak teks file ke standar keluaran tujuan pertama adalah con kucing enating. Dari halaman manual kucing:

cat - menyatukan file dan mencetak pada output standar

Sekarang kucing baik-baik saja untuk mencetak file tetapi ada alternatif:

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

The ( )mengembalikan nilai dari ekspresi, dalam hal ini isi nama file yang kemudian diperluas oleh $untuk echoatau printf.

Memperbarui:

< filename

Ini tepat seperti yang Anda inginkan dan mudah diingat.

Berikut adalah contoh yang memungkinkan Anda memilih file dalam menu dan kemudian mencetaknya.

#!/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

Untuk bacaan lebih lanjut:
BashPitfalls - file cat | sed s / foo / bar /> file
Referensi Bash - Redirect

mesin penggiling
sumber
Pembaruan Anda: " < filenametepat seperti yang Anda inginkan, ..." menyesatkan. Secara keseluruhan, meskipun ini merupakan diskusi yang menarik tentang alternatif, saya pikir catlebih sederhana.
X Tian
Bare < filenametidak menampilkan konten file, tetapi cat filenametidak.
jarno
Anda bisa menggunakannya tee < filenamejuga.
jarno
2
+1 untuk echo "$(<filename)"bashism. Tidak cukup di sini.
Yokai
Itu ide bagus untuk menggunakan Linux Internal Command dengan echo "$(<filename)". Terima kasih ...
Reza Harasani
9

Anda dapat menggunakan perintah berikut untuk menampilkan konten file teks.

nama file kucing 
forvaidya
sumber
Untuk informasi lebih lanjut tentang cat, jalankan man cat.
9

Alat untuk menangani file teks di unix adalah perintah dasar, sehari-hari:

Di unix dan linux untuk mencetak seluruh konten dalam file

cat filename.txt

atau

more filename.txt

atau

less filename.txt

Untuk beberapa baris terakhir

tail filename.txt

Untuk beberapa baris pertama

head filename.txt
Abhishek
sumber
4

Salah satu opsi adalah menggunakan more

misalnya more file.txt

Namun tidak memiliki semua fitur ditambahkan oleh less.
Salah satu contoh sederhana adalah bahwa Anda tidak dapat menggulir kembali dalam output. Umumnya telah digantikan oleh kurang - yang dinamai bercanda karena

kurang itu lebih

Michael Durrant
sumber
3

Saya selalu menggunakan $ less "your file here", karena sangat sederhana, menyediakan grepperintah interaktif bawaan, dan memberi Anda antarmuka yang mudah digunakan yang dapat Anda gulir dengan tombol panah.

(Ini juga termasuk di hampir setiap sistem * nix)

SG60
sumber
lessadalah versi berlebihan dari more(bandingkan man lessdengan man more), dan bagi saya itu memiliki dua fitur yang mengganggu: 1) itu beralih ke buffer layar alternatif, ketika kurang berakhir, file yang baru saja Anda lihat menghilang 2) di EOF Anda harus mengetikkan secara eksplisit q(Saya tahu, ada opsi untuk ini). Jadi salah satu tindakan pertama saya di lingkungan baru adalah pengaturan export PAGER=/bin/moredi profil saya dan gunakan moresepanjang waktu.
ott--
@ ott--: 1) Coba -Xbendera. 2) Coba -Ebendera. lessmemiliki moremode emulasi. Anda dapat mengaktifkannya dengan mengatur LESS_IS_MOREvariabel lingkungan. Anda dapat menggulir ke atas dalam moremode emulasi.
Padahal, secara umum, saya setuju itu lessterlalu rumit. Kemampuannya untuk menjalankan perintah eksternal adalah contoh sempurna dari kompleksitasnya yang berlebihan.
@ EvanTeitelman Saya selalu menemukan fungsi grep sangat berguna, @ ott - Saya menemukan itu karena emulasi more, dan ada banyak fitur tambahan, ia melakukan pekerjaan dengan sangat baik.
SG60
2

Jika ini file besar, dan Anda ingin mencari bagian tertentu, Anda dapat menggunakannya

 cat filename | grep text_to_search -ni 

Anda juga dapat menggunakan editor Vim yang lebih interaktif (atau editor vi jika Anda tidak memiliki Vim):

 vim filename
Or
 vi filename

Vim / vi adalah editor yang hebat, juga dapat digunakan sebagai pembaca dalam "Mode Normal" atau menggunakan opsi -R, ia memiliki banyak fitur yang akan membantu Anda dalam menelusuri file.

Jangan Khawatir Anak
sumber
Lebih pendek vim -Radalah view. Tetapi perlu diingat bahwa itu tidak suka pengalihan, seperti yang dibahas dalam xargs dan vi - "Input bukan dari terminal" .
manatwork
terima kasih @manatwork untuk kepala! Saya baru-baru ini mulai menggunakan Vim dan saya menyukainya karena beberapa fiturnya. Mengenai pengalihan, saya lupa tentang itu, terima kasih untuk pengingat. Sampai sekarang, saya bekerja pada VM jarak jauh, di mana saya menggunakan ssh tanpa antarmuka GUI, oleh karena itu, Vim sangat berguna, ketika editor GUI lain tidak dapat bekerja, itu sebabnya saya menekankan Vim di sini.
Don't You Worry Child
1

Gunakan perintah cat untuk menampilkan konten nama file. nama file kucing

Gunakan perintah vim untuk mengedit file. nama file vim

Edward Shen
sumber