RSS

Skapa små filer i terminalen

29 Sep

Att skapa och redigera texter i en textredigerare är något som de flesta får upp ögon för direkt när man vill göra något i terminalen. I många fall när man ber om stöd för att åtgärda ett problem, blir man hänvisad till att öppna konfigurationsfiler i terminalen. Men om man nu vill skapa små textfiler lite snabbt eller i ett enkelt skript? De alternativ jag har hittat så här långt är följande.

  • touch
  • cat
  • echo
  • printf
  • omdirigeringar

Det går att växla mellan de här metoderna i samma fil. För att lägga till använder man oftast >, men ska man lägga till mer text måste man använda >>. Man ska bara komma ihåg att det är lätt att skriva > när man menar >> och då skriver man över filen med helt nytt innehåll.

Skapa eller bara röra

Kommandot touch innebär att man bara "rör" vid filen, d v s man vare sig tittar på den eller redigerar den. Om filen redan finns ändrar man tidsstämpeln för senast åtkomst, men om filen inte finns så skapas den. Man gör alltså i övrigt ingenting med filen.

Följande skapar alltså en tom fil.

touch filnamn

Det här är att göra samma sak, men utan att uppdatera filens åtkomst.

>> filnamn

Även det här är möjligt och om filen redan finns så tar det bort innehållet och man börjar på nytt.

> filnamn

EOF- och heredoc-filer

Det vanligaste sättet att använda kommandot cat är att titta på filer. Vad det gör är att snabbt spotta ut innehållet i en fil på skärmen. Vill man hinna med att läsa, då måste man skicka output genom less.

Men om man istället gör tvärtom och omdirigerar innehållet till en tom fil, då kan man istället skapa en fil.

cat > filnamn

När man har angett det här och tryckt retur, öppnas en tom rad och man kan börja skriva sin text. Texten radbryts om den blir för lång, men har den gjort det kan man inte gå tillbaka och redigera sin text. För att lägga till nya rader i själva filen, använder man returtangenten. Man skriver alltså som på en gammal skrivmaskin. För att avsluta gör man en tom rad och trycker Ctrl+d.

Vill man lägga till ytterligare text i en fil skriver man så här.

cat >> filnamn

Du kommer inte att se det du redan har skrivit, men skriv på och gör sedan en tom rad innan du trycker Ctrl+d för att spara till filen.

Ett annat sätt är att använde en end-of-file som avgränsare. Om jag tänker mig att använda ‘foo’ som avgränsare, anger jag först det och när jag är klar skriver jag ‘foo’ ensamt på en rad för att avsluta.

cat doc.txt <<foo
Här kommer min text eller input som kommandot ska ha.
foo

Här måste dock filen redan existera för att det ska fungera.

Ett alternativt sätt är det här. Följande lägger till rader i filen.

cat <<EOF >>filnamn
Här skriver man sin text
och kan bryta rad om man vill
EOF

Se engelska wikipedia för info om here documents och end-of-file.

Eko in i en fil

Ett annat kommando för att visa text är echo. Även här kan man använda kommandot för att skriva text till en fil, man måste bara omdirigare text till ett filnamn.

echo "En kort rad man vill skriva" > filnamn

Om man ska använda citattecken runt det man skriver beror lite på.

På det här sätter kan man sedan lägga till ytterligare text i samma fil.

echo "Lite mera text till filen" >> filnamn

Det man måste se upp med är så att man inte anger bara ett > när man menar två, för då skriver man över det man redan har skrivit.

Vill man ha flera rader kan man använda två sätt. Lägg märke till hur man med ett enkelt citattecken inleder och avslutar texten.

echo 'Rad ett.
Rad två.
Rad tre.' > filnamn

Eller om man grupperar sina kommandon. Även här avgränsas texten med enkelt citattecken.

{
echo 'Grupperad rad 1'
echo 'Grupperad rad 2'
echo 'Grupperad rad 3'
} > filnamn

Skriva data

Ett kommando som nog används mest i skript av olika slag, är printf. För att på ett enkelt sätt skriva text till en fil gör man så här.

printf "En kort rad man vill skriva" > filnamn

Så här långt påminner allt om echo, men här går det att formatera texten lite, t ex med radbrytningar.

printf "En kort snutt man vill skriva\n med radbrytning" > filnamn

Eller så här.

printf '%s\n' 'Första raden.' 'Andra raden.' 'Tredje raden.' > filnamn

Resultatet av ett kommando

Det går att skapa en fil av resultatet av ett kommando eller lägga till i en existerande fil. Om vi t ex vill lägga till datum och tid i början av en fil, gör vi så här.

date > filnamn

Vill man lägga till i en existerande fil blir det så här.

date >> filnamn

Med en heredoc kan man på det här sättet omdirigera output från ett kommando till en fil. Först anger man kommandot, sedan omdirigerar man input till kommandot och till sist en omdirigering till en fil. Obervara att det är tre <-

bc <<< 2+4 >> filnamn

I ett skript kan man lägga input i en variabel som sedan används i skriptet.

 
Lämna en kommentar

Publicerat av på 29 september 2015 i Dator, Gör så här, Terminalen

 

Etiketter: , , , , , ,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

 
%d bloggare gillar detta: