টি ব্যবহারের কি কোনও তাৎপর্য আছে?


47

এটা পছন্দ সিস্টেম ফাইল পাঠ্য সংযোজন সংক্রান্ত প্রায় সব নির্দেশাবলী কেন fstabএবং /etc/apt/sources.list.d/<name>.listজড়িত ব্যবহার tee এবং echo সংযোজন করতে পাঠ্য বলেন?

নিম্নলিখিত উদাহরণগুলি ধরুন, যা মূল হিসাবে চালিত হয় :

## 1
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee -a file1
## 2
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' >> file2

দৌড়াদৌড়ি diff -u file1 file2কিছুই দেয় না; চলমান md5sum file1 file2দেখায় যে তাদের চেকসামগুলি অভিন্ন, যা আমাকে আমার আসল প্রশ্নে ফিরে আসে:

কেন | tee <FILENAME>উবুন্টু ডক্স জুড়ে তাই প্রচলিত, এটা ঠিক ভাল অভ্যাস, অন্যথায় না এটা ঠিক ব্যবহারের উদাহরণ 2 পরিবর্তে থেকে আউটপুট পাশ সহজ হবে echoথেকে tee?


1
আপনি আপনার কমান্ডে sudo অনুপস্থিত; যা 2% এর মধ্যে আলাদা ফলাফল দেখাবে)
রিনজউইন্ড

1
@ রিনজুইন্ড আমি এই আদেশগুলি মূল হিসাবে চালাচ্ছি।
আলেকজ মাগুরা

উত্তর:


83

একটি পার্থক্য রয়েছে: টি আউটপুটটিকে সদৃশ করে: এটি এটি ফাইল এবং প্রদর্শনে উভয়কেই প্রেরণ করে।

তবে আরও রয়েছে:

  • উদাহরণস্বরূপ, আপনি যদি একবারে দুটি ফাইলে কিছু স্ট্রিং লিখতে চান তবে আপনি টি সহ যে কমান্ডটি ব্যবহার করতে পারেন তা হ'ল:

     echo "some text" | tee file1 > file2  
    
  • অন্যটি টি আপনাকে সহায়তা করতে পারে তা হ'ল সুডো ব্যবহার করার সময় একটি সমস্যা এড়ানো। সাধারণ আউটপুট পুনর্নির্দেশ অপারেটরটি সর্বদা আপনার ব্যবহারকারীর সুবিধাগুলি দিয়ে কার্যকর করা হয়, আপনি যখন কমান্ডের সামনে একটি sudo লিখেন যা STDOUT পাঠ্য উত্পন্ন করে। অন্য কথায়, যদি আপনার কাছে সেই ফাইলটিতে লেখার অনুমতি না থাকে তবে এটি ব্যর্থ হবে:

     sudo echo "something" > bar  
    

    তবে টি দিয়ে সমস্ত কিছু ঠিকঠাক হবে:

    echo "something" | sudo tee bar  
    

এই সাইট থেকে 2 উদাহরণ । এটি আরও কিছু আছে।


আপনি sudoছাড়া tee- sudo sh -c 'echo SOMETHING > FILE'...;) করতে পারেন
উইলফ

7
@ উইল্ফ হ্যাঁ, তবে যখন আপনার উদ্ধৃতিগুলি আউটপুট করতে হবে ", জিনিসগুলি অগোছালো হয়ে যায়
ব্রায়াম

3
প্রথম ক্ষেত্রে, যদি আপনি এন ফাইলগুলিতে লিখতে চান তবে আমি পছন্দ করব echo "some text" | tee file1 file2 ... fileNএবং সম্ভবত সংযোজন করব > /dev/null, যদি আপনি স্টাডআউটে বিশৃঙ্খলা না চান।
এলমার জান্ডার

ভাল লাগছে @ এলমারজান্ডার :)
রিনজউইন্ড

13

teeস্ট্যান্ডার্ড ইনপুট স্ট্রিম গ্রহণ করে এবং স্ট্যান্ডার্ড আউটপুট স্ট্রিম পাশাপাশি একটি ফাইল স্ট্রিম উভয়কেই এটি লিখে দেয় । এটি যদি লোকদের মনে রাখতে সহায়তা করে তবে কমান্ডের নামটি নদীর গভীরতানির্ণয় টি-স্প্লিটার থেকে আসে। একটি দুর্দান্ত উইকিপিডিয়া নিবন্ধ আছে যেখানে আমি কমান্ডের নামের উত্স সম্পর্কে জানতে পারি।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


11

প্রথমত, teeনিজেই পাঠ্য সংযোজন করে না বা করে না >

এটি tee -aএবং এর পরিপূরক, >>এটি পাঠ্যকে সংযুক্ত করে।

আমি বিশ্বাস করি না যে সমস্ত শাঁস >>ফাংশনটিকে সমর্থন করে , তাই সে কারণেই teeবেশি ব্যবহৃত হয়। (শুধু সরল পুরানো সম্পর্কে চিন্তা করুন sh)। টি একটি কমান্ড, যখন >>অপারেটর operator

আপনি (আমার ব্যক্তিগত প্রিয়) ব্যবহার করেন তাহলে bash, >এবং >>অনেক nicer / সহজ।

ব্যবহার teeআপনার ঠিক যে কমান্ড sudo যাতে আপনি সমগ্র বিবৃতি sudo করার জন্য, যেমন হবে না দেয় sudo sh -c "echo foo > bar"teeআপনি আউটপুট বিভক্ত করতে পারবেন। অবশ্যই, এই সব দেখা যেতে পারে man tee। এটি মূলত আপনার ব্যক্তিগত পছন্দ।

আরও পড়ার জন্য, এখানে এবং এখানে দেখুন


5
উপর ব্যাখ্যা "উবুন্টু ঠিক যে কমান্ড", এই খোঁজার কেউ জন্য একটু জটিল: একটি ফর্ম ব্যবহার করে মত sudo somecommand >> fileaচালানো হবে sudo somecommandএবং তারপর, যেমন আবাহন ব্যবহারকারী সংযোজন করতে আউটপুট fileasudo sh -c "somecommand >> filea"কাজগুলি ব্যবহার করে তবে নেস্টেড-কোটিংয়ের দুঃস্বপ্ন দেখা দিতে পারে। আমন্ত্রণকারী ব্যবহারকারী হিসাবে somecommand | sudo tee -a fileaরান ব্যবহার করে somecommandএবং তারপরে আউটপুটটিকে fileaরুট হিসাবে সংযোজন করে - যা ব্যবহারকারী সাধারণত যা চান তা তাই।
দারায়েল

@ দারেল আমি পোস্টটি সম্পাদনা করেছি। স্পষ্টতা দেওয়ার জন্য আপনাকে ধন্যবাদ।
কাজ ওল্ফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.