<,> और >> कमांड के लिए इनपुट / आउटपुट पुनर्निर्देशन के लिए उपयोग किया जाता है - जो कि शेल द्वारा प्रदान की गई विशेषता है (उदाहरण के लिए, bash)। इसलिए यदि आप एक कमांड टाइप करते हैं sudo cat > /var/www/info.phpतो शेल जो इसे प्राप्त करता है इनपुट के रूप में फाइल को खोलने का प्रयास करता है /var/www/info.phpऔर sudoकमांड के मानक आउटपुट के रूप में उस फाइल को प्रदान करता है । sudoआदेश भी पता इसके उत्पादन एक कंसोल जा रहा है या एक फ़ाइल के लिए पुनः निर्देशित है, क्योंकि यह खोल द्वारा ध्यान रखा जाता है कि आह्वान यह है कि क्या नहीं है।
यदि आपने जिस शेल में अपनी कमांड टाइप की है, वह आपका लॉगिन शेल है या आपकी यूजर आईडी के साथ टर्मिनल में चल रहा एक अन्य शेल है, तो इसमें आपकी यूजर आईडी के समान विशेषाधिकार हैं - रूट के नहीं।
तो आपके मामले में, जबकि बिल्ली कमांड को रूट के रूप में निष्पादित किया जाता है, इसके आउटपुट की प्रतिलिपि /var/www/info.phpशेल को सामान्य उपयोगकर्ता के रूप में चलाने का प्रयास किया जाता है, जो कि उम्मीद के मुताबिक विफल रहता है।
ऐसी स्थितियों के लिए वर्कअराउंड teeकमांड का उपयोग करना है :
sudo tee /var/www/info.php
पैरामीटर के रूप में निर्दिष्ट फ़ाइल में ^ D तक कंसोल में दर्ज किए गए सभी पाठ को डालने का इरादा प्रभाव होगा।
एक शायद अंडरस्टैंडिंग साइड-इफ़ेक्ट यह है कि teeआउटपुट को स्टैडआउट में भी प्रतिध्वनित किया जाएगा, इसलिए जब आप प्रत्येक लाइन टाइप करते हैं और एंटर दबाते हैं तो teeउसकी एक कॉपी वापस आ जाएगी। इससे बचने के लिए आप निम्न प्रकार का उपयोग कर सकते हैं।
sudo tee /var/www/info.php > /dev/null
इसके बारे में विवरण एक टर्मिनल पर teeदिया जा सकता है info tee।