Wie kann ich den Inhalt einer Textdatei in der Befehlszeile anzeigen?

131

Ich möchte den Inhalt einer Textdatei in der Befehlszeile anzeigen. Die Datei enthält nur 5-6 Zeichen. Gibt es eine einfache Möglichkeit, dies zu tun?

Sam Weinberg
quelle

Antworten:

194

Verwenden cat

Da Ihre Datei kurz ist, können Sie verwenden cat.

cat filename

Verwenden less

Wenn Sie den Inhalt einer längeren Datei anzeigen müssen, können Sie einen Pager wie z less.

less filename

Sie können das lessVerhalten so einstellen, wie es catbei kleinen Dateien aufgerufen wird, und es ansonsten normal verhalten, indem Sie die Flags -Fund übergeben -X.

less -FX filename

Ich habe einen Alias ​​für less -FX. Du kannst es dir so machen:

alias aliasname='less -FX'

Wenn Sie den Alias ​​zu Ihrer Shell-Konfiguration hinzufügen , können Sie ihn für immer verwenden.

Verwenden od

Wenn Ihre Datei seltsame oder nicht druckbare Zeichen enthält, können Sie diese odZeichen untersuchen. Zum Beispiel,

$ 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

quelle
+1, sed -n l filekönnte auch nützlich sein.
Enzotib
1
Hat lesses klare Vorteile gegenüber anderen Pager-Programmen wie pg, oder läuft es nur auf persönliche Vorlieben hinaus?
Sam Weinberg
@SamWeinberg: lesshat mehr Funktionen als pg. Schauen Sie sich die Hilfeseiten less(1)und an pg(1). Es gibt auch andere Pager. Schauen Sie sich unix.stackexchange.com/questions/81129/… an . lessist wahrscheinlich der am weitesten verbreitete Pager, aber welchen Sie verwenden, hängt von Ihren persönlichen Vorlieben ab.
nicht vergessen moreund most!
Rudolf Olah
29

Auch wenn jeder benutzt cat filenameeine Text - Dateien in der Standardausgabe ersten Zweck zu drucken ist con Katze enating. Aus der Manpage der Katze:

cat - Dateien verketten und auf der Standardausgabe drucken

Jetzt ist cat in Ordnung, um Dateien zu drucken, aber es gibt Alternativen:

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

Das ( )gibt den Wert eines Ausdrucks, in diesem Fall den Inhalt der Dateiname , die dann expandiert wird , indem $für echooder printf.

Aktualisieren:

< filename

Dies macht genau das, was Sie wollen und ist leicht zu merken.

In diesem Beispiel können Sie eine Datei in einem Menü auswählen und anschließend drucken.

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

Zum
weiterlesen : BashPitfalls - cat file | sed s / foo / bar /> Datei-
Bash-Referenz - Umleiten

Brecher
quelle
Ihr Update: " < filenameist genau das, was Sie wollen, ..." ist irreführend. Obwohl dies eine interessante Diskussion über Alternativen ist, halte ich dies insgesamt für cateinfacher.
X Tian
Bare < filenamezeigt den Inhalt der Datei nicht an, cat filenametut dies jedoch.
jarno
Das könntest du auch gebrauchen tee < filename.
jarno
2
+1 für den echo "$(<filename)"Bashismus. Nicht genug davon hier.
Yokai
Das ist eine großartige Idee für die Verwendung von Linux Internal Command mit Echo "$(<filename)". Vielen Dank ...
Reza Harasani
9

Mit dem folgenden Befehl können Sie den Inhalt einer Textdatei anzeigen.

Katzendateiname 
forvaidya
quelle
Um weitere Informationen zu erhalten cat, führen Sie aus man cat.
9

Tools für den Umgang mit Textdateien unter Unix sind einfache, alltägliche Befehle:

Unter Unix und Linux, um den gesamten Inhalt in einer Datei auszudrucken

