मैं पहले डॉट "शो" कैसे बना सकता हूं?


46

कहीं न कहीं जिस तरह से मैंने अपने ls कमांड को खराब कर दिया है और अब मुझे यह ऑर्डर मिलता है जब दौड़ रहा होता है

$ ls -AhHl --color=auto
-rwxr-xr-x 1 clang clang  640 Mar  1 02:46 apple-touch-icon-precomposed.png
-rwxr-xr-x 1 clang clang  784 Jul 12 02:54 crossdomain.xml
-rwxr-xr-x 1 clang clang 1.2K Mar  1 02:46 favicon.ico
drwxr-xr-x 8 clang clang 4.0K Jul 12 23:50 .git
-rw-r--r-- 1 clang clang   17 Feb 29 19:48 .gitignore
-rwxr-xr-x 1 clang clang 1.4K Jul 12 02:54 humans.txt

मैंने ऐसा क्या किया जिससे ls ने dotfiles को अनदेखा किया और इसके बजाय पहले अक्षर से आदेश दिया?

का आउटपुट locale:

$ locale
LANG=
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

जवाबों:


47

जोड़ने का प्रयास करें

export LC_COLLATE="C"

अपने dotfiles में, या LC_ALLअसाइनमेंट को इसमें बदलना :

export LC_ALL="C"

यह चरित्र के स्तर के कामों पर छँटनी के तरीके को नियंत्रित करता है - जबकि डिफ़ॉल्ट को डॉटफ़ाइल्स इनलाइन को सॉर्ट करना होगा, इससे sortसूची डॉटफ़ाइल्स पहले बन जाएगी।

हालांकि, ध्यान दें कि यह मूल रूप से सभी स्थानीय-जागरूक उपयोगिताओं में आपके वास्तविक स्थान के लिए समर्थन बंद कर देगा।


आगे जाने के लिए, GNU कोरुटिल्स मैनुअल (जोर मेरा) के हवाले से :

यदि आप एक गैर- POSIX लोकेल (उदाहरण के लिए, सेटिंग LC_ALLपर en_US) का उपयोग करते हैं, तो उस तरह का आउटपुट उत्पन्न हो सकता है जो आपके आदी होने के बजाय अलग तरीके से सॉर्ट किया गया हो।

उस स्थिति में, LC_ALLपर्यावरण चर को सेट करें C। ध्यान दें कि सेटिंग में केवल LC_COLLATEदो समस्याएं हैं। सबसे पहले, यह अप्रभावी है अगर LC_ALLसेट भी किया जाता है। दूसरा, इसका अपरिभाषित व्यवहार है अगर LC_CTYPE(या LANG, अगर LC_CTYPEपरेशान है) एक असंगत मूल्य पर सेट है। उदाहरण के लिए, आप अपरिभाषित व्यवहार मिलता है LC_CTYPEहै ja_JP.PCKलेकिन LC_COLLATEहै en_US.UTF-8


2
LC_ALL = "C" सेट करने से चाल चली गई! त्वरित प्रतिक्रिया के लिए धन्यवाद
clang1234

7
LC_ALL = "C" सेट करना lsविदेशी भाषा (जैसे जापानी) यूनिकोड फाइलनाम के रूप में होगा????????
ओहो

ध्यान दें कि export LC_ALL="C"अपने dotfiles को जोड़कर आप सभी स्थानीय-जागरूक उपयोगिताओं में अपने वास्तविक स्थान के लिए प्रभावी रूप से समर्थन खो देंगे। जबकि मुद्रण समस्या जो @ohho को इंगित करती है, उसे फ़ारूल के उत्तर के साथ फिर से बनाया जा सकता है , आप सॉर्टिंग समस्याएँ पेश करेंगे : सॉर्टिंग केवल बाइट मान से होगी, जिसके परिणामस्वरूप सॉर्टिंग है (a) अप्रत्याशित रूप से केस-संवेदी , और (b) हमेशा के लिए स्थान उच्चारण किए गए वर्ण। सभी गैर-उच्चारण के बाद
mklement0

35

वास्तविक आवश्यकता के बिना किसी भी सिस्टम में व्यापक बदलाव से बचने के लिए, कोई केवल उसी तरह से बदलाव कर सकता है कि कैसे lsवर्तमान उपयोगकर्ता के लिए उपनाम जोड़कर काम करता है .bashrc:

