Comando per aggiungere la riga a un file di testo senza aprire un editor


147

Supponendo di avere una riga che voglio aggiungere a un file senza aprire un editor.

Come potrei aggiungere questa riga

alias list='ls -cl --group-directories-first'

a questo file

config.fish

Risposte:


237

È possibile aggiungere una riga di testo a un file utilizzando l' >>operatore:

echo "hello world" >> my_file.txt

o nel tuo caso

echo "alias list='ls -cl --group-directories-first'" >> config.fish

Si prega di prendere nota dei diversi tipi di virgolette .


25
Uso l'eco da solo, ma fai attenzione, se ne specifichi solo uno, >il file verrà troncato, non aggiunto. per un comando più sicuro puoi usare sed:sed -i '$a hello world' filename
inverti il

12
spiegazione: -iaggiornerà il file (altrimenti stamperà semplicemente il risultato su stdout), $è regex che corrisponderà alla fine del file e aaggiunge il seguente testo al nome del file.
inverti il

echo "hello world" >> my_file.txtnon crea una nuova ultima riga con HW, ma la aggiunge alla stringa dell'ultima riga.
Timo,

Cos'è HW@timo?
settimane

Forse "Hello World" @ 7wp :) È echociò che aggiunge l'interruzione di riga (rendendola una linea anziché solo un mucchio di personaggi). È possibile disattivare l'interruzione di linea alla fine con -n.
Stefano Palazzo

3

Esistono molti metodi per aggiungere file senza aprire editor di testo, in particolare tramite più utility di elaborazione testi disponibili in Ubuntu.

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

1

Aggiungendo alla risposta di Stefano , puoi anche usare cat:

  • Usando un heredoc:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF
    

    <<'EOF'significa "prendi quanto segue come input, fino a raggiungere una linea che è giusta EOF". Le virgolette significano prendere l'input letteralmente.

  • O inserendo la linea su stdin:

    $ cat >> config.fish

    Quindi incolla o digita la riga, premi Enterper passare a una nuova riga, quindi premi Ctrl + D per segnare la fine.

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.