Jag vill visa innehållet i en textfil på kommandoraden. Filen innehåller endast 5-6 tecken. Finns det ett enkelt sätt att göra detta?
Svar
Använda cat
Eftersom din fil är kort kan du använda cat
.
cat filename
Använda less
Om du måste visa innehållet i en längre fil kan du använda en personsökare såsom less
.
less filename
Du kan göra att less
beter sig som cat
när de anropas på små filer och beter sig normalt genom att skicka det till -F
och -X
flaggor.
less -FX filename
Jag har ett alias för less -FX
. Du kan göra en själv så:
alias aliasname="less -FX"
Om du lägger till alias i din skalkonfiguration kan du använda den för alltid.
Med od
Om din fil innehåller konstiga eller outskrivbara tecken kan du använda od
för att undersöka tecknen. Till exempel
$ 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
Även om alla använder cat filename
för att skriva ut en filtext till standardutgången är första syftet con katt enating. Från kattens mansida:
cat – sammanfoga filer och skriva ut på standardutdata
Nu är cat bra för utskrift av filer men det finns alternativ:
echo "$(<filename)" or printf "%s" "$(<filename)"
( )
värdet på ett uttryck, i detta fall innehållet i filnamn som sedan utökas med $
för echo
eller printf
.
Uppdatering:
< filename
Detta gör precis vad du vill och är lätt att komma ihåg.
Här är ett exempel som låter dig välja en fil i en meny och sedan skriva ut 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
För ytterligare information läsning:
BashPitfalls – kattfil | sed s / foo / bar /> fil
Bash-referens – omdirigering
Kommentarer
- Din uppdatering: ”
< filename
är exakt wh som du vill, … ” är vilseledande. Sammantaget, även om detta är en intressant diskussion om alternativ, tycker jag attcat
är enklare. - Bare
< filename
gör det inte visa innehållet i filen, mencat filename
gör det. - Du kan också använda
tee < filename
. - +1 för
echo "$(<filename)"
basism. Inte tillräckligt med det här. - Att ’ är en bra idé för att använda Linux Internt kommando med eko
"$(<filename)"
. Tack …
Svar
Verktyg för att hantera textfiler på unix är grundläggande, vardagliga kommandon:
I unix och linux för att skriva ut hela innehållet i filen
cat filename.txt
eller
more filename.txt
eller
less filename.txt
För de sista raderna
tail filename.txt
För första raderna
head filename.txt
Svar
Du kan använda följande kommando för att visa innehåll av en textfil.
cat filename
Kommentarer
- För mer information om
cat
, körman cat
.
Svar
Ett alternativ är att använda more
t.ex.more file.txt
Det har dock inte alla funktioner som lagts till av less
.
Ett enkelt exempel är att du kan inte bläddra uppåt i utgången. I allmänhet har det överträffats av mindre – vilket blev skämt eftersom
mindre är mer
Kommentarer
- Trevlig förklaring till varför mindre var namnet
Svar
Jag använder alltid $ less "your file here"
, eftersom det är väldigt enkelt, ger en inbyggd interaktiv grep
kommando och ger dig ett lättanvänt gränssnitt som du kan bläddra med piltangenterna.
(Det ingår också i nästan alla * nix-system)
Kommentarer
-
less
är den överdrivna versionen avmore
(jämförman less
medman more
), och för mig har den två irriterande funktioner: 1) det växlar till den alternativa skärmbufferten, när mindre avslutas, försvinner filen du just tittade 2) vid EOF måste du uttryckligen skrivaq
(jag vet, där ’ är ett alternativ för detta). Så en av mina första åtgärder i en ny miljö är att ställa inexport PAGER=/bin/more
i min profil och användamore
hela tiden. - @ ott–: 1) Testa flaggan
-X
. 2) Testa flaggan-E
.less
har ettmore
-emuleringsläge. Du kan aktivera det genom att ställa inLESS_IS_MORE
miljövariabel. Du kan bläddra uppåt imore
emuleringsläge. - Se även: unix.stackexchange.com/questions / 81129 / …
- Även om jag i allmänhet håller med om att
less
är alltför- komplicerad. Dess förmåga att köra externa kommandon är ett perfekt exempel på dess överkomplexitet. - @EvanTeitelman I ’ Vi har alltid haft grep-funktionen mycket användbar själv, @ott – Jag tycker att på grund av det ’ s emulering av
more
, och det ’ s många andra funktioner gör det jobbet mycket bra.
Svar
Om det är en stor fil, och du vill söka efter en viss del, kan du använda
cat filename | grep text_to_search -ni
Du kan också använda mer interaktiv Vim-editor (eller vi-editor om du inte har Vim):
vim filename Or vi filename
Vim / vi är en bra redigerare, kan också användas som läsare i ”Normal Mode” eller med alternativet -R, det har många funktioner som hjälper dig att bläddra igenom filen.
Kommentarer
- Kortare för
vim -R
ärview
. Men kom ihåg att det inte gillar omdirigeringar, som diskuteras i xargs och vi – ”Inmatningen kommer inte från en terminal” . - tack @manatwork för heads up! Jag har nyligen börjat använda Vim och jag gillar det på grund av dess många funktioner. När det gäller omdirigeringar glömde jag bort det, tack för påminnelsen. Från och med nu arbetar jag på en fjärr-VM, där jag använder ssh utan GUI-gränssnitt, därför är Vim till stor nytta, när någon annan GUI-redigerare inte kan fungera, att ’ s varför jag betonade Vim här.
Svar
Använd cat-kommandot för att visa innehållet i filnamnet. kattfilnamn
Använd vim-kommandot för att redigera filen. vim-filnamn
sed -n l file
kan vara användbart.less
några tydliga fördelar jämfört med andra personsökarprogram sompg
, eller går det bara ner till personliga preferenser?less
har mer funktioner änpg
. Ta en titt påless(1)
ochpg(1)
manpages. Det finns också andra personsökare. Ta en titt på unix.stackexchange.com/questions/81129/… .less
är förmodligen den mest använda personsökaren men vilken du använder kommer till personliga preferenser.more
ochmost
!