কোনও ডিরেক্টরিতে সিমিলিং করা ls -l
আমি ln -s dir
বা না তার উপর নির্ভর করে বিভিন্ন ফলাফল দেয় ln -s dir/
। তবে আসল পার্থক্য কী, এবং কোনটি আমার পছন্দ করা উচিত কেন?
কোনও ডিরেক্টরিতে সিমিলিং করা ls -l
আমি ln -s dir
বা না তার উপর নির্ভর করে বিভিন্ন ফলাফল দেয় ln -s dir/
। তবে আসল পার্থক্য কী, এবং কোনটি আমার পছন্দ করা উচিত কেন?
উত্তর:
কোন পার্থক্য নেই। (লক্ষ্যটি যদি কোনও ডিরেক্টরি বিদ্যমান না থাকে তবে সেখানে পার্থক্য হবে))
শেল সম্পূর্ণ হওয়ার কারণে চূড়ান্ত স্ল্যাশটি এখানেই শেষ হতে পারে: কিছু কনফিগারেশন সহ, ln -s tar
TabSpacelink
সম্পূর্ণ হয় ln -s target/ link
।
foo -> bar/
তারপর foo/qux
সমতূল্য bar//qux
। আনুষ্ঠানিকভাবে প্রশ্নের শিরোনামটি অন্তর্ভুক্ত না থাকাকালীন foo -> bar/
আমি সেখানে আমার উত্তরে সেই মামলাটি নিয়েও আলোচনা করি।
আমি কেবল ভাবতে পারি এটি হ'ল ডিরেক্টরি মুছে ফেলা এবং একটি ফাইল তৈরি করা কারও কাছ থেকে এটি আপনাকে "রক্ষা করে"।
[user@host linktest]$ mkdir test
[user@host linktest]$ ln -s test/ slash
[user@host linktest]$ ln -s test noslash
[user@host linktest]$ ls -l
total 4
lrwxrwxrwx 1 paul paul 4 Feb 21 21:00 noslash -> test
lrwxrwxrwx 1 paul paul 5 Feb 21 21:00 slash -> test/
drwxrwxr-x 2 paul paul 4096 Feb 21 20:59 test
[user@host linktest]$ file *slash
noslash: symbolic link to `test'
slash: symbolic link to `test/'
[user@host linktest]$ rmdir test
[user@host linktest]$ file *slash
noslash: broken symbolic link to `test'
slash: broken symbolic link to `test/'
[user@host linktest]$ touch test
[user@host linktest]$ file *slash
noslash: symbolic link to `test'
slash: broken symbolic link to `test/'
[user@host linktest]$
লক্ষ্যটি কোনও ফাইলের সাথে প্রতিস্থাপন করা হলে স্ল্যাশ সহ সংস্করণটি ভেঙে যায়।
প্রশ্ন আগ্রহী। আমি ছোট পরীক্ষা করেছি:
$ mkdir dir
$ ln -s dir/ test_slash
$ ln -s dir test_noslash
$ ls -l
total 4
drwxr-xr-x 2 vrusinov vrusinov 4096 Feb 21 16:41 dir
lrwxrwxrwx 1 vrusinov vrusinov 3 Feb 21 16:41 test_noslash -> dir
lrwxrwxrwx 1 vrusinov vrusinov 4 Feb 21 16:41 test_slash -> dir/
$ strace ls test_slash 2> trace_slash
$ strace ls test_noslash 2> trace_noslash
$ wc -l trace_*
79 trace_noslash
79 trace_slash
$ diff -u trace_* | less
যেমন আপনি দেখতে পাচ্ছেন, সিস্টেম কলগুলির সংখ্যার মধ্যে কোনও পার্থক্য নেই (কমপক্ষে ls এর জন্য) এবং ট্রেসগুলি দেখতে খুব সাদৃশ্যপূর্ণ। যাইহোক, এটি কেবল ডাম্প পরীক্ষা এবং আমি নিশ্চিত নই - কিছু পার্থক্য থাকতে পারে।
আপনার প্রশ্নটি আসলে ls
প্রোগ্রামটির আচরণ সম্পর্কে ।
1) আপনি যদি do ls -l $dir
dir প্রকৃতপক্ষে একটি সিমলিংক করেন তবে আপনি সিমলিংক সম্পর্কিত তথ্য পাবেন।
2) আপনি যদি do ls -lL $dir
dir কোনও ডিরেক্টরিতে একটি syMLink হয় তবে আপনি লক্ষ্য ডিরেক্টরি সম্পর্কে তথ্য পাবেন।
3) আপনি যদি ls -l $dir/.
এটি করেন তবে সিমলিংকে অনুসরণ করতে বাধ্য করে এবং লক্ষ্য ডিরেক্টরি সম্পর্কে তথ্য সরবরাহ করে।
৪) আপনি যদি করেন ls -l $dir/
তবে ফলাফলগুলি # 1 এর মতো হতে পারে বা কোন সংস্করণ ls
ব্যবহৃত হচ্ছে তার উপর নির্ভর করে # 3 এর মতো হতে পারে । আমি # 1 এর মতো করে সোলারিসের পুরানো সংস্করণে অভ্যস্ত ছিলাম এবং লিনাক্স এটি # 3 এর মতো করে দেখে অবাক হয়েছিল।
এবং কোনটি আমার পছন্দ করা উচিত কেন?
ট্রেড স্ল্যাশ ব্যতীত যদি আপনি উদ্বিগ্ন হতে পারেন যে কোনও ডিরেক্টরি নির্দেশিকা কোনও ডিরেক্টরিতে একটি সিমলিংক বনাম একটি প্রকৃত ডিরেক্টরি কিনা।
পিছনে স্ল্যাশ সহ যদি আপনি ডিরেক্টরিটিতে পরিবর্তে ডিরেক্টরিতে থাকা ফাইলগুলি সম্পর্কে আরও উদ্বিগ্ন হন।