আমাকে কোনও ফাইলের চারপাশে পিএইচপি ট্যাগ যুক্ত করতে হবে। এগুলি ব্যবহার করে যুক্ত করা সহজ
find . -exec echo "?>" >> '{}' \;
তবে আমি ট্যাগটি কীভাবে প্রেন্ডিং করতে পারি <?php
?
আমাকে কোনও ফাইলের চারপাশে পিএইচপি ট্যাগ যুক্ত করতে হবে। এগুলি ব্যবহার করে যুক্ত করা সহজ
find . -exec echo "?>" >> '{}' \;
তবে আমি ট্যাগটি কীভাবে প্রেন্ডিং করতে পারি <?php
?
উত্তর:
sed -i "1s/^/<?php /" file
( -i
স্থানটিতে সম্পাদনের জন্য এটি)
আরও বহনযোগ্য সংস্করণ:
ed file <<!
1s/^/<?php /
wq
!
sed
এবং এটি ব্যাকআপ প্রত্যয় যুক্ত করতে দেয়।
-i
পোর্টেবল নয়, সিনট্যাক্স বাস্তবায়নের মধ্যে পৃথক হয় এবং এটি সিমলিংকগুলি ভেঙে দেয়। প্রকৃতপক্ষে ফাইলগুলি সম্পাদনা করার জন্য ডিজাইন করা একটি অ্যাপ্লিকেশন ব্যবহার করা আপনার পক্ষে আরও ভাল।
আমি এখনও কোনও মন্তব্য করতে পারছি না, তবে এক পদক্ষেপে সব করতে:
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
আপনি পার্ল ওয়ান-লাইনার দিয়ে এটি করতে পারেন:
perl -0777 -p -i -e "s/^/hey /g" testfile
-0777
বাহিনী ফাইল-slurping মোড, যাতে সমগ্র ফাইলটিতে একটি লাইন হিসেবে পড়া হয়। -p
লুপিং সক্ষম করে। -i
ফাইলের স্থানের সম্পাদনা সক্ষম করে। ^
একটি রেখার সূচনা নির্দেশ করে।
$ cp testfile1 testfile; perl -0777 -p -i -e "s/^/hey /g" testfile; diff testfile testfile1
1c1
< hey asdf
---
> asdf
আপডেট: মন্তব্যগুলিতে ইঙ্গিত হিসাবে, আপনি -i.bak
পরিবর্তে ব্যবহার করে একটি ব্যাকআপ স্বয়ংক্রিয়ভাবে তৈরি করতে পারেন -i
। এটি আপনার আদেশে ত্রুটির ক্ষেত্রে অতিরিক্ত সুরক্ষা সরবরাহ করে। যুক্তি -i
ব্যাকআপটির প্রত্যয় হয়ে যায়।
একগুচ্ছ ফাইল আপডেট করার সময় আপনি কমান্ডটি দিয়ে চালাতে পারেন -i.backup${RANDOM}
, সমস্ত ফাইল সঠিকভাবে আপডেট হয়েছে কিনা তা পরীক্ষা করে দেখুন, তারপরে সেই এক্সটেনশান সহ সমস্ত ফাইল সরিয়ে ফেলুন।
-i
প্রত্যয় ছাড়াই পতাকাটি ব্যবহারের পরামর্শ দেন তবে দয়া করে পাঠকদের সাবধান করুন যে এর অর্থ আপনি কোনও ব্যাকআপ পাবেন না । আরও কয়েকটি চরিত্রের জন্য ( -i.bak
), আপনার ওয়ান-লাইনারে কোনও টাইপ অন্তর্ভুক্ত থাকলে আপনি ব্যাকআপ পাবেন। মোটামুটি সহজ টাইপো (বলুন, -p
পতাকাটি ভুলে যাওয়া ) অন্যথায় অন্যথায় আপনার পুরো দিনটিকে নষ্ট করতে পারে।
sed
প্রবাহ সম্পাদনা করার জন্য - কোনও ফাইল স্ট্রিম নয়। এমন কোনও প্রোগ্রাম ব্যবহার করুন যা এই উদ্দেশ্যে, যেমন ed
বা এর জন্য বোঝানো হয় ex
। -i
বিকল্পটি কেবল sed
পোর্টেবল নয়, এটি আপনার মুখোমুখি হওয়া যে কোনও প্রতীককেও ভেঙে ফেলবে, যেহেতু এটি মূলত এটি মুছে ফেলে এবং পুনরায় তৈরি করে, যা অর্থহীন।
for file in foo bar baz; do
ed -s "${file}" << EOF
0a
<?php
.
w
EOF
done
ed
সেই উদ্দেশ্যে কীভাবে ব্যবহার করতে জানেন তবে আপনার উত্তরে এটি দেখান।
ডিরেক্টরিতে প্রতিটি ফাইলের শেষে কিছু যুক্ত করার জন্য আপনি যা লিখেছিলেন তার বিকল্প bash
:
for FNAME in *
do
echo "?>" >> $FNAME
done
যদিও আমি আপনার find
ওয়ান-লাইনারের মতো করি :)
$FNAME
হওয়া উচিত $fname
- কনভেনশন অনুসারে, আমরা এনভায়রনমেন্ট ভেরিয়েবলগুলি (পেগার, এডিটর, শেল, ...) এবং অভ্যন্তরীণ শেল ভেরিয়েবলগুলি (বেস / ভার্সন, র্যান্ডম, ...) বড় করে তুলি। অন্যান্য সমস্ত পরিবর্তনশীল নামের কমপক্ষে একটি ছোট হাতের অক্ষর থাকা উচিত। এই কনভেনশনটি দুর্ঘটনাক্রমে পরিবেশগত এবং অভ্যন্তরীণ ভেরিয়েবলগুলি অগ্রাহ্য করে avo
সহজ উপায় আছে
echo "startstr$(cat filename)endstring" > filename.new