Czy polecenie linux cat może być używane do zapisywania tekstu do pliku?

143

Czy coś takiego:

cat "Some text here." > myfile.txt

Możliwy? Taki, że zawartość myfile.txtzostanie teraz nadpisana na:

Some text here.

U mnie to nie działa, ale też nie generuje żadnych błędów.

Szczególnie zainteresowany catrozwiązaniem opartym na systemie a (nie vim / vi / emacs itp.). Wszystkie przykłady online są catużywane w połączeniu z danymi wejściowymi plików, a nie tekstem surowym ...

IAmYourFaja
źródło

Odpowiedzi:

184

To właśnie echooznacza:

echo "Some text here." > myfile.txt
Carl Norum
źródło
13
Bonus: echo "Some text here." >> myfile.txtdopisać na końcu pliku
Jim Aho
6
Jeśli chcesz użyć podwójnych cudzysłowów w swoim tekście, umieść całość w pojedynczych cudzysłowach. Jest to przydatne w przypadku .json i podobnych, np.echo '{"info1": "123456"}' > info.json
bkd
164

Wygląda na to, że szukasz dokumentu tutaj

cat > outfile.txt <<EOF
>some text
>to save
>EOF
gbrener
źródło
W Linuksie Kernel 2.6.32 centów 6 musiałem pominąć >znaki, aby uzyskać oczekiwany wynik.
ecoe
4
Te >znaki reprezentują wartość domyślną $PS2; pojawiają się automatycznie i nie powinny być wpisywane. Jeśli masz inną wartość dla $PS2, pojawi się ona zamiast.
gbrener
46

Oto inny sposób -

cat > outfile.txt
>Enter text
>to save press ctrl-d
stolen_leaves
źródło
10

Używam następującego kodu, aby zapisać surowy tekst do plików, aby zaktualizować ustawienia procesora. Mam nadzieję, że to pomoże! Scenariusz:

#!/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

Spowoduje to zapisanie tekstu „performance” do dwóch plików wymienionych w powyższym skrypcie. Ten przykład zastępuje stare dane w plikach.

Ten kod jest zapisywany jako plik (cpu_update.sh) i aby był wykonywalny:

chmod +x cpu_update.sh

Następnie możesz uruchomić skrypt za pomocą:

./cpu_update.sh

Jeśli nie chcesz nadpisywać starych danych w pliku, wyłącz się

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

z

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

Spowoduje to dołączenie tekstu na końcu pliku bez usuwania innych danych już znajdujących się w pliku.

Arahkun
źródło
8
cat > filename.txt

wprowadź tekst do EOF, aby zapisać tekst użyj: ctrl + d

jeśli chcesz przeczytać ten plik .txt użyj

cat filename.txt

i jedna rzecz .txt nie jest obowiązkowa, jest w celach informacyjnych.

user5260939
źródło
7

Dla pliku tekstowego:

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

Dla pliku PHP:

cat > test.php <<PHP
<?php
echo "Test";
echo \$var;
?>
PHP
Le Khiem
źródło
5

Ty też możesz to zrobić w ten sposób:

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

Uważam, że można go używać na wiele sposobów.

JuanToroMarty
źródło
4

Napisz tekst wielowierszowy ze zmiennymi środowiskowymi za pomocą echo:

echo -e "
Home Directory: $HOME \n
hello world 1 \n
hello world 2 \n
line n... \n
" > file.txt 
nsantana
źródło
3

po prostu echo rurociągu z cat

Na przykład

echo write something to file.txt | cat > file.txt
Giannis Mpountouridis
źródło
3

Innym sposobem zapisania tekstu do pliku za pomocą cat byłoby coś takiego

cat >file.txt <<< Write something here
Giannis Mpountouridis
źródło
To polecenie jest naprawdę przydatne, gdy próbujesz zapisać wynik polecenia do pliku. Na przykład cat > docker-inspect.txt <<< docker inspect image` ``
Prasanth Ganesan
2

catmoże być również używany po a, |aby zapisać do pliku, tj. przesyła strumień danych do kota

Leahcim
źródło
1

Rozwiązanie Twojego problemu to:

echo "Tutaj jest jakiś tekst"> nazwa_pliku.txt

Ale możesz użyć polecenia cat, jeśli chcesz przekierować wyjście pliku do innego pliku lub jeśli chcesz dołączyć wynik pliku do innego pliku:

cat filename> newfile - Aby przekierować wyjście nazwy pliku do nowego pliku

cat filename >> newfile - Aby dołączyć wyjście nazwy pliku do nowego pliku

Vipul Sharma
źródło