cat filename.txt

oder

more filename.txt

oder

less filename.txt

Für die letzten paar Zeilen

tail filename.txt

Für die ersten paar Zeilen

head filename.txt
Abhishek
quelle
4

Eine Option ist zu verwenden more

z.B more file.txt

Es wurden jedoch nicht alle Funktionen von hinzugefügt less.
Ein einfaches Beispiel ist, dass Sie in der Ausgabe keinen Bildlauf durchführen können. Im Allgemeinen wurde es von weniger überholt - was im Scherz weil genannt wurde

weniger ist mehr

Michael Durrant
quelle
3

Ich benutze immer $ less "your file here", da es sehr einfach ist, einen eingebauten interaktiven grepBefehl bietet und Ihnen eine benutzerfreundliche Oberfläche bietet, die Sie mit den Pfeiltasten scrollen können.

(Es ist auch in fast jedem * nix-System enthalten)

SG60
quelle
lessist die Overkill-Version von more(vergleiche man lessmit man more) und hat für mich zwei nervige Features: 1) es wechselt zum alternativen Bildschirmpuffer, wenn weniger terminiert, verschwindet die Datei, die du gerade ansiehst 2) bei EOF musst du explizit tippen q(Ich weiß, es gibt eine Option dafür). Eine meiner ersten Aktionen in einer neuen Umgebung ist es, export PAGER=/bin/moremein Profil moreständig zu ändern und zu verwenden .
ott--
@ ott--: 1) Probiere die -XFlagge aus. 2) Probieren Sie die -EFlagge aus. lesshat einen moreEmulationsmodus. Sie können es aktivieren, indem Sie die LESS_IS_MOREUmgebungsvariable festlegen. Sie können im moreEmulationsmodus nach oben scrollen .
Im Allgemeinen stimme ich jedoch zu, dass dies zu lesskompliziert ist. Seine Fähigkeit, externe Befehle auszuführen, ist ein perfektes Beispiel für seine Überkomplexität.
@EvanTeitelman Ich fand die grep-Funktionalität selbst immer sehr nützlich, @ ott-- Ich finde, dass sie aufgrund der Emulation moreund der vielen zusätzlichen Funktionen sehr gut funktioniert.
SG60
2

Wenn es sich um eine große Datei handelt und Sie einen bestimmten Teil durchsuchen möchten, können Sie verwenden

 cat filename | grep text_to_search -ni 

Sie können auch einen interaktiveren Vim-Editor verwenden (oder einen vi-Editor, wenn Sie keinen Vim haben):

 vim filename
Or
 vi filename

Vim / vi ist ein großartiger Editor, der auch als Leser im "Normalen Modus" oder mit der Option -R verwendet werden kann. Er verfügt über viele Funktionen, die Ihnen beim Durchsuchen der Datei helfen.

Mach dir keine Sorgen, Kind
quelle
Kürzere für vim -Rist view. Beachten Sie jedoch, dass es keine Weiterleitungen mag, wie in xargs und vi beschrieben - „Eingabe erfolgt nicht von einem Terminal“ .
Manatwork
danke @manatwork für die Heads-up! Ich habe vor kurzem angefangen, Vim zu verwenden, und ich mag es wegen seiner verschiedenen Funktionen. In Bezug auf Weiterleitungen habe ich das vergessen, danke für die Erinnerung. Ab sofort arbeite ich an einer Remote-VM, bei der ich ssh ohne GUI-Oberfläche verwende. Daher ist Vim von großem Nutzen, wenn kein anderer GUI-Editor funktionieren kann. Deshalb habe ich hier Vim hervorgehoben.
Mach dir keine Sorgen Kind
1

Verwenden Sie den Befehl cat, um den Inhalt des Dateinamens anzuzeigen. Katzendateiname

Verwenden Sie den Befehl vim, um die Datei zu bearbeiten. vim dateiname

Edward Shen
quelle