Comando para acrescentar linha a um arquivo de texto sem abrir um editor


147

Supondo que eu tenho uma linha que eu quero adicionar a um arquivo sem abrir um editor.

Como eu poderia acrescentar esta linha

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

para este arquivo

config.fish

Respostas:


237

Você pode anexar uma linha de texto a um arquivo usando o >>operador:

echo "hello world" >> my_file.txt

ou no seu caso

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

Por favor, tome nota dos diferentes tipos de citações .


25
Eu mesmo uso eco, mas tenha cuidado, se você especificar apenas um >, o arquivo truncará, não acrescentará. Para um comando mais seguro, você pode usar o sed:sed -i '$a hello world' filename
inverter

12
explicação: -iatualizará o arquivo (caso contrário, apenas imprimirá o resultado em stdout), $é uma expressão regular que corresponderá ao final do arquivo e aanexará o seguinte texto ao nome do arquivo.
inverter

echo "hello world" >> my_file.txtnão cria uma nova última linha com HW, mas a adiciona à string da última linha.
Timo

O que é o HW@timo?
7wp 03/07/19

Talvez "Hello World" @ 7wp :) É echoisso que adiciona a quebra de linha (tornando-a uma linha em oposição a apenas um monte de caracteres). Você pode desativar a quebra de linha no final com -n.
Stefano Palazzo

3

Existem muitos métodos de anexar arquivos sem abrir editores de texto, principalmente por meio de vários utilitários de processamento de texto disponíveis no 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

Adicionando a resposta de Stefano , você também pode usar cat:

  • Usando um heredoc:

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

    <<'EOF'significa "tome o seguinte como entrada, até chegar a uma linha que é justa EOF". As aspas significam receber a entrada literalmente.

  • Ou introduzindo a linha no stdin:

    $ cat >> config.fish

    Em seguida, cole ou digite a linha, pressione Enterpara ir para uma nova linha e pressione Ctrl + D para marcar o final.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.