Bir dosyayı çevreleyen PHP etiketleri eklemem gerekiyor. Bunları kullanarak eklemek kolaydır
find . -exec echo "?>" >> '{}' \;
ama nasıl olabilir başa eklemek etiketi <?php?
Bir dosyayı çevreleyen PHP etiketleri eklemem gerekiyor. Bunları kullanarak eklemek kolaydır
find . -exec echo "?>" >> '{}' \;
ama nasıl olabilir başa eklemek etiketi <?php?
Yanıtlar:
sed -i "1s/^/<?php /" file
( -iYerinde düzenleme içindir.)
Daha taşınabilir sürüm:
ed file <<!
1s/^/<?php /
wq
!
sedve yedek bir sonek eklemeye izin veriyor.
-itaşınabilir değildir, sözdizimi uygulamalar arasında farklılık gösterir ve sembolik bağları kırar. Dosyaları düzenlemek için tasarlanmış bir uygulamayı kullanmak daha iyi olur.
Henüz bir yorum bırakamıyorum, ancak hepsini tek bir adımda yapmak için:
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
Bunu perl bir astar ile yapabilirsiniz:
perl -0777 -p -i -e "s/^/hey /g" testfile
-0777Kuvvetler dosya Slurping modu, bu nedenle tüm dosya tek satır olarak okunur. -pdöngü sağlar. -idosyanın yerinde düzenlenmesini sağlar. ^bir satırın başlangıcını gösterir.
$ cp testfile1 testfile; perl -0777 -p -i -e "s/^/hey /g" testfile; diff testfile testfile1
1c1
< hey asdf
---
> asdf
Güncelleme: Yorumlarda belirtildiği gibi, -i.bakyerine kullanarak bir yedek otomatik oluşturmayı seçebilirsiniz -i. Bu, komutunuzdaki hatalarda ek güvenlik sağlar. Argümanı -i yedeklemenin soneki olur.
Bir grup dosyayı güncellerken, komutu ile çalıştırabilir, -i.backup${RANDOM}tüm dosyaların doğru şekilde güncellendiğini kontrol edebilir ve ardından bu uzantıya sahip tüm dosyaları kaldırabilirsiniz.
-ibir eki olmayan bayrak, bu araçlar o okuyucuları uyarın hiçbir yedeği olsun . Birkaç karakter daha ( -i.bak) için, tek astarınızda yazım hatası olması durumunda bir yedek alırsınız. Oldukça basit bir yazım hatası (diyelim ki, -pbayrağı unutmak ) aksi takdirde bütün gününüzü mahvedebilir.
sedakışları düzenlemek içindir - bir dosya akış değildir. edVeya bu amaç için tasarlanmış bir program kullanın ex. -iSeçeneği sedaslında siler ve onu yeniden beri sadece taşınabilir değildir, aynı zamanda anlamsız olduğu, karşılaşabileceğiniz herhangi sembolik kıracak.
for file in foo bar baz; do
ed -s "${file}" << EOF
0a
<?php
.
w
EOF
done
edamaçla nasıl kullanılacağını biliyorsanız , cevabınızda bunu gösterin.
Dizindeki (in bash) her dosyanın sonuna bir şeyler eklemek için yazdıklarınıza bir alternatif :
for FNAME in *
do
echo "?>" >> $FNAME
done
senin findtek astarını sevmeme rağmen :)
$FNAMEolmalı $fname- Kongre tarafından, biz çevre değişkenleri (PAGER, EDİTÖR'ÜN, KABUK, ...) ve iç kabuk değişkenleri yararlanmak (BASH_VERSION RASGELE, ...). Diğer tüm değişken adları en az bir küçük harf içermelidir. Bu sözleşme, çevresel ve dahili değişkenlerin yanlışlıkla geçersiz kılınmasını önler.
Basit bir yol var
echo "startstr$(cat filename)endstring" > filename.new