क्या `ls -lt` सटीक mtimes या सिर्फ अनुमानित mtimes दूसरे तक का पालन करेगा?


10

ls -lकेवल सेकंड के लिए फ़ाइलों का संशोधन टाइमस्टैम्प दिखाता है। यदि दो फ़ाइलों में सेकंड तक एक ही टाइमस्टैम्प है, लेकिन इसे एक ही समय में बिल्कुल संशोधित नहीं किया गया है, ls -ltतो सटीक mtimes के क्रम में फ़ाइलों को ऑर्डर करेगा या बस सेकंड के लिए लगभग mtimes (और इसलिए फ़ाइलों के बीच का क्रम हो सकता है मनमाने ढंग से)?

जवाबों:


17

यह बहुत lsकार्यान्वयन पर निर्भर करता है । यहाँ GNU / Linux सिस्टम पर पाए गए 4 में से:

$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
  • GNUls , GNU प्रोजेक्ट (GNU कोरुटिल्स संग्रह से) से एक है। यह आमतौर पर GNU सिस्टम पर पाया जाता है, जैसे डेबियन (लिनक्स या kFreeBSD कर्नेल), सिगविन या फेडोरा।

    $ gnu-ls -rt
    a  c  b
    
  • lsसे विरासत Toolchest , ओपनसोलारिस उपकरणों की एक बंदरगाह:

    $ heirloom-ls -rt
    a  b  c
    
  • lsसे एटी एंड टी मुक्त स्रोत संग्रह , संभवतः में बनाया गया ksh93। एक और काफी कुछ फैंसी एक्सटेंशन के साथ:

    $ ast-ls -rt
    a  c  b
    $ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
    ls is a shell builtin version of /opt/ast/bin/ls
    a  c  b
    
  • व्यस्त (जैसा कि पाया गया है (या एक व्युत्पन्न)) अधिकांश (आमतौर पर एम्बेडेड) लिनक्स-आधारित सिस्टम):

    $ busybox ls -rt
    c  b  a
    

तो, उन लोगों में, GNU और ast lsभिन्नात्मक दूसरा भाग मानते हैं। दूसरे लोग उसी सेकंड के भीतर अंतिम रूप से संशोधित फ़ाइलों की तुलना में लेक्सिकल तुलना करते हैं। केवल बिजीबॉक्स वहां lsसम्मानित करता -rहै।

मेरे परीक्षणों में, FreeBSD lsभी उप-दूसरी परिशुद्धता का समर्थन करता है (बशर्ते कि वे VFS स्तर पर सक्षम हों, vfs.timestamp_precisionsysctl देखें )।

zshग्लब्स ( omग्लोब क्वालिफायर के साथ मॉडर्नाइजेशन टाइम पर ऑर्डर करने के Omलिए , रिवर्स ऑर्डर के लिए) भी पूरा समय लेते हैं:

$ echo *(Om)
a c b

[ file1 -nt file2 ], जहां समर्थित उप-सेकंड ग्रैन्युलैरिटी का भी समर्थन करता है


1
क्या गैर-जीएनयू उपकरण POSIX का उल्लंघन कर रहे हैं, या क्या यह सॉर्टिंग के लिए गोलाई निर्दिष्ट करता है?
केविन

2
Ast-ls क्या है?
रैंडम 832

@ Random832, संपादन देखें।
स्टीफन चेज़लस

2
@ केविन, कल्पना के मेरे पढ़ने से, वे उस संबंध में आज्ञाकारी नहीं हैं। AFAICT, कल्पना में कुछ भी नहीं है जो उप-भाग को अनदेखा करने की अनुमति देता है और POSIX एक सटीक API के साथ सटीक टाइमस्टैम्प प्राप्त करने के लिए प्रदान करता है।
स्टीफन चेज़लस

1
@ikkachu, आप सही कह रहे हैं। मैंने उस पर ध्यान नहीं दिया था। संपादित देखें। यह ast के लिए परिणाम बदलता है।
स्टीफन चेज़लस

4

जीएनयू के lsकार्यान्वयन के संबंध में , रनिंग ls -lवर्णमाला के क्रम ls -ltमें फाइलों को आदेश देगी , और अंतर्निहित फाइल सिस्टम द्वारा समर्थित सबसे बड़ी सटीकता के लिए संशोधन समय के क्रम में फाइलें ऑर्डर करेगी, सबसे पहले। आप --full-timeविकल्प का उपयोग करके इसे देख सकते हैं ।

तो, आपके प्रश्न का उत्तर देने के लिए, हां, इसे सबसे बड़ी सीमा तक बढ़ाया जा सकता है, लेकिन केवल जब आप उपयोग करते हैं -t(अन्यथा, यह अल्फ़ाबेटिक के लिए डिफ़ॉल्ट होगा), और एक कार्यान्वयन का उपयोग कर रहा है जो इसका समर्थन करता है ( अधिक विवरण के लिए स्टीफन का उत्तर देखें)। उदाहरण के लिए, ext4आवश्यक टाइमस्टैम्प डेटा को संग्रहीत करने के लिए बड़े पर्याप्त इनोड दिए गए, नैनोसेकंड परिशुद्धता का समर्थन कर सकते हैं।


2
आपको अपने उत्तर में यह जोड़ना चाहिए कि यह केवल GNU ls के बारे में बात करता है। कई अन्य कार्यान्वयन हैं जो अलग तरीके से व्यवहार कर सकते हैं।
रोलैंड इलिग

@ रोलैंडलीग ने कहा
जो

1

यदि आप इसकी तुलना करते हैं तो आप इसकी जाँच कर सकते हैं

ls -lat

तथा

ls -lat --full-time

छँटाई के बारे में वहाँ कुछ भी मनमाना नहीं है।


1

हाँ यह होगा।

परीक्षण करने के लिए, छोटे समय के अंतर वाली दो फाइलें बनाएं:

$ touch aa; sleep 0.2; touch bb

संशोधन समय की जाँच करें:

$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000

सूची ऐसे अंतर का उपयोग करेगी:

$ ls -lt aa bb
-rw-r--r-- 1 user user 0 Jan  7 20:51 bb
-rw-r--r-- 1 user user 0 Jan  7 20:51 aa

साथ --full-timeअंतर स्पष्ट हो जाएगा।

$ ls -lt --full-time aa bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.364248042 0000 bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.072248226 0000 aa

पिछले ब्लॉक में, मेरा मानना ​​है कि आपके पास bbऔर aaपीछे है।
एलेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.