बिल्ट-इन testऔर [यूटिलिटीज के पास -nt" -otगोले में" (" से अधिक नया") और ("पुराने से") परीक्षण होते हैं, तब भी जब शेल "पॉसिक्स मोड" में चल रहा होता है (समान नामों की बाहरी उपयोगिताओं के लिए भी सही है। वे प्रणालियाँ जिनकी मुझे एक्सेस है)। ये परीक्षण दो फाइलों पर संशोधन टाइमस्टैम्प की तुलना करने के लिए हैं। उनके प्रलेखित शब्दार्थ पूरे कार्यान्वयन में थोड़े भिन्न होते हैं (यदि एक या दूसरी फ़ाइल मौजूद नहीं है तो क्या होता है) के संबंध में, लेकिन वे POSIX कल्पनाtest में शामिल नहीं हैं । के लिए उपयोगिता ।
testजब सशर्त आदेश [KornShell] शेल से हटा दिया गया था, तो उन्हें उपयोगिता में आगे नहीं ले जाया गया क्योंकि उन्हेंtestउपयोगिता के ऐतिहासिक कार्यान्वयन में निर्मित उपयोगिता में शामिल नहीं किया गया हैsh।
मान लें कि मैं एक /bin/shशेल स्क्रिप्ट में फ़ाइलों के बीच संशोधन टाइमस्टैम्प की तुलना करना चाहता हूं और फिर इस पर निर्भर करता है कि क्या एक फ़ाइल दूसरे की तुलना में नई है, जैसे कि
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... इसके अलावा मैं और कौन सी उपयोगिता का उपयोग कर सकता था make(जो बाकी स्क्रिप्ट को कम से कम कहने के लिए अनिच्छुक बना देगा)? या मुझे बस यह मान लेना चाहिए कि कोई भी कभी भी "ऐतिहासिक कार्यान्वयन" पर स्क्रिप्ट को चलाने वाला नहीं है sh, या एक विशिष्ट शेल जैसे लेखन के लिए इस्तीफा दे सकता है bash?
-ntफीचर को लागू नहीं करता हैtestजो लगभग अनुमानित है। 1995. आपको सही व्यवहार पसंद होने परfindभीbashआपको बेस अभिव्यक्ति का उपयोग करना चाहिए ।