स्थापित करें coreutils
Homebrew और उर्फ साथ ll
करने gls -Flh --group-directories-first
के बजाय।
brew install coreutils
यदि यह स्थापित नहीं है, तो GNU Coreutils स्थापित करता है।
- का प्रयोग करें
alias ll='gls -Flh --group-directories-first'
में .bashrc
।
(यदि आप .bashrc
दोनों ऑपरेटिंग सिस्टम में एक ही फाइल का उपयोग करना चाहते हैं , तो नीचे देखें।)
उबंटू में, ls
जीएनयू कोरुटिल्स द्वारा प्रदान किया जाता है , जो उबंटू में हमेशा होता है। इसीलिए उबंटू में ls
सपोर्ट करता --group-directories-first
है। संभवतः आप पहले भी macOS ls
पर GNU Coreutils संस्करण का उपयोग कर रहे थे , जो कि Homebrew के रूप में स्थापित करता है, gls
लेकिन जिसे ls
कई तरीकों से प्रयोग करने योग्य बनाया जा सकता है।
ls
एक बाहरी कमांड है, न कि बैश बिलिन। बैश के किसी भिन्न संस्करण या बिल्ड का उपयोग करने से इसे प्रभावित नहीं होना चाहिए। मुझे यकीन नहीं हो रहा है कि जब आपने होमब्रे का उपयोग करके बैश को अपग्रेड किया तो क्या हुआ। हो सकता है कि बाश से ज्यादा अपग्रेड भी मिले; हो सकता है कि आपके पास एकls
शेल फ़ंक्शन या उर्फ एक वैश्विक कॉन्फ़िगरेशन फ़ाइल में परिभाषित किया गया था जिसे बदल दिया गया था; हो सकता है कि आपके पास एक प्रतीकात्मक लिंकls
था जो इंगित कियाgls
गया था और ओवरराइट किया गया था; हो सकता है कि आपके$PATH
पासअभी भी ऐसा कुछ हो, लेकिन आपकापरिवर्तन हो गया है। जो कुछ भी हुआ, ग्नू कोरुटिल्स ls
का समर्थन करता है--group-directories-first
, और इसे स्विच करना (जैसा कि मेरा मानना है कि bmike सुझाव दे रहा है ) को आपकी समस्या को ठीक करना चाहिए।
यदि किसी कारण से आप .bashrc
दोनों प्रणालियों में सटीक एक ही फ़ाइल का उपयोग करना चाहते हैं, तो कुछ संभव दृष्टिकोण हैं। आप gls
अपने उबंटू प्रणाली के लिए एक सिम्लिंक, रैपर स्क्रिप्ट, शेल फ़ंक्शन, या (क्योंकि बैश उर्फ विस्तार गैर-व्यापक है) शैल उपनाम बना सकते हैं। लेकिन मैं सुझाव देता हूं कि यह जांचने के बजाय कि किस ओएस का उपयोग किया जा रहा है .bashrc
। यद्यपि आपको ll
प्रत्येक प्रणाली में परिभाषित एक अलग उपनाम मिलेगा , इस दृष्टिकोण को स्व-दस्तावेजीकरण होने का लाभ है। आपका .bashrc
एक साल, या एक महीने में आप के लिए समझ में आ जाएगा।
if [ "$OSTYPE" == linux-gnu ]; then # Is this the Ubuntu system?
alias ll='ls -Flh --group-directories-first'
else
alias ll='gls -Flh --group-directories-first'
fi
या यदि आप पाते हैं कि आप आमतौर पर कोरुटिल्स चलाना पसंद करते हैं ls
, भले ही आप ll
उर्फ का उपयोग नहीं कर रहे हों , तो आप ls
एक उपनाम बना सकते हैं gls
:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
( उस स्क्रिप्ट के पुराने संस्करण में गलती पकड़ने के लिए धन्यवाद सॉर्सहजप पर जाएं ।)
ls
या macOS का उपयोग कर रहे हैंls
? क्या आपने दूसरे की कोशिश की है?