Yanıtlar:
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
Esasen, istediğiniz herhangi bir metni dosyaya dökebilirsiniz. CTRL-D, girişi sonlandıran ve sizi kabuğa geri döndüren bir dosya sonu sinyali gönderir.
sudo !!- bu, son komutu sudobaşa eklenmiş olarak çalıştırıyor . Geçenlerde bunun nanoetc ile de çalıştığını öğrendim (yanlışlıkla nano nano auth...)
!!önce kullanmadım , harika. Sık sık böyle şeyler yapıyorum cat /var/log/apache/error.logve izin verilmiyor. Bu aynı zamanda geçmişten bir id ile de yapılabilir, örneğin sudo !1419bu, komutu 1419sudo olarak geçmişte satırda çalıştıracaktır .
Peki ya:
echo "hello" >> <filename>
Kullanılması >>kullanırken, dosyanın sonuna veri ekler operatörü >mevcut ise dosyanın içeriğini üzerine yazacaktır.
printfAynı şekilde de kullanabilirsiniz :
printf "hello" >> <filename>
Yukarıdakileri kullanmanın tehlikeli olabileceğini unutmayın. Örneğin, halihazırda bir dosyanız varsa ve dosyanın sonuna veri eklemeniz gerekiyorsa ve dosyadaki son >tüm verileri eklemeyi unutursanız , dosyadaki tüm veriler yok edilir. Bu davranışı, noclobberdeğişkeni aşağıdaki şekilde ayarlayarak değiştirebilirsiniz .bashrc:
set -o noclobber
Şimdi yapmaya çalıştığınızda echo "hello" > file.txtbir uyarı mesajı alacaksınız cannot overwrite existing file.
Dosyaya yazmaya zorlamak için şimdi özel sözdizimini kullanmanız gerekir:
echo "hello" >| <filename>
Ayrıca, varsayılan echoolarak, -nbayrak kullanılarak bastırılabilecek bir sondaki yeni satır karakteri eklediğini de bilmelisiniz :
echo -n "hello" >> <filename>
Referanslar
cat, ancak >>bunun yerine kullanmaya dikkat etsen iyi olur >!
sudo rm -r /=)
sudo rm -r /daha sudo rm -rf /! ^ _ ^ İle mevcut bir dosyanın içeriğinin üzerine yazmadan önce onay isteyecek bir işaret var mı >? Bunu her zaman böyle bir bayrağı kullanmak için takma ad, iyi bir fikir gibi görünüyor.
set -o noclobbersenin içinde .bashrcözel bir sözdizimi kullanmadan sonra varolan bir dosyanın üzerine edemezecho "hello" >| <filename>
Diğer olası yol şudur:
echo "text" | tee -a filename >/dev/null
-aDosyanın sonuna ekler.
Gerekirse sudokullanın:
echo "text" | sudo tee -a filename >/dev/null
>/dev/nullUç önler "metin" adresinden konsolda gösterilebilir.
Kabul edilen cevaba kadar takip edin.
Bunu bir komut dosyasında kullanıyorsanız sonu belirlemek için CTRL-D dışında bir şeye ihtiyacınız vardır . Bunun yerine şunu deneyin:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
Bu, belirtilen dosyaya metin ekleyecektir ("EOF" dahil değil).
Bu bir kullanır burada belgeyi (veya bir yorumlu metin) .
Bununla birlikte, belirtilen dosyaya eklemek için sudo'ya ihtiyacınız varsa, doğrudan komut satırına yazıyorsanız, G / Ç yeniden yönlendirmesi nedeniyle bir yorum yazarken sorun yaşarsınız.
Bu varyasyon, doğrudan komut satırına yazarken çalışacaktır:
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
Veya teebunun yerine, heredocu cat ile kullanırken görülen komut satırı sudo sorununu önlemek için kullanabilirsiniz :
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
cat << 'EOF' >ve cat << 'EOF' >>eklemeyi bilmiyordum ! Teşekkürler