লিনাক্সে কোনও ফাইলে পাঠ্য যুক্ত করার সহজতম উপায় কী?
আমি এই প্রশ্নের এক নজর ছিল , কিন্তু স্বীকৃত উত্তর একটি অতিরিক্ত প্রোগ্রাম ব্যবহার করে ( sed
) আমি নিশ্চিত যে এর সাথে echo
বা এর অনুরূপ কোনও সহজ উপায় থাকতে হবে ।
লিনাক্সে কোনও ফাইলে পাঠ্য যুক্ত করার সহজতম উপায় কী?
আমি এই প্রশ্নের এক নজর ছিল , কিন্তু স্বীকৃত উত্তর একটি অতিরিক্ত প্রোগ্রাম ব্যবহার করে ( sed
) আমি নিশ্চিত যে এর সাথে echo
বা এর অনুরূপ কোনও সহজ উপায় থাকতে হবে ।
উত্তর:
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
মূলত, আপনি যে কোনও পাঠ্য ফাইলটিতে ফেলে দিতে পারেন। সিটিআরএল-ডি ফাইলের শেষের সিগন্যাল প্রেরণ করে, যা ইনপুটটি বন্ধ করে দেয় এবং আপনাকে শেলের কাছে ফিরিয়ে দেয়।
sudo !!
- যা প্রম্পেন্ড দিয়ে শেষ কমান্ড কার্যকর করে sudo
। আমি সম্প্রতি খুঁজে পেয়েছি এটি nano
ইত্যাদির সাথেও কাজ করে (দুর্ঘটনাক্রমে চেষ্টা করার চেষ্টা করে nano nano auth
...)
!!
দুর্দান্ত ব্যবহারের আগে ব্যবহার করেন নি। তাই আমি প্রায়শই স্টাফ করি cat /var/log/apache/error.log
এবং অনুমতি বঞ্চিত হয়ে যাই । এটি ইতিহাসের কোনও আইডি দিয়েও করা যেতে পারে যেমন sudo !1419
, এটি 1419
sudo হিসাবে ইতিহাসের লাইনে থাকা কমান্ডটি কার্যকর করবে ।
কেমন:
echo "hello" >> <filename>
>>
অপারেটরটি ব্যবহার করার সময় ফাইলটির শেষে ডেটা যুক্ত হবে>
ইতিমধ্যে বিদ্যমান থাকলে ফাইলের বিষয়বস্তুগুলিকে ওভাররাইট করে।
আপনি printf
একইভাবে ব্যবহার করতে পারেন :
printf "hello" >> <filename>
মনে রাখবেন যে উপরেরটি ব্যবহার করা বিপজ্জনক হতে পারে। উদাহরণস্বরূপ যদি আপনার কাছে ইতিমধ্যে একটি ফাইল রয়েছে এবং আপনার ফাইলটির শেষের দিকে ডেটা সংযোজন করতে হবে এবং আপনি ফাইলের সর্বশেষ >
ডেটা নষ্ট করতে ভুলে যাবেন । noclobber
আপনার মধ্যে ভেরিয়েবল সেট করে আপনি এই আচরণটি পরিবর্তন করতে পারেন .bashrc
:
set -o noclobber
এখন আপনি যখন চেষ্টা করার চেষ্টা করবেন তখন echo "hello" > file.txt
একটি সতর্কতা বাণী পাবেন cannot overwrite existing file
।
ফাইলটিতে লিখিতভাবে বাধ্য করার জন্য আপনাকে এখন বিশেষ সিনট্যাক্স ব্যবহার করতে হবে:
echo "hello" >| <filename>
আপনার এও জানা উচিত যে ডিফল্টরূপে echo
একটি পিছনের নতুন লাইনের চরিত্র যুক্ত হয় যা -n
পতাকা ব্যবহার করে দমন করা যায় :
echo -n "hello" >> <filename>
তথ্যসূত্র
cat
তবে আপনি >>
পরিবর্তে ব্যবহারের বিষয়ে নিশ্চিত হওয়ার চেয়ে আরও যত্নবান হন >
!
sudo rm -r /
=)
sudo rm -r /
চেয়ে ভাল sudo rm -rf /
! ^ _ ^ এমন কোনও পতাকা রয়েছে যা বিদ্যমান ফাইলের সামগ্রীতে ওভাররাইট করার আগে নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে >
? সর্বদা এই জাতীয় পতাকা ব্যবহার করার জন্য এটি ব্যবহার করা ভাল মনে হয়।
set -o noclobber
আপনার .bashrc
বিশেষ সিনট্যাক্স ব্যবহার না করেই তারপর আপনি একটি বিদ্যমান ফাইলটি প্রতিস্থাপন করতে পারবেনecho "hello" >| <filename>
অন্যান্য সম্ভাব্য উপায় হ'ল:
echo "text" | tee -a filename >/dev/null
-a
ফাইলের শেষে যোগ হবে।
প্রয়োজনে sudo
ব্যবহার করুন:
echo "text" | sudo tee -a filename >/dev/null
>/dev/null
শেষ বাধা 'টেক্সট' আপনার কনসোলে দেখানো হয়।
গৃহীত উত্তর অনুসরণ করুন।
এটিকে স্ক্রিপ্টে ব্যবহার করে শেষ নির্ধারণ করতে আপনার সিটিআরএল-ডি ছাড়া অন্য কিছু দরকার । পরিবর্তে এটি চেষ্টা করুন:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
এটি উল্লিখিত ফাইলটিতে পাঠ্য সংযোজন করবে ("EOF" সহ নয়)।
এটি এখানে একটি নথি (বা হেরডোক) ব্যবহার করে ।
তবে যদি আপনার বিবৃত ফাইলটিতে সংযুক্ত করতে sudo দরকার হয় তবে আপনি সরাসরি কমান্ড লাইনে টাইপ করলে I / O পুনঃনির্দেশের কারণে হেরডোকটি ব্যবহার করতে সমস্যায় পড়বেন।
আপনি সরাসরি কমান্ড লাইনে টাইপ করার সময় এই প্রকরণটি কার্যকর হবে:
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
অথবা tee
বিড়ালের সাথে হেরডোক ব্যবহার করার সময় দেখা কমান্ড লাইন সুডো সমস্যাটি এড়াতে আপনি এর পরিবর্তে ব্যবহার করতে পারেন :
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
cat << 'EOF' >
বছর ধরে ব্যবহার করে আসছি এবং cat << 'EOF' >>
সংযোজন সম্পর্কে জানতাম না ! ধন্যবাদ