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


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.