স্ক্রিপ্টটি কেবলমাত্র সিমলিংকের জন্য পরীক্ষা করা সম্পর্কে ক্যালিব সঠিক। তবে কেন অংশটি বাদ গেল এবং আমি আগ্রহী ছিলাম। যদি আপনি কোর্টিলস উত্স কোডটি দেখেন এবং পরীক্ষার আউটপুটটি স্ট্রেস করেন আপনি দেখতে পাচ্ছেন যে আপনি যখন প্রতীকী লিংক পরীক্ষাটি চালাবেন তখন এটি lstat ব্যবহার করে এবং আপনি যদি -f পরীক্ষা ব্যবহার করেন তবে এটি আসলে 'স্ট্যাট' কল করে যা সিমলিংকের অনুসরণ করে:
$ ln -s varnish_config XXX
$ strace -s 2000 test -L XXX 2>&1 | grep XXX
execve("/usr/bin/test", ["test", "-L", "XXX"], [/* 47 vars */]) = 0
lstat("XXX", {st_mode=S_IFLNK|0777, st_size=14, ...}) = 0
$ strace -s 2000 test -L varnish_config 2>&1 | grep varnish
execve("/usr/bin/test", ["test", "-L", "varnish_config"], [/* 47 vars */]) = 0
lstat("varnish_config", {st_mode=S_IFREG|0664, st_size=1046, ...}) = 0
$ strace -s 2000 test -f XXX 2>&1 | grep XXX
execve("/usr/bin/test", ["test", "-f", "XXX"], [/* 47 vars */]) = 0
stat("XXX", {st_mode=S_IFREG|0664, st_size=1046, ...}) = 0
স্ট্যাট ম্যান পৃষ্ঠা থেকে:
stat() stats the file pointed to by path and fills in buf.
lstat() is identical to stat(), except that if path is a symbolic link,
then the link itself is stat-ed, not the file that it refers to.
এর অর্থ -f পরীক্ষাটি যথাযথ ফিরে আসবে যতক্ষণ না নির্দিষ্ট ফাইলের নামটি নিয়মিত ফাইল বা নিজেই একটি নিয়মিত ফাইলের একটি সিমিলিংক হয়।
-e
এবং-f
যে ছিল-e
যদি (যে কোন ধরনের) একটি ফাইল অস্তিত্ব চিনতাম করা হয়েছিল, এবং-f
পরীক্ষা বিশেষভাবে ছিল ফাইলটি অস্তিত্ব এবং একটি নিয়মিত ফাইল ছিল। দেখে মনে হচ্ছে যে "নিয়মিত ফাইল" কী তা আমি ভুল