O comando linux cat pode ser usado para escrever texto em arquivo?

143

É algo como isto:

cat "Some text here." > myfile.txt

Possível? De modo que o conteúdo de myfile.txtagora seja sobrescrito para:

Some text here.

Isso não funciona para mim, mas também não gera erros.

Especificamente interessado em uma catsolução baseada em (não vim / vi / emacs, etc.). Todos os exemplos online são catusados ​​em conjunto com entradas de arquivo, não texto bruto ...

IAmYourFaja
fonte

Respostas:

184

É o que echofaz:

echo "Some text here." > myfile.txt
Carl Norum
fonte
13
Bônus: echo "Some text here." >> myfile.txtanexar ao final do arquivo
Jim Aho
6
Se você precisar usar aspas duplas no texto, inclua tudo entre aspas simples. Isso é útil para .json e echo '{"info1": "123456"}' > info.json
afins
164

Parece que você está procurando um documento Here

cat > outfile.txt <<EOF
>some text
>to save
>EOF
gbrener
fonte
No Linux kernel 2.6.32 centos 6, tive que omitir os >caracteres para obter a saída esperada.
eCoE
4
Os >caracteres representam o valor padrão de $PS2; eles aparecem automaticamente e não devem ser digitados. Se você tiver um valor diferente para $PS2, isso será exibido.
precisa saber é o seguinte
46

Aqui está outra maneira -

cat > outfile.txt
>Enter text
>to save press ctrl-d
stolen_leaves
fonte
10

Eu uso o código a seguir para escrever texto bruto em arquivos, para atualizar minhas configurações de CPU. Espero que isso ajude! Roteiro:

#!/bin/sh

cat > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <<EOF
performance
EOF

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
performance
EOF

Isso grava o texto "desempenho" nos dois arquivos mencionados no script acima. Este exemplo substitui dados antigos em arquivos.

Este código é salvo como um arquivo (cpu_update.sh) e para torná-lo executável:

chmod +x cpu_update.sh

Depois disso, você pode executar o script com:

./cpu_update.sh

Se você não deseja substituir os dados antigos no arquivo, desative

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

com

cat >> /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

Isso anexará seu texto ao final do arquivo sem remover outros dados que já estão no arquivo.

Arahkun
fonte
8
cat > filename.txt

insira o texto até EOF para salvar o texto: ctrl + d

se você quiser ler esse arquivo .txt, use

cat filename.txt

e uma coisa .txt não é obrigatória, é para sua referência.

user5260939
fonte
7

Para arquivo de texto:

cat > output.txt <<EOF
some text
some lines
EOF

Para arquivo PHP:

cat > test.php <<PHP
<?php
echo "Test";
echo \$var;
?>
PHP
Le Khiem
fonte
5

Você pode fazer assim também:

user@host: $ cat<<EOF > file.txt
$ > 1 line
$ > other line
$ > n line
$ > EOF
user@host: $ _

Eu acredito que existem muitas maneiras de usá-lo.

JuanToroMarty
fonte
4

Escreva texto de várias linhas com variáveis ​​de ambiente usando echo:

echo -e "
Home Directory: $HOME \n
hello world 1 \n
hello world 2 \n
line n... \n
" > file.txt 
nsantana
fonte
3

simplesmente encanar eco com gato

Por exemplo

echo write something to file.txt | cat > file.txt
Giannis Mpountouridis
fonte
3

Outra maneira de escrever texto em arquivo usando cat seria algo como isto

cat >file.txt <<< Write something here
Giannis Mpountouridis
fonte
Este comando é realmente útil quando você está tentando gravar uma saída de um comando em um arquivo. Por exemplo, o cat > docker-inspect.txt <<< docker inspeciona a imagem ``
Prasanth Ganesan
2

cattambém pode ser usado depois de a |para gravar em um arquivo, ou seja, o feed de pipe gera um fluxo de dados

Leahcim
fonte
1

A solução para o seu problema é:

eco "Algum texto aparece aqui"> filename.txt

Mas você pode usar o comando cat se desejar redirecionar a saída de um arquivo para outro arquivo ou se desejar anexar a saída de um arquivo a outro arquivo:

cat filename> newfile - Para redirecionar a saída do nome do arquivo para newfile

nome do arquivo cat >> newfile - Para acrescentar a saída do nome do arquivo ao newfile

Vipul Sharma
fonte