Yanıtlar:
Çıktıyı bir dosyaya yönlendirmek >>
yerine kullanın >
:
your_command >> file_to_append_to
Eğer file_to_append_to
yoksa, yaratılacaktır.
Misal:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
To append
dosya kullanımı >>
echo "hello world" >> read.txt
cat read.txt
echo "hello siva" >> read.txt
cat read.txt
o zaman çıktı
hello world # from 1st echo command
hello world # from 2nd echo command
hello siva
To overwrite
dosya kullanımı >
echo "hello tom" > read.txt
cat read.txt
o zaman dışarı koymak
hello tom
>> işlecini kullanabilirsiniz. Bu, bir komuttan metin dosyasının sonuna veri ekler.
Bunu test etmek için koşmayı deneyin:
echo "Hi this is a test" >> textfile.txt
Bunu birkaç kez yapın ve çalıştırın:
cat textfile.txt
Metninizin, textfile.txt dosyasına birkaç kez eklendiğini göreceksiniz.
command >> file_to_append_to
Bir dosyaya eklemek için kullanın .
Örneğin echo "Hello" >> testFile.txt
DİKKAT: yalnızca tek bir >
dosya kullanırsanız, dosyanın içeriğinin üzerine yazarsınız. Hiç olmamasını sağlamak için, ekleyebilirsiniz set -o noclobber
adresinden Müşteri .bashrc
.
Bu command > file_to_append_to
, varolan bir dosyaya yanlışlıkla yazarsanız, dosyanın zaten var olduğunu size bildirmesini sağlar. Örnek hata mesajı:file exists: testFile.txt
Böylece, kullandığınızda >
varolan bir dosyanın üzerine yazmanıza değil, yalnızca yeni bir dosya oluşturmanıza izin verir.
>>
Bir dosyaya metin eklemek için işleci kullanın .
Kullanımı tee seçeneği ile -a (--append) bir kez ve ayrıca kullanımı anda birden fazla dosya eklenecek sağlayan sudo (korumalı dosyalara eklerken çok yararlı). Bunun yanı sıra, tüm kabuklar> ve >> operatörlerini desteklemediğinden, bash dışında başka mermiler kullanmanız ilginçtir.
echo "hello world" | sudo tee -a output.txt
Bu konu tee hakkında iyi cevaplara sahip
tüm soru için:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
bu, o.txt dosyasına 720 satır (30 * 24) ekler ve sonra dosyayı geçerli tarihe göre yeniden adlandırır.
Yukarıdakileri her saat cron ile çalıştırın veya
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
Yankı yerine printf kullanırım çünkü daha güvenilirdir ve yeni satır gibi biçimlendirmeyi \n
düzgün şekilde işler .
Bu örnek, önceki örneklerde ekoya benzer bir çıktı üretir:
printf "hello world" >> read.txt
cat read.txt
hello world
Bununla birlikte, bu örnekte printf yerine echo yazacak olsaydınız, echo \ n bir karakter dizisi gibi davranır, böylece niyet yoksayılır
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
Örneğin dosyanız şunları içerir:
1. mangesh@001:~$ cat output.txt
1
2
EOF
Dosyanın sonuna eklemek istiyorsanız ----> 'metin' >> 'dosyaadı' arasındaki boşlukları hatırlayın
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
Ve dosyanın içeriğinin üzerine yazmak için:
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write
cat
... tamamen tuhaf. (Standart çıktıyı bir dosyaya yeniden yönlendirdiğiniz için boştur.)
echo
yeni satırları dizeden kaldırmasıdır. Bir dosyaya satırsonu içeren bir dize nasıl eklersiniz?