Jak wyświetlić zawartość pliku tekstowego w wierszu poleceń?


131

Chciałbym wyświetlić zawartość pliku tekstowego w wierszu poleceń. Plik zawiera tylko 5-6 znaków. Czy jest na to łatwy sposób?

Odpowiedzi:


194

Za pomocą cat

Ponieważ twój plik jest krótki, możesz użyć cat.

cat filename

Za pomocą less

Jeśli chcesz wyświetlić zawartość dłuższego pliku, możesz użyć pagera, takiego jak less.

less filename

Możesz sprawić, by lesszachowywał się jak catpodczas wywoływania na małych plikach i zachowywać się normalnie inaczej, przekazując mu flagi -Fi -X.

less -FX filename

Mam pseudonim dla less -FX. Możesz zrobić taki sam:

alias aliasname='less -FX'

Jeśli dodasz alias do konfiguracji powłoki , możesz go używać na zawsze.

Za pomocą od

Jeśli plik zawiera dziwne lub niedrukowalne znaki, możesz użyć ich oddo sprawdzenia. Na przykład,

$ 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, również sed -n l filemoże się przydać.
enzotib

1
Czy lessma jakieś wyraźne zalety w porównaniu z innymi programami pagera pg, czy może sprowadzają się do osobistych preferencji?
Sam Weinberg,

@SamWeinberg: lessma więcej funkcji niż pg. Spójrz na strony less(1)i pg(1)strony podręcznika. Są też inne pagery. Spójrz na unix.stackexchange.com/questions/81129/… . lessjest prawdopodobnie najczęściej używanym pageriem, ale ten, którego używasz, sprowadza się do osobistych preferencji.

nie zapomnij morei most!
Rudolf Olah,

29

Nawet jeśli wszyscy używają cat filenamedo drukowania plików tekstowych na standardowe wyjście pierwszego celu jest con cat enating. Ze strony kota kota:

cat - konkatenuje pliki i drukuje na standardowym wyjściu

Teraz cat nadaje się do drukowania plików, ale istnieją alternatywy:

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

( )Zwraca wartość wyrażenia w tym przypadku zawartość pliku , który następnie jest rozszerzany przez $na echolub printf.

Aktualizacja:

< filename

Robi dokładnie to, co chcesz i jest łatwy do zapamiętania.

Oto przykład, który pozwala wybrać plik z menu, a następnie go wydrukować.

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

Do dalszego czytania:
BashPitfalls - plik cat | sed s / foo / bar /> plik
Bash Reference - Przekierowanie


Twoja aktualizacja: „ < filenamejest dokładnie tym, czego chcesz ...” wprowadza w błąd. Ogólnie rzecz biorąc, chociaż jest to interesująca dyskusja na temat alternatyw, myślę, że catjest prostsza.
X Tian

Gołe < filenamenie wyświetla zawartości pliku, ale wyświetla cat filename.
jarno

Ty też możesz użyć tee < filename.
jarno

2
+1 za echo "$(<filename)"bashism. Nie wystarczy tego tutaj.
Yokai

To świetny pomysł na użycie wewnętrznego polecenia Linux z echo "$(<filename)". Dzięki ...
Reza Harasani,

9

Możesz użyć następującego polecenia, aby wyświetlić zawartość pliku tekstowego.

nazwa pliku kota 

Aby uzyskać więcej informacji o cat, uruchom man cat.

9

Narzędzia do obsługi plików tekstowych w systemie Unix to podstawowe, codzienne polecenia:

W systemach Unix i Linux, aby wydrukować całą zawartość w pliku

cat filename.txt

lub

more filename.txt

lub

less filename.txt

Przez ostatnie kilka linii

tail filename.txt

Przez kilka pierwszych linii

head filename.txt

4

Jedną z opcji jest użycie more

na przykład more file.txt

Jednak nie ma całej funkcji dodanej przez less.
Jednym prostym przykładem jest to, że nie można przewijać wyników w górę. Ogólnie rzecz biorąc, zostało ono zastąpione przez mniej - co nazwano żartem, ponieważ

mniej znaczy więcej


3

Zawsze używam $ less "your file here", ponieważ jest to bardzo proste, zapewnia wbudowane interaktywne greppolecenie i daje łatwy w użyciu interfejs, który można przewijać za pomocą klawiszy strzałek.

(Jest również zawarty w prawie każdym * systemie nix)


lessjest wersją przesadną more(porównaj man lessz man more), a dla mnie ma dwie irytujące funkcje: 1) przełącza się na alternatywny bufor ekranu, gdy mniej kończy, plik, który właśnie oglądałeś, znika 2) w EOF musisz jawnie wpisać q(Wiem, istnieje na to opcja). Tak więc jedną z moich pierwszych akcji w nowym środowisku jest ustawienie export PAGER=/bin/morew moim profilu i używanie przez morecały czas.
ott--

@ ott--: 1) Wypróbuj -Xflagę. 2) Wypróbuj -Eflagę. lessma moretryb emulacji. Możesz go włączyć, ustawiając LESS_IS_MOREzmienną środowiskową. Możesz przewijać w górę w moretrybie emulacji.


Chociaż ogólnie zgadzam się, że lessjest to zbyt skomplikowane. Jego zdolność do uruchamiania zewnętrznych poleceń jest doskonałym przykładem jego złożoności.

@EvanTeitelman Zawsze uważałem, że funkcja grep jest bardzo przydatna, @ ott-- Uważam, że ze względu na emulację morei wiele dodatkowych funkcji, robi to bardzo dobrze.
SG60,

2

Jeśli jest to duży plik i chcesz przeszukać konkretną część, możesz użyć

 cat filename | grep text_to_search -ni 

Możesz także użyć bardziej interaktywnego edytora Vima (lub edytora vi, jeśli nie masz Vima):

 vim filename
Or
 vi filename

Vim / vi to świetny edytor, może być również używany jako czytnik w „trybie normalnym” lub przy użyciu opcji -R, ma wiele funkcji, które pomogą ci w przeglądaniu pliku.


Krótszy vim -Rjest view. Pamiętaj jednak, że nie lubi przekierowań, jak omówiono w xargs i vi - „Dane wejściowe nie pochodzą z terminala” .
manatwork

dzięki @manatwork za heads-up! Niedawno zacząłem używać Vima i podoba mi się ze względu na jego kilka funkcji. Jeśli chodzi o przekierowania, zapomniałem o tym, dziękuję za przypomnienie. Obecnie pracuję na zdalnej maszynie wirtualnej, w której używam ssh bez interfejsu GUI, dlatego Vim jest bardzo przydatny, gdy jakikolwiek inny edytor GUI nie może działać, dlatego tutaj podkreśliłem Vima.
Don't You Worry Child

1

Użyj polecenia cat, aby wyświetlić zawartość nazwy pliku. nazwa pliku kota

Użyj polecenia vim do edycji pliku. nazwa pliku vim

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.