मैं बैश को अपने इंटरेक्टिव शेल के रूप में उपयोग करता हूं और मैं सोच रहा था कि क्या बैश को सिस्टम कमांड चलाने के बजाय शेल कमांड कमांड के स्थान पर चलाने के लिए एक आसान तरीका है जहां वे दोनों एक ही नाम साझा करते हैं।
उदाहरण के लिए, सिग्नल भेजने के बजाय नामित प्रक्रिया (तों) के प्रोसेस आईडी (पीआईडी) को प्रिंट करने के लिए सिस्टम kill
(से util-linux
) का उपयोग करें :
$ /bin/kill -p httpd
2617
...
सिस्टम कमांड के पूर्ण पथ को निर्दिष्ट किए बिना, सिस्टम कमांड के बजाय बैश बिलिन का उपयोग किया जाता है। kill
निर्मित नहीं है -p
तो आदेश विफल रहता है विकल्प:
$ kill -p httpd
bash: kill: p: invalid signal specification
मैंने मेक बैश में लिस्ट किए गए उत्तरों को बाहरी निर्मित 'टाइम' कमांड के बजाय शेल बिल्ट-इन का उपयोग करने की कोशिश की, लेकिन उनमें से ज्यादातर केवल इसलिए काम करते हैं क्योंकि time
वास्तव में शेल कीवर्ड है - शेल बिलिन नहीं ।
अस्थायी रूप से बैश बेसिन को निष्क्रिय करने के अलावा enable -n kill
, मैंने अब तक जो सबसे अच्छा समाधान देखा है, वह है:
$(which kill) -p httpd
क्या अन्य आसान (कम टाइपिंग में शामिल) तरीके शेल शेल के बजाय बाहरी कमांड को निष्पादित करने के लिए हैं?
ध्यान दें कि kill
सिर्फ एक उदाहरण है और मैं एक सामान्यीकृत समाधान चाहूंगा जिस तरह से बिलिन के साथ उपसर्ग करना उन command
कार्यों को रोकता है जिनके पास बाहरी कमांड चलाने के समान नाम है। ज्यादातर मामलों में, मैं आमतौर पर बिलिन संस्करण का उपयोग करना पसंद करता हूं क्योंकि यह एक नई प्रक्रिया को बनाने के लिए बचाता है और कुछ समय में बिलिन में ऐसी विशेषताएं होती हैं जो बाहरी कमांड नहीं करता है।
which kill
में संलग्न करना (उन्हें टिप्पणियों में नहीं डाल सकते) थोड़ा कम है।