alias ll='LC_COLLATE=C ls -alF'

यह सबसे पहले डॉट फाइलों को सॉर्ट करता है, सिरिलिक की तरह "असामान्य" चरित्र सेट को ठीक से दिखाने (दिखाने और क्रमबद्ध करने) की अनुमति देता है। एकमात्र दोषी जो छँटाई केस-संवेदी होगा।

स्रोत: http://ubuntuforums.org/showthread.php?t=816753


3
यह अब तक का सबसे अच्छा जवाब है
इंजीनियर डॉलरी

सुंदर। सिस्टम-वाइड कॉन्फ़िगरेशन को बदलने से बहुत बेहतर है (जो आपको कुछ अजगर मॉड्यूल के साथ समस्याएं पैदा कर सकता है)।
गुई एम्ब्र्स

1
यह सबसे मददगार जवाब था। इसके अतिरिक्त, ऐसे वातावरण में जहां LC_ALLपहले से ही lsसूची के शीर्ष पर स्थित डॉटफ़ाइल्स को छँटाई / फहराने के साथ कुछ असंगत है , alias ll='LC_ALL=C ls -alF'इसके बजाय इसका उपयोग करें , क्योंकि LC_COLLATEयह ओवरराइड नहीं करता है LC_ALL
मैट

8

स्थापना

LC_ALL="C.UTF-8"

मेरे लिए ठीक काम करता है - umlauts और "ls -la" पहले डॉट-फाइलों को सूचीबद्ध करता है।


3
डॉट फाइलें पहले सूचीबद्ध हैं, लेकिन अब एक अपरकेस अक्षर से शुरू होने वाले फ़ाइल नाम उन लोगों से पहले सूचीबद्ध किए जाते हैं जो एक लोअरकेस से शुरू होते हैं।
चन्नोस

1
+1 स्वीकृत उत्तर की तुलना में करीब आने के लिए, लेकिन सीमाओं को संक्षिप्त करने के लिए: छँटाई केस-संवेदी , और विदेशी वर्ण - जबकि अब सही ढंग से मुद्रित होने के कारण UTF-8- सही ढंग से सॉर्ट नहीं की जाएगी ।
mklement0

