बाश उर्फ ​​से जुड़ी कमांड को कैसे देखें?


324

मान लीजिए कि मेरे पास बैश शेल में एक उपनाम है। क्या यह पता लगाने के लिए एक साधारण कमांड है कि उपनाम किस कमांड को चलाएगा?

जवाबों:


431

typeनिर्मित इस लिए उपयोगी है। यह न केवल आपको उपनामों के बारे में बताएगा, बल्कि फ़ंक्शन, बिल्डिंस, कीवर्ड और बाहरी कमांड भी देगा।

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        printf '%s\n' "$REPLY";
        grep --color=auto "$@"
    }
}

type -a cmdपूर्वता के क्रम में उस नाम से सभी कमांड दिखाएंगे, जो lsऊपर दिए गए उपनाम के लिए उपयोगी है, जहां उपनाम खुद कॉल करता है ls

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

यह आपको बताता है कि जब आप दौड़ते हैं ls, /bin/lsतो इसका उपयोग किया जाएगा, और --color=autoइसके तर्कों की सूची में शामिल किया जाएगा, किसी भी अन्य के अलावा आप खुद को जोड़ते हैं।


क्या करें जब एक उपनाम में अधिक उपनाम शामिल हों?
user251046

2
@ user251046 typeतब तक उपयोग करते रहें जब तक कि आप एक उपनाम के अलावा कुछ नहीं
मारते

मुझे यह उत्तर पसंद है क्योंकि typeकिसी भी उद्धरण को पार्स / व्याख्या करेगा, इसलिए आप यह सुनिश्चित कर सकते हैं कि उद्धरण सही हैं।
वारबैंक

मुझे मिल गया है ls is aliased to 'ls --color=auto', लेकिन मैं एक परत को कैसे गहरा कर सकता हूं, यह देखने के लिए कि क्या यह / बिन / एलएस या / यूएसआर / स्थानीय / बिन / एलएस या क्या उपयोग करता है?
क्रुबो

1
@krubo type -a lsवरीयता के क्रम में पाए गए सभी ls कमांड दिखाएंगे। जो भी उपनाम के ठीक नीचे है, वह है जिसे उपनाम द्वारा निष्पादित किया जाएगा।
जिरह

163

aliasशैल प्रांप्ट पर बस टाइप करें । यह सभी वर्तमान में सक्रिय उपनामों की एक सूची का उत्पादन करना चाहिए।

या, आप यह alias [command]देखने के लिए टाइप कर सकते हैं कि एक विशिष्ट उपनाम क्या है, उदाहरण के रूप में, यदि आप यह जानना चाहते हैं कि lsउपनाम क्या था, तो आप कर सकते हैं alias ls


12
या alias lsयह पता लगाने के लिए टाइप करें कि विशेष रूप से किसके lsलिए उपनाम दिया गया है।
poolie

2
@ प्रालि। मुझे लगता है कि सवाल सभी उपनामों को देखने का था , हालांकि, यही कारण है कि मैं अलियास कमांड पर आगे विस्तार नहीं करता।
थॉमस वार्ड

यदि यह उपनामों के लिए काम करता है, तो यह काम नहीं करता है यदि आपने एक कस्टम शेल फ़ंक्शन को परिभाषित किया है। typeहालाँकि, दोनों मामलों में काम करता है।
सुजय फड़के

53

मुझे वास्तव में Ctrl+ Alt+ पसंद है Eजैसा कि मैंने इस उत्तर से सीखा है । यह वर्तमान में टाइप की गई कमांड लाइन का "विस्तार" करता है, जिसका अर्थ है कि यह अन्य प्रकार के (अन्य चीजों के बीच) विस्तार करता है।

इसका क्या मतलब है? यह किसी भी अन्य उपनाम को बदल देता है, जो वर्तमान में कमांड लाइन पर लिखा जा सकता है, जो अन्य उपनाम के लिए खड़ा है।

उदाहरण के लिए, यदि मैं टाइप करता हूं:

$ ls

और फिर Ctrl+ Alt+ दबाएँ E, यह बदल गया है

$ ls --time-style=locale --color=auto

यह अन्य distros पर एक बराबर है?
सप्रे

@ डेफ़र डेबियन पर काम करता है, मुझे लगता है कि यह एक बैश फीचर है और इसे किसी भी वितरण पर काम करना चाहिए।
डेर होकस्टापलर

4
आप सही हैं, यह काम करता है, लेकिन मेरे पास zsh है और यह दुर्भाग्य से काम नहीं करता है।
सेफर

वास्तव में मददगार था। मैं के साथ इतिहास में लॉग इन पिछले बैश आदेश, यानी में से एक के विस्तार की एक अलग लक्ष्य, 394 था, ताकि मैं निष्पादित करने से पहले पहले इसे संपादित कर सकता है
XXL

1
यह एक चेतावनी है। जब एक उपनाम में आवश्यक उद्धरण शामिल होते हैं, तो उन्हें हटा दिया जाएगा। इसलिए, मुझे squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R इसके बजायsqueue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
डेविड मम

10

कड़ाई से सही उत्तर बोलना BASH_ALIASES सरणी का उपयोग कर रहा है, जैसे:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

2
मुझे यह एक ऐसी स्थिति में उपयोगी लगा, जहाँ मैं अपने आसपास के मानव-उपयोगी सामान के बिना वास्तविक विवरण के लिए प्रोग्रामेटिक एक्सेस चाहता था।
एम। जस्टिन

यह zsh में काम नहीं कर रहा है
ProGrammar

1
@ProGrammar सवाल bash के बारे में था - zsh के लिए आपको zsh के बारे में सवाल देखना चाहिए
noonex

1
बिंगो। ठीक उसी तरह, जिसकी मुझे आवश्यकता थी, जैसे @ M.Justin - मैं वर्तमान lsएलियास पर अधिक स्विच को स्टैक करना चाहता हूं जो कि वहां नहीं है। इसलिए मैं alias ls="${BASH_ALIASES[ls]} --time-style=iso"अपने मामले के लिए जा रहा हूं ।
रिच

2

आप whichकमांड का उपयोग कर सकते हैं ।

यदि आप के lsरूप में ls -alऔर फिर टाइप के लिए एक उपनाम सेट which ls, आप देखेंगे:

ls: aliased to ls -al


बैश की कोई whichआज्ञा नहीं है ।
गीरा

मेरे लिए काम नहीं कर रहा है ..
Chiel दस Brinke

2
whichउपनामों को देखने का एक बुरा तरीका है जैसा कि यहां बताया गया है: unix.stackexchange.com/questions/10525/… यह उबंटू में बैश में मेरे लिए उपनाम के लिए भी काम नहीं करता है।
सुजय फड़के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.