উত্তর:
* নিক্স পাইপগুলি কীভাবে কাজ করবে তার একটি সামান্য বোঝা।
সংক্ষেপে >>
পুনঃনির্দেশ অপারেটর নির্দিষ্ট ফাইলের শেষে লাইন যুক্ত করবে, যেখানে একক বৃহত্তর হিসাবে >
ফাইল খালি হবে এবং ফাইলটি ওভাররাইট করবে।
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
-bash: TheAccount.txt: cannot overwrite existing file
।
>
এবং >>
হয় আউটপুট ফেরৎ অপারেটর। পাইপ অপারেটর হয় |
।
>|
ওভাররাইট বিদ্যমান জোর করতে ব্যবহার করুন
বাশ-এ, আপনি যদি নোক্লোবারকে একটি লা সেট করে থাকেন set -o noclobber
তবে আপনি বাক্য গঠনটি ব্যবহার করুন>|
উদাহরণ স্বরূপ:
echo "some text" >| existing_file
ফাইলটি উপস্থিত না থাকলে এটিও কাজ করে
নোক্লোবার সেট করা আছে কিনা তা পরীক্ষা করুন: set -o | grep noclobber
এই বিশেষ ধরণের অপারেটরের আরও বিশদ ব্যাখ্যার জন্য এই পোস্টটি দেখুন
পুনঃনির্দেশ অপারেটরগুলির আরও বিস্তৃত তালিকার জন্য, এই পোস্টটি দেখুন
&>| file
কাজ করে। আপনি কোন শেল এবং সংস্করণ ব্যবহার করছেন? zsh জন্য @stimulate উভয় কাজ করা উচিত , ব্যাশ জন্য এটি শুধুমাত্র>|
echo "aaa" &>| test.txt
ত্রুটি ফলাফল -bash: syntax error near unexpected token |
। আমার নোক্লোবার চালু আছে।
echo "aaa" >| test.txt 2>&1
অন্য শেলটি আটকে থাকতে হবে বা ব্যবহার করতে হবে ।
NylonSmile
এর উত্তর থাকা সত্ত্বেও , যা "সাজানোর" সঠিক .. আমি এই পদ্ধতিতে ফাইলগুলি ওভাররাইট করতে অক্ষম ছিলাম ..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
আমার সমস্যাগুলি সমাধান করতে .. আমাকে ... >!
, á লা .. ব্যবহার করতে হয়েছিল
[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"
স্পষ্টতই, এই সম্পর্কে সতর্কতা অবলম্বন করুন ...
NOCLOBBER
সেট রয়েছে। ব্যবহার করুন setopt clobber
ডিফল্ট আচরণ পুনঃস্থাপন।
যদি আপনার পরিবেশটি ওভাররাইটিংকে মঞ্জুরি দেয় না তবে >
পাইপ |
এবং tee
পরিবর্তে নিম্নলিখিতটি ব্যবহার করুন:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'
নোট করুন এটি স্টাডাউটেও মুদ্রণ করবে। যদি এটি অযাচিত হয় তবে আপনি আউটপুটটিকে /dev/null
নিম্নরূপে পুনর্নির্দেশ করতে পারেন :
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
শুধু লক্ষণীয় যে আপনি যদি নোক্লোবার সেট (যেমন set -o noclobber
) রাখার সময় কোনও ফাইলের মধ্যে স্ট্রাইড :: সেরার এবং এসটিডি :: কাউটকে পুনঃনির্দেশ করতে চান তবে আপনি কোডটি ব্যবহার করতে পারেন:
cmd >|file.txt 2>&1
এ সম্পর্কে আরও তথ্য https://stackoverflow.com/a/876242 এ দেখা যাবে ।
এছাড়াও এই উত্তরের @ টুবুইর প্রশ্নের উত্তর @BrDaHa উপরে 9 ই আগস্ট '18 তে 9:34 এ সরবরাহ করা হয়েছে।
একটি ফাইলের সামগ্রী অন্য ফাইলে ওভাররাইট করতে। বিড়াল যেমন ব্যবহার করুন।
echo "this is foo" > foobar.txt
cat foobar.txt
echo "this is bar" > bar.txt
cat bar.txt
এখন ফুবার ওভাররাইট করতে আমরা নীচের মত একটি ক্যাট কমান্ড ব্যবহার করতে পারি
cat bar.txt >> foobar.txt
cat foobar.txt
>>
সংযোজন করছে, ওভাররাইটিং নয়
আপনার যদি আউটপুট থাকে যাতে ত্রুটি থাকতে পারে তবে আপনি একটি এম্পারস্যান্ড এবং এর চেয়েও বৃহত্তর ব্যবহার করতে চাইতে পারেন :
my_task &> 'Users/Name/Desktop/task_output.log'
এটি স্টডার এবং স্টডআউট উভয়ই লগ ফাইলে পুনর্নির্দেশ করবে (কেবলমাত্র স্টডআউটের পরিবর্তে)।