Come creare un semplice file .txt (testo) usando il terminale? [chiuso]


77

Sto solo cercando di rivedere i comandi di base del terminale. Detto questo, come posso creare un file di testo usando solo il terminale?


Sebbene la domanda sia davvero troppo ampia, un rapido tutorial (vim, editor, reindirizzamento dei comandi della shell e così via) potrebbe essere utile per il futuro, in particolare insieme al conteggio delle visualizzazioni e ai punteggi di voto del post e delle risposte. Forse sarebbe molto utile come post wiki della community.
user259412

Risposte:


106

Non è possibile utilizzare un terminale per creare un file. È possibile utilizzare un'applicazione in esecuzione in un terminale. Basta richiamare qualsiasi editor non-GUI ( emacs -nw, joe, nano, vi, vim, ...).

Se intendevi usare la riga di comando, stai chiedendo come creare un file usando la shell. Vedi Qual è la differenza esatta tra un 'terminale', una 'shell', una 'tty' e una 'console'?

Il modo di base per creare un file con la shell è con il reindirizzamento dell'output . Ad esempio, il comando seguente crea un file chiamato foo.txtcontenente la rigaHello, world.

echo 'Hello, world.' >foo.txt

Se vuoi scrivere più righe, qui ci sono alcune possibilità. È possibile utilizzare printf.

printf '%s\n' 'First line.' 'Second line.' 'Third line.' >foo.txt

È possibile utilizzare una stringa letterale contenente nuove righe.

echo 'First line.
Second line.
Third line.' >foo.txt

o

echo $'First line.\nSecond line.\nThird line.' >foo.txt

Un'altra possibilità è quella di raggruppare i comandi.

{
  echo 'First line.'
  echo 'Second line.'
  echo 'Third line.'
} >foo.txt

Sulla riga di comando, puoi farlo più direttamente con cat. Reindirizza il suo output sul file e digita l'input riga per riga sullo catstandard input. Premere Ctrl+ Dall'inizio della riga per indicare la fine dell'input.

$ cat> foo.txt 
Prima riga. 
Seconda linea. 
Terza riga.
Ctrl+D

In uno script useresti un documento qui per ottenere lo stesso effetto:

cat <<EOF >foo.txt
First line.
Second line.
Third line.
EOF

Se vuoi solo creare un file vuoto, puoi usare il touchcomando: crea il file se non esiste e aggiorna solo la data dell'ultima modifica se esiste.

touch foo.txt

Equivalentemente:

>>foo.txt

vale a dire aperto foo.txtper l'aggiunta, ma scrivere 0 byte su di esso - questo crea il file ma non lo modifica. A differenza di touchciò, questo non aggiorna la data dell'ultima modifica del file se esiste già.

Per creare un file vuoto e rimuovere il contenuto del file se il file esiste già, è possibile utilizzare

>foo.txt

13
touch ~/Desktop/something.txt

Questo creerà un txtfile vuoto .

O

echo "Hello" > ~/Desktop/somethingelse.txt

Questo creerà un txtfile che dice "Ciao".

nano ~/Desktop/anotherfile.txt

Si aprirà ~/Desktop/anotherfile.txtin nano, o se non esiste, si creerà e aprirlo in nano.

Lo stesso può essere fatto semplicemente sostituendo nanocon emacso vime utilizzerà emacso viminvece dinano


Da ricordare anche catcon <<e parlare >>.
o11c,

Non reinventiamo la ruota. <<e >>sono discussi in Quali sono gli operatori di controllo e reindirizzamento della shell?
G-Man,

9

Tutto ciò che serve per creare un file vuoto è:

> my.txt

2
In alcune shell (zsh, tcsh, ...) :> my.txtè necessario almeno . :è un comando vuoto.
jofel,

{echo 'Prima riga.' echo "Seconda riga". echo "Terza riga". }> foo.txt non funziona
Waterfr Villa

2

È possibile utilizzare il programma di modifica nano, vi o emacs per creare file a livello di terminale. Se stai usando il sistema x windows dovrai dire al tuo sistema di non usare il programma nella GUI; ma comunque, userò emacs come esempio.

Dalla bash; genere:

 emacs filename.txt (press enter) - it will create an empty file with the filename specified "filename.txt". It will save "filename.txt" from which ever 
directory type in "emacs filename.txt" command.

tenere presente che in tutto il sistema UNIX VI viene fornito; emacs no, dovrai installare emacs. Nano d'altra parte è più popolare; nel caso in cui ciò non risponda, significa che quando si "nano nomefile.ext" e non succede nulla, è necessario installarlo.

una volta emesso vi nomefile.txt molto probabilmente finirai per creare un nuovo file. Dovresti cercare vi, emacs o nano come utilizzare su google prima di iniziare. Come scrivere un file, modificarlo, usare i suoi strumenti per cercare e sostituire il testo è diverso in quei programmi di modifica. Mi piace emacs tra tutte le scelte, ma troverai sviluppatori che sono ossessionati da o preferiscono vi e nano


per nessuna opzione dell'editor grafico in emacs è "emacs nomefile.txt -nw" dove "-nw" significa nessuna finestra utente grafica, nessuna finestra
unixmiah

2

Qualcosa di utile quando sei bloccato e devi creare un file di testo multilinea sulla riga di comando è qualcosa del genere:

# cat <<'EOF' > textfile
> This "should"
> prove useful, 'maybe'.
> EOF
# cat textfile 
This "should"
prove useful, 'maybe'.

È possibile sostituire catun altro comando, ad esempio grepe un modello , e fare in modo che grep faccia il proprio lavoro sull'input e questo verrebbe emesso su file nello stesso modo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.