Hvordan kan jeg vise indholdet af en tekstfil på kommandolinjen?

Jeg vil gerne vise indholdet af en tekstfil på kommandolinjen. Filen indeholder kun 5-6 tegn. Er der en nem måde at gøre dette på?

Svar

Brug af cat

Da din fil er kort, kan du bruge cat .

cat filename 

Brug af less

Hvis du skal se indholdet af en længere fil, kan du bruge en personsøger såsom less .

less filename 

Du kan få less til at opføre sig som cat, når de påberåbes på små filer og opføre sig normalt ellers ved at sende den til -F og -X flag.

less -FX filename 

Jeg har et alias til less -FX. Du kan selv lave en sådan:

alias aliasname="less -FX" 

Hvis du føjer aliaset til din shell-konfiguration , kan du bruge det for evigt.

Brug af od

Hvis din fil indeholder mærkelige eller ikke-udskrivelige tegn, kan du bruge od for at undersøge tegnene. F.eks.

$ 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 

Kommentarer

  • +1, også sed -n l file kan være nyttigt.
  • Har less nogen klare fordele i forhold til andre personsøgerprogrammer som pg , eller koger det bare ned til personlig præference?
  • @SamWeinberg: less har mere funktioner end pg. Se på less(1) og pg(1) manpages. Der er også andre personsøgere. Se på unix.stackexchange.com/questions/81129/… . less er sandsynligvis den mest anvendte personsøger, men hvilken du bruger kommer til personlig præference.
  • don ‘ t glem more og most!

Svar

Selvom alle bruger cat filename til at udskrive en filtekst til standardoutput, er det første formål at kat enating. Fra kattens mandside:

cat – sammenkæd filer og udskriv på standardoutputtet

Nu er cat fint til udskrivning af filer, men der er alternativer:

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

( ) returnerer værdien af et udtryk, i dette tilfælde indholdet af filnavn som derefter udvides med $ til echo eller printf.

Opdatering:

< filename 

Dette gør præcis, hvad du vil og er let at huske.

Her er et eksempel, der giver dig mulighed for at vælge en fil i en menu og derefter udskrive den.

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

For yderligere læsning:
BashPitfalls – cat-fil | sed s / foo / bar /> fil
Bash-reference – omdirigering

Kommentarer

  • Din opdatering: ” < filename er nøjagtigt wh når du vil, er ” vildledende. Samlet set, selvom dette er en interessant diskussion om alternativer, synes jeg cat er enklere.
  • Bare < filename gør det ikke vis indholdet af filen, men cat filename gør.
  • Du kan også bruge tee < filename.
  • +1 til echo "$(<filename)" basisme. Ikke nok med det her.
  • At ‘ er en god idé til at bruge Linux Intern kommando med ekko "$(<filename)". Tak …

Svar

Værktøjer til håndtering af tekstfiler på unix er grundlæggende hverdagskommandoer:

I unix og linux for at udskrive hele indholdet i filen

cat filename.txt 

eller

more filename.txt 

eller

less filename.txt 

For de sidste par linjer

tail filename.txt 

For første par linjer

head filename.txt 

Svar

Du kan bruge følgende kommando til at vise indhold af en tekstfil.

 cat filename 

Kommentarer

  • For mere information om cat, kør man cat.

Svar

En mulighed er at bruge more

f.eks.more file.txt

Det har dog ikke alle de funktioner, der er tilføjet af less.
Et enkelt eksempel er, at du kan “ikke rulle tilbage i output. Generelt er det blevet overgået med mindre – hvilket blev nævnt i latter, fordi

mindre er mere

Kommentarer

  • God forklaring på, hvorfor mindre var navnet

Svar

Jeg bruger altid $ less "your file here", da det er meget simpelt, giver det en indbygget interaktiv grep kommando, og giver dig en brugervenlig grænseflade, som du kan rulle med piletasterne.

(Den er også inkluderet i næsten alle * nix-systemer)

Kommentarer

  • less er overkill-versionen af more (sammenlign man less med man more), og for mig har den to irriterende funktioner: 1) det skifter til den alternative skærmbuffer, når mindre slutter, den fil, du lige så på, forsvinder 2) ved EOF skal du eksplicit skrive q (jeg ved, der ‘ er en mulighed for dette). Så en af mine første handlinger i et nyt miljø er at indstille export PAGER=/bin/more i min profil og bruge more hele tiden.
  • @ ott–: 1) Prøv -X flag. 2) Prøv flagget -E. less har en more emuleringstilstand. Du kan aktivere det ved at indstille LESS_IS_MORE miljøvariablen. Du kan rulle opad i more emuleringstilstand.
  • Se også: unix.stackexchange.com/questions / 81129 / …
  • Selvom jeg generelt er enig i, at less er alt for- kompliceret. Dens evne til at køre eksterne kommandoer er et perfekt eksempel på dets overkompleksitet.
  • @EvanTeitelman I ‘ Vi har altid fundet grep-funktionaliteten meget nyttig selv, @ott – Jeg finder ud af, at ‘ s emulering af more, og det ‘ s mange ekstra funktioner gør det jobbet meget godt.

Svar

Hvis det er en stor fil, og du vil søge efter en bestemt del, kan du bruge

 cat filename | grep text_to_search -ni 

Du kan også bruge mere interaktiv Vim-editor (eller vi-editor, hvis du ikke har Vim):

 vim filename Or vi filename

Vim / vi er en fantastisk editor, kan også bruges som læser i “Normal Mode” eller ved hjælp af -R option, den har mange funktioner, der hjælper dig med at gennemse filen.

Kommentarer

  • Kortere for vim -R er view. Men husk at det ikke kan lide omdirigeringer, som diskuteret i xargs og vi – “Input er ikke fra en terminal” .
  • tak @manatwork for heads up! Jeg er for nylig begyndt at bruge Vim, og jeg kan godt lide det på grund af dets mange funktioner. Med hensyn til omdirigeringer glemte jeg det, tak for påmindelsen. Fra nu af arbejder jeg på en ekstern VM, hvor jeg bruger ssh uden GUI-interface, derfor er Vim til stor nytte, når enhver anden GUI-editor ikke kan arbejde, at ‘ s hvorfor jeg understregede Vim her.

Svar

Brug cat-kommandoen til at vise indholdet af filnavnet. cat filnavn

Brug vim-kommandoen til at redigere fil. vim filnavn

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *