আমি কীভাবে কোনও ফাইলে পাঠ্য সংযুক্ত করব?


109

লিনাক্সে কোনও ফাইলে পাঠ্য যুক্ত করার সহজতম উপায় কী?

আমি এই প্রশ্নের এক নজর ছিল , কিন্তু স্বীকৃত উত্তর একটি অতিরিক্ত প্রোগ্রাম ব্যবহার করে ( sed) আমি নিশ্চিত যে এর সাথে echoবা এর অনুরূপ কোনও সহজ উপায় থাকতে হবে ।

উত্তর:


125
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter. 
^D

মূলত, আপনি যে কোনও পাঠ্য ফাইলটিতে ফেলে দিতে পারেন। সিটিআরএল-ডি ফাইলের শেষের সিগন্যাল প্রেরণ করে, যা ইনপুটটি বন্ধ করে দেয় এবং আপনাকে শেলের কাছে ফিরিয়ে দেয়।


2
ফাইলটি যখন রুট অনুমোদনের দরকার হয় আমি কীভাবে এটি করতে পারি?
— UselesssCat

2
@ ইউসেলসগেটস যখন কোনও কিছু "অনুমতি অস্বীকার" হয়ে যায় তখন আমি যে কমান্ডটি চালাচ্ছি তা পুনরায় যাচাই করি এবং তারপরে ব্যবহার করি sudo !!- যা প্রম্পেন্ড দিয়ে শেষ কমান্ড কার্যকর করে sudo। আমি সম্প্রতি খুঁজে পেয়েছি এটি nanoইত্যাদির সাথেও কাজ করে (দুর্ঘটনাক্রমে চেষ্টা করার চেষ্টা করে nano nano auth...)
— সান্দ্রা

আপনার যদি সুডো ব্যবহার করতে হয় বা কোনও স্ক্রিপ্টে এটি ব্যবহার করতে হয় তবে নীচের এই গৃহীত উত্তরের আমার অনুসরণ অনুসরণ করুন ।
— ব্যবহারকারী 12345

4
আমি জানতাম না বিড়াল এভাবে ব্যবহার করা যেতে পারে! জার্নাল এন্ট্রি লেখার মতো। সিটিআরএল-ডি কী করে সে সম্পর্কেও জানত না। ধন্যবাদ!
— houallet

1
@ স্যান্ড্রা - !!দুর্দান্ত ব্যবহারের আগে ব্যবহার করেন নি। তাই আমি প্রায়শই স্টাফ করি cat /var/log/apache/error.logএবং অনুমতি বঞ্চিত হয়ে যাই । এটি ইতিহাসের কোনও আইডি দিয়েও করা যেতে পারে যেমন sudo !1419, এটি 1419sudo হিসাবে ইতিহাসের লাইনে থাকা কমান্ডটি কার্যকর করবে ।
— সাইক্লোনকোড

172

কেমন:

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>

তথ্যসূত্র


4
সাধারণভাবে, আমি এটি গ্রহণযোগ্য উত্তরগুলির চেয়ে বেশি পছন্দ করি catতবে আপনি >>পরিবর্তে ব্যবহারের বিষয়ে নিশ্চিত হওয়ার চেয়ে আরও যত্নবান হন >!
— ষাট

@ ষাটটিবিট - সম্পূর্ণ সম্মত, তবে আমি মনে করি শেল নিয়ে কাজ করার সময় আপনি কী করছেন তা আপনার সর্বদা জেনে রাখা উচিত নয়তো আপনি এরকম কিছু করতে পারেন sudo rm -r /=)
— সাইক্লোনকোড

1
এর sudo rm -r /চেয়ে ভাল sudo rm -rf /! ^ _ ^ এমন কোনও পতাকা রয়েছে যা বিদ্যমান ফাইলের সামগ্রীতে ওভাররাইট করার আগে নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে >? সর্বদা এই জাতীয় পতাকা ব্যবহার করার জন্য এটি ব্যবহার করা ভাল মনে হয়।
— ষাট

2
@ sixty4bit - আপনি যোগ করতে পারেন set -o noclobberআপনার .bashrcবিশেষ সিনট্যাক্স ব্যবহার না করেই তারপর আপনি একটি বিদ্যমান ফাইলটি প্রতিস্থাপন করতে পারবেনecho "hello" >| <filename>
— Cyclonecode

ফাইলটি যেখানে ডাকা হয় তার একটি উদাহরণ দিতে পারেন, "মাইফিল.টিএসটিএসটি" বা কিছু বলুন? আমি নিশ্চিত নই যে এটির <ফাইলাইল> বা ফাইলের
— নামটি

24

অন্যান্য সম্ভাব্য উপায় হ'ল:

echo "text" | tee -a filename >/dev/null

-aফাইলের শেষে যোগ হবে।

প্রয়োজনে sudoব্যবহার করুন:

echo "text" | sudo tee -a filename >/dev/null

কেন </ dev / নাল শেষে?
— চতুর্থ

1
>/dev/nullশেষ বাধা 'টেক্সট' আপনার কনসোলে দেখানো হয়।
— ব্যবহারকারী9869932

13

গৃহীত উত্তর অনুসরণ করুন।

এটিকে স্ক্রিপ্টে ব্যবহার করে শেষ নির্ধারণ করতে আপনার সিটিআরএল-ডি ছাড়া অন্য কিছু দরকার । পরিবর্তে এটি চেষ্টা করুন:

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' >>সংযোজন সম্পর্কে জানতাম না ! ধন্যবাদ
— ফ্রিসফটওয়্যার সার্ভার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.