3
C.UTF-8अमान्य लोकल है, इसलिए लोकल वापस लौट जाता है C। आप अभी भी UTF-8 समर्थन खो देते हैं। वास्तव में, यह और भी बदतर है क्योंकि LC_ALL=Cअधिकांशप्रोग्राम ज्यादातर मल्टीबीट वर्णों को सही ढंग से प्रदर्शित करते हैं , लेकिन LC_ALL=something_invalidकुछ कार्यक्रमों के साथ (जैसे `एलएस) नहीं।
मार्टिन टूरनोइज

@MartinTournoij लेकिन अगर स्टीफन चेज़लस GNU सिस्टम के बारे में अन्यथा कहते हैं (तो सामान्य रूप से डेबियन और लिनक्स), जो सही है?
मुरु

@ मुझे यकीन नहीं है, मुझे लगता है कि आपको स्टीफन से पूछना होगा? मुझे पता है कि localeइसके साथ त्रुटि हुई है LC_ALL=C.UTF-8: gist.github.com/Carpetsmoker/ef09b3734b29372939f97107413d7733 - जो कि आर्क लिनक्स पर है।
मार्टिन टूरनोइज

3

एलएस (1) मैनपेज सूची:

पाठ के भीतर (संस्करण) संख्या के -v प्राकृतिक प्रकार

यह परिवर्तन लगता है कि कैसे पीरियड्स को क्रमबद्ध किया जाता है और पहले ग्रुप डॉटफाइल्स करता है। मेरे पास है:

alias ls='ls -vAF'
alias ll='ls -l'

मेरी ~ / .bashrc में।


1

दीवार के विचार से दूर

अस्वीकरण: यह आप में से अधिकांश के लिए ओवरकिल होने जा रहा है। लेकिन मैं 1995 से ऐसा कर रहा हूं और मेरे पास अपनी दुनिया बनाने का कौशल है कि मैं यह कैसे चाहता हूं। तो, मैं क्यों नहीं?

मुझे वास्तव में विभिन्न छँटाई विधियों का उपयोग करना पसंद है ls, विशेष रूप से -rt(जो कि rसंशोधित time द्वारा क्रमबद्ध है )। इसलिए, मैंने कुछ क्रेज़ी करने की कोशिश की और अपनी छँटाई करने के लिए awk का उपयोग किया।

# save as ~/.ls.awk
# inpsired by http://superuser.com/questions/448291/how-can-i-make-ls-show-dotfiles-first

{
    if($1 == "total"){
        print $0
        next
    }
    # may need to adjust $9 to match your name column
    if(match($9, /^(\033\[[0-9]*m)*\./)) # optionally look past xterm highlighting like: ^[[34m
        df[++dd] = $0
    else
        nf[++nn] = $0
}
END{
    while (++d in df)
        print df[d]
    while (++n in nf)
        print nf[n]
}

अब एक बैश उपनाम को परिभाषित करने के बजाय, मैं एक बैश फ़ंक्शन को परिभाषित करता हूं (क्योंकि उपनाम केवल तर्कों को अंत में जोड़ सकते हैं, लेकिन फ़ंक्शन उन्हें कहीं भी उपयोग कर सकते हैं)

ll(){ CLICOLOR_FORCE=1 ls -lhA $* | awk -f ~/.ls.awk; }

परिणाम देखने के लिए

आइए कुछ नमूना फाइलें बनाएं:

for n in 4 .4 3 .3 2 .2 1 .1; do touch $n; sleep 1; done

सादे एलएस का उपयोग करना

$ ls -lA
total 8
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .1
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .2
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .3
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .4
-rwxr-xr-x  1 bbronosky  staff  285 Nov 29 13:14 .ls.awk
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 1
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 2
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 3
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 4
$ ls -lArt

total 8
-rwxr-xr-x  1 bbronosky  staff  285 Nov 29 13:14 .ls.awk
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 4
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .4
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 3
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .3
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 2
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .2
-rwxr-xr-x  1 bbronosky  staff    0 Dec  1 00:25 1
-rw-r--r--  1 bbronosky  staff    0 Dec  1 00:25 .1

मेरे फ़ंक्शन का उपयोग करना जो awk के साथ फ़िल्टर करता है

$ ll
total 8
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .1
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .2
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .3
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .4
-rwxr-xr-x  1 bbronosky  staff   285B Nov 29 13:14 .ls.awk
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 1
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 2
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 3
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 4

$ ll -rt
total 8
-rwxr-xr-x  1 bbronosky  staff   285B Nov 29 13:14 .ls.awk
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .4
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .3
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .2
-rw-r--r--  1 bbronosky  staff     0B Dec  1 00:25 .1
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 4
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 3
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 2
-rwxr-xr-x  1 bbronosky  staff     0B Dec  1 00:25 1

आप इसके कार्यान्वयन को यहाँ देख सकते हैं https://github.com/RichardBronosky/dotfiles/commit/6170301a9

इसके बारे में सबसे महत्वपूर्ण बात यह है कि यह आपके lsआउटपुट को ट्विक करने के लिए एक रूपरेखा है । आप उस awk फ़िल्टर के साथ कुछ भी कर सकते हैं। आप चाहते हैं कि यह निर्देशिका हो, फिर dotfiles, फिर सब कुछ हो। एक बार जब आप अपने xterm रंगों को संभालना जानते हैं, तो यह बहुत मुश्किल नहीं है। यह पूरी तरह से आप पर निर्भर है।


-1

इसे अपने .bashrc या / etc / bashrc फ़ाइल में आज़माएँ:

LS_OPTIONS='--color=tty -A -F -X -B -h -v -b -T 0 --group-directories-first';
export LS_OPTIONS;
alias ls='/bin/ls $LS_OPTIONS';

यह मानता है कि आप ls का कुछ नया संस्करण चला रहे हैं जो एक विकल्प के रूप में "--group-directory-first" लेता है। आप अपनी पसंद के अनुसार एलएस विकल्पों को स्पष्ट रूप से ट्विक कर सकते हैं।


--group-directories-firstपहले "शो डॉटफाइल्स" के साथ क्या करना है?
जी-मैन का कहना है कि 'मोनिका'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.