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
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 jegcat
er enklere. - Bare
< filename
gør det ikke vis indholdet af filen, mencat 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ørman 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 afmore
(sammenlignman less
medman 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 skriveq
(jeg ved, der ‘ er en mulighed for dette). Så en af mine første handlinger i et nyt miljø er at indstilleexport PAGER=/bin/more
i min profil og brugemore
hele tiden. - @ ott–: 1) Prøv
-X
flag. 2) Prøv flagget-E
.less
har enmore
emuleringstilstand. Du kan aktivere det ved at indstilleLESS_IS_MORE
miljøvariablen. Du kan rulle opad imore
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
erview
. 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
sed -n l file
kan være nyttigt.less
nogen klare fordele i forhold til andre personsøgerprogrammer sompg
, eller koger det bare ned til personlig præference?less
har mere funktioner endpg
. Se påless(1)
ogpg(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.more
ogmost
!