एक कमांड विस्तार के टर्मिनल भागों?


0

मैं अक्सर किसी कमांड के 'बिट्स' का किसी प्रकार का उपनाम / प्रतिस्थापन चाहता हूं।

ex: मैं "bkg" को "2> / dev / null> / dev / null &" में अनुवाद करना चाहता हूं, ताकि मैं बैकग्राउंड में एप्लिकेशन चला सकूं और उनके आउटपुट में जैसे कंसोल नहीं है:

nautilus . bgk
>>>
nautilus . 2> /dev/null > /dev/null &

अब तक काम करने के लिए मुझे जो निकटतम चीज़ मिली वह निम्नलिखित है:

1) उपनाम बनाएं:

alias bkg="&> /dev/null > /dev/null &"

2) कमांड लिखने से पहले, उपनाम टाइप करें और पहले इसे ctrl + alt + e के माध्यम से विस्तारित करें , फिर वापस जाएं और कमांड टाइप करें।

bkg       #press ctrl+alt+e
&> /dev/null > /dev/null &    #has expanded. Now go back and type cmd:
nautilus &> /dev/null > /dev/null &

हालांकि, यह कुछ हद तक बोझिल है।

[संपादित करें] ZSH के पास वैश्विक उपनाम हैं। यह वही है जो मुझे चाहिए। लेकिन रीडिंग से यह प्रतीत होता है कि zash पूरी तरह से बैश स्क्रिप्ट के अनुकूल नहीं है। ऐसा लगता है कि वैश्विक परिवर्तन के लिए केवल zsh पर स्विच करना लेकिन बैश स्क्रिप्ट को तोड़ना संभव नहीं है। जैसे, बैश-देशी समाधान की तलाश।

[संपादित करें]
@ एंगमोंट के सुझाव के अनुसार, एक उपनाम को परिभाषित करने के लिए मुझे जो कुछ भी चाहिए वह है:

alias quiet="&> /dev/null "

तब मैं इसका उपयोग कर सकता हूं:

quiet nautilus . &

हालाँकि, दो मुद्दे: "और" अंत में होना चाहिए और 'शांत' टाइप होने के बाद टैब-भविष्यवाणी काम नहीं करती है।

जवाबों:


1

ZSH आपको सभी रस्सी देगा जो आपको वैश्विक उपनामों के साथ चाहिए (और &>/dev/nullपुनर्निर्देशन को लिखने के लिए एक छोटे तरीके के रूप में भी )।

% alias -g bgk='&>/dev/null &'
% sleep 20 bgk
[1] 44612
% 

हालाँकि, मैं दृढ़ता से वैश्विक उपनाम का उपयोग करने के खिलाफ सलाह देता हूं, क्योंकि वे एक फुटगन के कुछ हैं।


1

गोले की एक छोटी ज्ञात विशेषता यह है कि पुनर्निर्देशन को पंक्ति के अंत में खड़े होने की आवश्यकता नहीं है, यह तर्कों के बीच या बहुत शुरुआत में कहीं भी हो सकता है। दूसरे शब्दों में, ये तीनों समतुल्य हैं:

nautilus . >/dev/null
nautilus >/dev/null .
>/dev/null nautilus .

जैसे, आप परिभाषित कर सकते हैं alias blk='>/dev/null'जो कमांड लाइन की शुरुआत में काम करेगा, या परिभाषित करेगा alias naublk='nautlius >/dev/null'और फिर निष्पादित करेगा naublk ., और इसी तरह।

दिलचस्प बात bash-4.3यह है कि ऐसा लगता है कि आपके पास शुरुआत में पुनर्निर्देशन के लिए कई उपनाम हो सकते हैं, उसके बाद कमांड के लिए एक। उदाहरण के लिए:

alias dn1='> /dev/null'
alias dn2='2> /dev/null'
alias nau=nautilus
dn1 dn2 nau .

यह वही है जो मुझे चाहिए।
सिंह उफिम्त्सेव

मैंने इस प्रश्न को केवल इस दृष्टिकोण के मुद्दे को रेखांकित करने के लिए संपादित किया।
सिंह उफिम्त्सेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.