আমি বিজ্ঞপ্তিযুক্ত লিঙ্কগুলি কীভাবে সন্ধান করব?


12

আমি এইচপি-ইউএক্স সিস্টেমে কাজ করছি এবং কোনও বিজ্ঞপ্তি প্রতীকী লিঙ্ক আছে কিনা তা জানতে চাই।

এখন পর্যন্ত আমি কমান্ডটি ব্যবহার করছি:

ls -lrt  `find ./ -follow -type l`

তবে এটি কেবল বর্তমান ডিরেক্টরিতে ls -lrt করছে।

কোনও সিস্টেমে সমস্ত বিজ্ঞপ্তিযুক্ত লিঙ্কগুলি খুঁজে পেতে আমার কোন আদেশ ব্যবহার করা উচিত?


1) আপনি বর্তমান ডিরেক্টরিটি পাচ্ছেন কারণ findকমান্ডটি হয় কেবল মুদ্রণ করছে .বা কোনও কিছু মুদ্রণ করছে না (সুতরাং আপনি কেবল চালাচ্ছেন ls -lrtবা ls -lrt .) findকীভাবে এটি ঠিক করবেন তা বলার জন্য এইচপি-ইউএক্স সম্পর্কে পর্যাপ্ত পরিমাণে জানেন না (সম্ভবত এটির জন্য একটি সুস্পষ্ট প্রয়োজন) -print? )। 2) "বিজ্ঞপ্তি" বলতে কী বোঝ? ./a -> ./bএবং ./b -> ./a? কি হবে /home/foo/a -> /home? বা /home/foo/a -> /home/barএবং /home/bar/b -> /home/foo?
ডারফকে

বিজ্ঞপ্তি দ্বারা আমি বোঝাতে চেয়েছিলাম যে কোনও ধরণের লিঙ্ক যা উপরের সমস্তটি লুপ তৈরি করতে পারে। আমি এখনই প্রিন্ট দিয়ে চেষ্টা করছি
ভ্লাদিমির

এছাড়াও, কেন -followআমাকে আসল লিঙ্কগুলি দেয় না কেন ফলাফলগুলি হয়?
ভ্লাদিমির 21

ছাড়া -follow, findলিঙ্কটি নিজেই পরীক্ষা করে, ফাইলটি এটি নির্দেশ করে না। সুতরাং find . -type lযেগুলি লিঙ্কগুলি রয়েছে সেগুলি মুদ্রণ করে (কারণ তারা হ'ল -type l) এমনকি তারা কী দেখায় তা না দেখে (যা ফাইল বা ডিরেক্টরি বা অন্যান্য লিঙ্ক যা ফাইল বা ডিরেক্টরিতে নির্দেশ করে)।
ডার্পকে

উত্তর:


18

জিএনইউ ফাইন্ডের ম্যানপেজটি বলেছে যে সমস্ত পসিক্সের সন্ধানগুলি এই ক্ষেত্রে ফাইল সিস্টেম লুপগুলি সনাক্ত করতে এবং ত্রুটি বার্তাগুলি নির্গত করার কথা বলেছে এবং আমি পরীক্ষা করেছি

find . -follow -printf ""

GNU ফাইন্ডে, যা ফর্মটির লুপগুলি খুঁজে পেতে ./a -> ./bএবং ./b -> ./aত্রুটিটি মুদ্রণ করতে সক্ষম হয়েছিল

find: `./a': Too many levels of symbolic links
find: `./b': Too many levels of symbolic links

(এটিতেও কাজ হয়েছিল a->b->c->a)

অনুরূপভাবে, ফর্মের loops ./foo/x -> ..এবং ./foo/a -> ./bar+ + ./bar/b -> ./fooমুদ্রিত ত্রুটি

find: File system loop detected; `./foo/a/b' is part of the same file system loop as `./foo'.
find: File system loop detected; `./bar/b/a' is part of the same file system loop as `./bar'.
find: File system loop detected; `./foo/x' is part of the same file system loop as `.'.

আপনি যদি আউটপুটটি পড়ার বাইরে অন্য কিছু করতে চান তবে আপনার এটি স্টার্ডার থেকে স্টাডাউটে পুনর্নির্দেশ করতে হবে এবং এটিকে কিছু স্ক্রিপ্টে পাইপ করতে হবে যা ত্রুটি বার্তাগুলিকে বিশ্লেষণ করতে পারে।


এর অর্থ কি এই যে কোনও লুপ থাকলে ত্রুটি বার্তা উপস্থিত হত?
ভ্লাদিমির 21

জিএনইউ সহ এবং সন্ধান করুন -followyes
ডার্পকে

ঠিক আছে, তবে কীভাবে এটি lsব্যবহার -followকরবেন না যখন আসল লিঙ্ক পাওয়ার পরিবর্তে কেবল একটি পাওয়ার বিষয়টি ব্যাখ্যা করবেন ?
ভ্লাদিমির

1
শেলটি এভাবেই কাজ করে। আপনি lsআপনার findকমান্ডের আউটপুট ব্যবহার করে কমান্ডটি চালাতে বলেছিলেন । আপনার findকমান্ডটি কিছু প্রিন্ট করেনি, সুতরাং আপনার শেল lsকিছুই না দিয়ে কার্যকর করা হয়েছে যা বর্তমান ডিরেক্টরিকে তালিকাবদ্ধ করে।
ডারফকে

ডায়ারফকের সমাধানটি সিগউইন শেল থেকে আহ্বান করে উইন্ডোজ 7-তে চক্রগুলি সন্ধান করে।
ডন গেটলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.