Linux cat komutu dosyaya metin yazmak için kullanılabilir mi?


144

Böyle bir şey var:

cat "Some text here." > myfile.txt

Mümkün? Öyle ki, içeriğinin myfile.txtüzerine şu şekilde yazılır:

Some text here.

Bu benim için işe yaramaz, aynı zamanda herhangi bir hata atmaz.

Özellikle cattemelli bir çözümle ilgilenir (vim / vi / emacs vb. Değil). Tüm örnekler çevrimiçi cat, ham metinle değil dosya girişleriyle birlikte kullanılır ...

Yanıtlar:


184

Ne echoyapar:

echo "Some text here." > myfile.txt

13
Bonus: echo "Some text here." >> myfile.txtdosyanın sonuna eklemek için
Jim Aho

6
Metninizde çift tırnak kullanmanız gerekiyorsa, her şeyi tek tırnak içine alın. Bu, .json ve benzerleri için yararlıdır, örneğinecho '{"info1": "123456"}' > info.json
bkd

165

Bir Here belgesi arıyorsunuz gibi görünüyor

cat > outfile.txt <<EOF
>some text
>to save
>EOF

Linux Kernel 2.6.32 centos 6'da >beklenen çıktıyı almak için karakterleri atlamak zorunda kaldım .
ecoe

4
>Karakterler varsayılan değerini temsil $PS2; otomatik olarak görünürler ve yazılmaları amaçlanmaz. İçin farklı bir değeriniz varsa $PS2, bunun yerine bu görünür.
gbrener

46

İşte başka bir yol -

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

10

CPU ayarlarımı güncellemek için dosyalara ham metin yazmak için aşağıdaki kodu kullanıyorum. Umarım bu yardımcı olur! Senaryo:

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

Bu, "script" metnini yukarıdaki komut dosyasında belirtilen iki dosyaya yazar. Bu örnek, dosyalardaki eski verilerin üzerine yazılır.

Bu kod bir dosya (cpu_update.sh) olarak kaydedilir ve çalıştırılabilir olmasını sağlamak için:

chmod +x cpu_update.sh

Bundan sonra, komut dosyasını aşağıdakilerle çalıştırabilirsiniz:

./cpu_update.sh

Dosyadaki eski verilerin üzerine yazmak istemiyorsanız, çıkışı kapatın

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

ile

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

Bu, dosyada bulunan diğer verileri kaldırmadan metninizi dosyanın sonuna ekler.


8
cat > filename.txt

metin kullanımını kaydetmek için EOF'a kadar metni girin: ctrl + d

bu .txt dosyasını okumak istiyorsanız

cat filename.txt

ve bir şey .txt zorunlu değildir, referansınız içindir.


7

Metin dosyası için:

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

PHP dosyası için:

cat > test.php <<PHP
<?php
echo "Test";
echo \$var;
?>
PHP

5

Bunu şu şekilde de yapabilirsiniz:

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

Bunu kullanmanın birçok yolu olduğuna inanıyorum.


4

Aşağıdakileri kullanarak ortam değişkenleriyle çok satırlı metin yazın echo:

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


3

Cat kullanarak dosyaya metin yazmanın başka bir yolu da böyle bir şey olurdu

cat >file.txt <<< Write something here

Bu komut, bir komutun bir çıktısını bir dosyaya yazmaya çalıştığınızda gerçekten yararlıdır. Örneğin cat > docker-inspect.txt <<< liman işçisi incelemek resmi ``
Prasanth Ganesan

2

cata'nın ardından bir |dosyaya yazmak için de kullanılabilir , yani boru bir veri akışını besler


1

Sorununuzun çözümü:

echo "Bazı Metin Buraya Gitiyor"> dosyaadı.txt

Ancak bir dosyanın çıktısını başka bir dosyaya yeniden yönlendirmek istiyorsanız veya bir dosyanın çıktısını başka bir dosyaya eklemek istiyorsanız cat komutunu kullanabilirsiniz:

cat dosyaadı> newfile - Dosya adı çıktısını yeni dosyaya yeniden yönlendirmek için

cat dosyaadı >> newfile - Dosya adının çıktısını yeni dosyaya eklemek için

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.