क्यों टी विकल्प बेहतर है पर थोड़ा स्पष्ट करना
यह मानते हुए कि आउटपुट बनाने वाली कमांड को निष्पादित करने के लिए आपके पास उपयुक्त अनुमति है, यदि आप अपने कमांड के आउटपुट को टी करने के लिए पाइप करते हैं, तो आपको प्रश्न में फ़ाइल को लिखने (या अपेंड) करने के लिए sudo और डायरेक्ट टी के साथ टी के प्राइवेटबिल्ड को ऊंचा करना होगा।
प्रश्न में दिए गए उदाहरण में इसका अर्थ होगा:
ls -hal /root/ | sudo tee /root/test.out
कुछ और व्यावहारिक उदाहरणों के लिए:
# kill off one source of annoying advertisements
echo 127.0.0.1 ad.doubleclick.net | sudo tee -a /etc/hosts
# configure eth4 to come up on boot, set IP and netmask (centos 6.4)
echo -e "ONBOOT=\"YES\"\nIPADDR=10.42.84.168\nPREFIX=24" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth4
इन उदाहरणों में से प्रत्येक में आप एक गैर-विशेषाधिकार प्राप्त कमांड का आउटपुट ले रहे हैं और एक फाइल पर लिख रहे हैं जो आमतौर पर केवल रूट द्वारा लिखने योग्य है, जो आपके प्रश्न का मूल है।
इसे इस तरह से करना एक अच्छा विचार है क्योंकि आउटपुट उत्पन्न करने वाली कमांड को उन्नत विशेषाधिकार के साथ निष्पादित नहीं किया जाता है। यह यहाँ के साथ बात नहीं करता है, echo
लेकिन जब स्रोत कमांड एक स्क्रिप्ट है जिसे आप पूरी तरह से भरोसा नहीं करते हैं, तो यह महत्वपूर्ण है।
ध्यान दें कि आप इसे (जैसे >>
) को अधिलेखित करने के बजाय लक्ष्य फ़ाइल में एपेंड (जैसे ) को जोड़ने के लिए -a विकल्प का उपयोग कर सकते हैं >
।