1. नए समूह के साथ लॉग आउट किए बिना और फिर से एक शेल प्राप्त करना
यदि आप केवल एक समूह जोड़ रहे हैं, तो मैंने निम्नलिखित प्रयोग किया:
exec sg <new group name> newgrp `id -gn`
यह Legooolas की दो-परत newgrp चाल पर एक भिन्नता है, लेकिन यह एक पंक्ति में है और आपको अपने प्राथमिक समूह को मैन्युअल रूप से दर्ज करने की आवश्यकता नहीं है।
sg
newgrp है, लेकिन नए समूह ID के साथ निष्पादित करने के लिए एक आदेश को स्वीकार कर रहा है। इसका exec
मतलब है कि नया शेल मौजूदा शेल को बदल देता है, इसलिए आपको दो बार "लॉगआउट" करने की आवश्यकता नहीं है।
सु का उपयोग करने के विपरीत, आपको अपने पासवर्ड में टाइप करने की आवश्यकता नहीं है। यह आपके पर्यावरण (समूह को जोड़ने के अलावा) को ताज़ा नहीं करता है, इसलिए आप अपनी वर्तमान कार्यशील निर्देशिका को बनाए रखते हैं आदि।
2. एक सत्र में सभी स्क्रीन विंडो में कमांड को निष्पादित करना
at
स्क्रीन में आदेश जो कुछ खिड़कियों आपके द्वारा निर्दिष्ट (ध्यान दें कि यह एक स्क्रीन आदेश है, न कि शेल कमांड है) में एक आदेश चलाता है।
आप सभी मौजूदा स्क्रीन सत्रों में कमांड भेजने के लिए निम्न कमांड का उपयोग कर सकते हैं:
screen -S <session_name> -X at \# stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"
id
स्क्रीन सत्र में चलने के लिए बैकटिक्स से बचने की आवश्यकता पर ध्यान दें , और अपने आदेश के अंत में स्क्रीन को हिट करने के लिए ^ M को 'एंटर' करें।
यह भी ध्यान दें कि स्क्रीन का stuff
कमांड आपकी ओर से केवल कमांड टेक्स्ट टाइप करता है। इसलिए कुछ अजीब हो सकता है यदि स्क्रीन विंडो में से एक में कमांड प्रॉम्प्ट पर आधा लिखित कमांड है या शेल (उदाहरण के लिए एमएसीएस, टॉप) के अलावा अन्य एप्लिकेशन चल रहा है। यदि यह एक मुद्दा है, तो मेरे पास कुछ विचार हैं:
- किसी भी आधे-लिखित आदेश से छुटकारा पाने के लिए, आप कमांड की शुरुआत में "^ C" जोड़ सकते हैं।
- Emacs विंडो आदि में कमांड चलाने से बचने के लिए, आप विंडो शीर्षक आदि पर फ़िल्टर करने के लिए 'at' पूछ सकते हैं (ऊपर दिए गए उदाहरण में, मैं "#" का उपयोग करता हूं, जो सभी विंडो से मेल खाता है, लेकिन आप विंडो शीर्षक, उपयोगकर्ता द्वारा फ़िल्टर कर सकते हैं) , आदि)।
एक विशिष्ट विंडो में कमांड को चलाने के लिए (विंडो नंबर द्वारा पहचाना गया), निम्नलिखित का उपयोग करें:
screen -S <session_name> -p 0 -X stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"