एक कमांड के साथ उपनाम कैसे बनाएं 'और "


10

कुछ पोस्ट पहले किसी ने पूछा कि मेमोरी को प्रतिशत में कैसे दिखाया जाए। किसी ने उत्तर दिया:

free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'

मैं सोच रहा था कि क्या मैं इस कमांड को ~ / .bashrc में उपनाम में बदल सकता हूं। लेकिन उपनाम का सिंटैक्स है:

alias aliasname='command'

मैं यह कैसे कर सकता हूँ? उस आदेश में 'और दोनों शामिल हैं "। मैंने विभिन्न तरीकों की कोशिश की, लेकिन यह काम नहीं किया। क्या यह भी संभव है? क्या मैं कुछ भूल रहा हूँ?


5
नरक को उद्धृत करने से बचने के लिए ऐसे मामलों में किसी फ़ंक्शन को परिभाषित करना आसान हो सकता है।
nohillside

1
@ नोहिलसाइड कार्य आम तौर पर वैसे भी अधिक उपयोगी / शक्तिशाली होते हैं
डी। बेन नोबल

1
aliasname() { free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'; }- अभी भी सिर्फ एक पंक्ति, उद्धरण / परिवर्तन / आदि की आवश्यकता में कोई बदलाव नहीं। वहाँ एक कारण freenode #bash चैनल !aliasfactoid है (अच्छी तरह से था , लेकिन अधिकांश factoid bot के जीवन के कुछ संस्करण के लिए): यदि आपको पूछना है, तो इसके बजाय एक फ़ंक्शन का उपयोग करें
चार्ल्स डफी

जवाबों:



17

यह कहना कि एक उपनाम का वाक्यविन्यास alias aliasname='command'थोड़ा भ्रामक है, क्योंकि यह प्रतीत होता है कि एकल उद्धरण वाक्यविन्यास का हिस्सा हैं। वो नहीं हैं। समान चिह्न के बाद का हिस्सा चर असाइनमेंट के समान है, इसमें वह कोई भी शेल शब्द हो सकता है , जो या तो सादे अक्षरों से बना होता है (उद्धरण के बिना), या एक उद्धृत स्ट्रिंग, या एक संयोजन।

ये सभी मान्य हैं, और अंतिम तीन समतुल्य हैं:

alias ks=ls
alias ls='ls -l'
alias ls="ls -l"
alias ls=ls\ -l

इसलिए, आपको बस इतना करना है कि उर्फ ​​मान के अंदर उद्धरणों को ठीक से बचाना है।

देखें, उदाहरण के लिए यह उत्तर और इस पर चर्चा के लिए ये प्रश्न जैसे अन्य उत्तर:

या, पूरी तरह से उद्धृत मुद्दों से छुटकारा पाने के लिए एक उपनाम के बजाय फ़ंक्शन का उपयोग करें:

freemem() {
    free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.