Yanıtlar:
Çıktıyı bir dosyaya yönlendirmek >>yerine kullanın >:
your_command >> file_to_append_to
Eğer file_to_append_toyoksa, yaratılacaktır.
Misal:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
To appenddosya 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 overwritedosya 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_toBir 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 noclobberadresinden 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 \ndü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.)
echoyeni satırları dizeden kaldırmasıdır. Bir dosyaya satırsonu içeren bir dize nasıl eklersiniz?