bash / zsh उपनाम: क्या मैं उपसमूह के भीतर तर्कों और उपयोग को पकड़ सकता हूं?


7

मुझे एक उपनाम चाहिए जो "के साथ" शब्दकोश क्रम में एक निर्देशिका लिस्टिंग देता है। फ़ाइलें पहले। ऐसा लगता है कि अपनी खुद की स्क्रिप्ट लिखने की इस कमी को पूरा करने के कुछ तरीके (जो एक वास्तविक समस्या नहीं है) लोकेल को सेट करना है LC_ALL="C"। (यह सॉर्टिंग मैन पेज और कई अन्य साइटों के अनुसार है)।

हालाँकि, लोकेल को "C" कर सकते हैं (और कर सकते हैं) कुछ सॉफ्टवेयर इंस्टॉलेशन को तोड़ सकते हैं। तो मेरा शॉर्ट टर्म सॉल्यूशन इस पर निर्भर है (यह अतिरिक्त ls विकल्पों के बिना, संक्षिप्तता के लिए) है।

alias ls='(LC_ALL="C"; /bin/ls)'

लेकिन यह तर्कों को उपधारा में "पारित" करने की अनुमति नहीं देता है।

यह काम नहीं करता है:

alias ls='(LC_ALL="C"; /bin/ls $*)'

क्या एक सरल उर्फ ​​के साथ इसे संभालने का कोई तरीका है? (शेल स्क्रिप्ट / फंक्शन लिखने के विरोध में, जो मैं कर सकता हूं)।

जवाबों:


10

आपको एक उपधारा की आवश्यकता नहीं है। आप केवल अर्धविराम के बिना चर असाइनमेंट के साथ कमांड को प्रस्तुत करके निम्नलिखित कमांड के लिए वातावरण को बदल सकते हैं । उदाहरण के लिए उत्पादन की तुलना करें

LC_ALL=C env | grep LC_ALL

के उत्पादन के साथ

env | grep LC_ALL

इसलिए, एक लंबी कहानी को छोटा करने के लिए, निम्न उपनाम आपके लिए काम करना चाहिए:

alias ls='LC_ALL=C /bin/ls'

मैंने /bin/lsआपके उदाहरण के रूप में उपयोग किया है , लेकिन जैसा कि कामिल मैकियोरकोव्स्की ने एक अन्य उत्तर के लिए एक टिप्पणी में कहा था , आपका टाइप इन lsकमांड एक उपनाम भी हो सकता है, इसलिए शायद आपको भी उस विकल्प पर विचार करना चाहिए:

alias ls='LC_ALL=C ls'

पवित्र फसलें! कि मुझे csh / tcsh में इतना समय बिताने के लिए क्या मिलता है। मैं बैश और zsh प्रलेखन के माध्यम से पढ़ा है कि एक दर्जन बार के लिए देख रहे हैं और यह नहीं मिला। अतुल्य। धन्यवाद!
tgm1024

lsपूरी तरह से योग्य /bin/lsप्रत्यक्ष निष्पादन योग्य संदर्भ के बजाय उपयोग करने के लिए एक तरफ । यह कुछ ऐसा है जो मैं आमतौर पर लोगों को वैसे भी करने का सुझाव देता हूं। ज्यादातर मामलों में, मैं बस किसी और का प्रतिपादन नहीं चाहता हूं कि उपयोगिता क्या करने वाली है। यह भविष्य में क्या गलत हो सकता है का एक खुला अंत प्रस्तुत करता है। इस संदर्भ /bin/lsका इरादा है और मैं दूसरों को क्या सुझाव देता हूं।
tgm1024
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.