কীভাবে লম্বা ফর্ম্যাটটি ব্যবহার করে (-l) ডিরেক্টরি নির্দেশিকা অনুসরণ করার সময়?


27

আমি লক্ষ্য করেছি যে ls -lকেবলমাত্র আউটপুটটির বিন্যাস পরিবর্তন করে না, পাশাপাশি ডিরেক্টরি সিমলিংকগুলি কীভাবে পরিচালনা করা হয়:

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/

আমি কী আছে তার একটি বিশদ তালিকা পেতে চাই /rmn, /rmnসিমলিংক সম্পর্কিত তথ্য নয় ।

আমি যে কাজ সম্পর্কে ভাবতে পারি তা হ'ল শেল ফাংশন তৈরি করা যা এরকম কিছু করে:

cd /rmn
ls -l
cd -

তবে এটি খুব কৃপণ বলে মনে হচ্ছে, বিশেষত যেহেতু এটি পরবর্তী ব্যবহারের মধ্যে বিশৃঙ্খল cd -। একটি ভাল উপায় আছে কি?

(আমি CentOS 2.6.9 এ আছি)


আমি এটিও লক্ষ্য করেছি এবং কেউও খেয়াল করেছে কিনা তা দেখতে গুগল করতে গিয়েছিলাম। এভাবেই এখানে এসেছি। :)
ইয়েজেগেনি আফানসিয়েভ

উত্তর:


27

আপনার এলএস বিকল্প আছে কিনা দেখুন:

 -H, --dereference-command-line
     follow symbolic links listed on the command line 
 --dereference-command-line-symlink-to-dir
     follow each command line symbolic link that points to a directory

যদি সেগুলি সহায়তা না করে তবে আপনি ম্যাক্রো না করেই আপনার ম্যাক্রোটিকে কাজ করতে পারেন cd -:

(cd /rmn ; ls -l)

যা একটি সাব-শেলের মধ্যে চলে।


এটি আছে -H, এবং এটি কৌতুক করেছে। ধন্যবাদ!
রোমানস্টে

4
আমি সত্যিই --dereference-command-line-symlink-to-dirএকটি সংক্ষিপ্ত ফর্ম ছিল ইচ্ছুক ।
wchargin

14

এই সাধারণ সমস্যাটি সম্পর্কে কেন এত জটিল হতে হবে তা আমি খুব একটা পাই না - তবে সম্ভবত আমি প্রশ্নটি ভুল উপায়ে পেয়েছি। যাইহোক: যখন আমার অনুরূপ কার্যকারিতা প্রয়োজন তখন আমি ব্যবহার করেছি:

ls -lL

এটা আমার ক্ষেত্রে কৌতুক করেছে। থেকে lsমানুষ পৃষ্ঠা:

-L, --dereference
     when showing file information for a symbolic link, 
     show  information  for  the file the link references
     rather than for the link itself

উদাহরণস্বরূপ, আমি /media/stickআমার ইউএসবি স্টিকের ডেটা অ্যাক্সেস করার জন্য একটি শর্টকাট তৈরি করেছি । ls -l /media/stickআসল লিঙ্কটি ls -lL /media/stickপ্রদর্শন করবে , যখন ইউএসবি স্টিকের বিষয়বস্তুগুলি প্রদর্শন করবে ।

এর অভ্যন্তরীণ কাজের মধ্যে পার্থক্য সম্পর্কে গভীরতর গবেষণার পরে -Hএবং -Lঅবশেষে আমি শ্যালো থটস ব্লগে এই বিষয়টি সম্পর্কে একটি চমৎকার নিবন্ধটি পেলাম (এমনকি আপনার সন্তুষ্টির জন্য কিছু ঝরঝরে শেল স্ক্রিপ্টের কৌশলগুলিও দেখিয়েছি!)

এটি দুটি বিকল্পের মধ্যে সূক্ষ্ম পার্থক্যগুলি নির্দেশ করে (মূল ম্যানুয়ালের চেয়ে ভালভাবে!)

  • -H - কেবলমাত্র লিঙ্কগুলিতে কমান্ড লাইনে সুস্পষ্টভাবে উল্লেখ করা হয়েছে
  • -L- কমান্ড লাইনে উল্লেখ না করা সত্ত্বেও বিন্যস্ত লিঙ্কগুলি

(এই দু'টি যখন সাধারণ কাজকর্মের সাথে ব্যবহৃত হয় , তখন সাধারণভাবে আউটপুটটিতে কোনও পার্থক্য থাকা উচিত নয়))

এছাড়া: উচিত দীর্ঘ ফর্ম (মনে রাখা পছন্দ করা --option), এটা খুব সম্ভবত মুখস্থ করা কম কষ্টকর ব্যাপার --dereferenceএর বেজায় লম্বা দৈত্য চেয়ে --dereference-command-line-symlink-to-dir


5
ls -l /rmn/

এটা করতে হবে বা

ls -l /rmn/.

যাইহোক, আচরণের সাথে এবং বাইরে পৃথক হওয়া উচিত নয় -l। আপনার জন্য একটি নাম আছে ls?


3
lsপতাকা পাগল। ডিফল্ট বন্ধ করে -lতোলে -H, হিসাবে -Fকোর্টিলগুলি দেখুন - কোন ফাইল তালিকাভুক্ত রয়েছে
মিকেল

@ মাইকেল এটি প্রদর্শিত হয় যে আপনি যে সম্পর্কে সম্পূর্ণরূপে ঠিক আছে। এবং হ্যাঁ, বাদাম। (এছাড়াও, আমার কাছে
এলএসের জন্য কোনও উপাধ নেই

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