انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: کامند ls -l دایرکتوری‌ها رو نمایش نمی‌ده (حل شد)  (دفعات بازدید: 1019 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین MR-Mostafa

  • Full Member
  • *
  • ارسال: 180
  • جنسیت : پسر
  • Ubuntu Gnome
سلام
یه سوال در خصوص کامندهای ترمینال داشتم و اونم اینه که طبق توضیحات man ls، کامند ls به همراه آپشن -d باید دایرکتوری‌ها رو نمایش بده ولی وقتی از این دستور استفاده می‌کنم همچین اتفاقی نمی‌یوفته.
-d, --directory
list directories themselves, not their contents

خروجی این دستور همیشه عبارت زیر هست:
.

توی نت جستجو کردم گفته بودن که از دستور زیر استفاده کنم، سوالم این هست که چرا خوده آپشن -d به تنهایی همچین کاری رو نمی‌کنه؟
ls -d */
« آخرین ویرایش: 29 امرداد 1396، 12:38 ب‌ظ توسط MR-Mostafa »
در یک گفتگوی آموزشی مهم نیست کسی اشتباه یا درست جواب دهد، چون در آخر مشخص خواهد شد. می‌نویسم تا همه بخوانند؛ شاید کسی چیزی یاد بگیرد و یا استادی اشتباه مرا بگیرد.
با ما تازه واردها مهربان باشید :D

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : کامند ls -l دایرکتوری‌ها رو نمایش نمی‌ده
« پاسخ #1 : 29 امرداد 1396، 12:44 ق‌ظ »
سلام
اگه اجازه بدین یه سری مقدمات رو توضیح بدم بعد برم سر سوالتون
اول اینکه . چیه ؟
کارکتر . به دایرکتوری فعلی اشاره می کنه می تونین این قضیه رو به این صورت چک کنین :
cd .با زدن دستور بالا مسیر تغییر نمی کنه و رو همین مسیر فعلی می مونه
دوم اینکه .. چیه ؟
کارکتر .. به دارکتوری بالاتر اشاره می کنه و این قضیه رو به این صورت چک کنین :
cd ..با زدن دستور بالا مسیر جاری به مسیر بالاتر تغییر پیدا می کنه
سوم اینکه آرگومان پیش فرض (در صورت عدم استفاده از آرگومان) دستور ls چیه؟
دستور ls از آرگومان پیش فرض . استفاده می کنه (تا محتوی پوشه ی فعلی رو نیشون بده) برای تست کردن این قضیه اگه شما این دو دستور رو اجرا کنین خروجی یکسانی خواهند داشت:
ls
ls .
حالا بریم سر سوالتون ...
برداشتی که من از man page دارم اینه که اون سوییچ -d برای نمایش صرفاً مسیرها نیست بلکه این سوییچ باعث می شه که در خروجی خود اون مسیرها و یا فایل ها به نمایش در بیان نه محتویات اونا (مثلا ls x محتویات x رو نیشون می ده ولی ls -d x خود x رو)
برای اثبات حرفم کافیه شما دستور زیر رو اجرا کنین :
ls -d *این خروجی تمام فایل ها و مسیرهای غیر مخفی رو نیشون می ده چون اون * یعنی "هر چی"
حالا سوال ایجاست که اگه ls -d رو اجرا کنیم چی میشه ؟
اگه به اون قسمت سوم مقدماتی که توضیح دادم توجه کنین جواب این سوال رو می گیرین ...
طبق قسمت سوم این دو دستور با هم یکسان هستن (چون هیچ آرگومانی وارد نکردیم) :
ls -d
ls -d .
الان اگه شما دستور ll تو ترمینال بزنین (دستور ll یک alias از ls محسوب می شه و این alias تو توزیع های مختلف متفاوته و تو بعضی از توزیع ها اصن وجود نداره ولی تو اوبونتو برابر ls -alF هستش) یه عالمه چیز مختلف میاره ولی تنها چیزی که . هستش خود . هستش ! (مسیر فعلی با . نیشون داده می شه)
حالا اگه شما بخواین تمام فایل های و فولدر های مخفی رو نیشون بده (فایل ها و فولدرهای مخفی با . شروع می شن) باید دستور زیر رو بزنین :
ls -d .*این یعنی با . شروع بشه بعدش هر چی بود ، بود ...
حالا اگه بخوایم مسیرها رو فقط نیشون بده باید چیکار کنیم ؟
شما دستور ls -F رو اجرا کنین اگه به خروجی دقت کنین می بینین که تمام مسیر ها به کارکتر / ختم شدن پس دستور ما باید این شکلی باشه :
ls -d */
یعنی اولش هر چی بود ، بود فقط آخرش / باشه

توجه۱: دقت کنین که اگه * رو وارد نکنیم یعنی اون اسم باید دقیقاً وجود داشته باشه و برای مثال ls -d . فقط خود . رو نیشون می ده)

توجه۲ :دقت کنین که اگه تو تمام دستورات بالا اون -d رو وارد نکنیم خروجی خود فایل ها و فولدرهایی که با الگو مطابقت دارن رو نیشون نمی داد بلکه محتویات اونا رو نیشون می داد (مثلا ls محتویات پوشه ی فعلی رو نشون می ده ولی ls -d خود پوشه ی فعلی رو)

اینم اضافه کنم شما برای دیدن مسیرهای موجود تو مسیر فعلی می تونین از دستور dir استفاده کنین
« آخرین ویرایش: 29 امرداد 1396، 01:13 ق‌ظ توسط ali76 »

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
پاسخ : کامند ls -l دایرکتوری‌ها رو نمایش نمی‌ده
« پاسخ #2 : 29 امرداد 1396، 09:01 ق‌ظ »
نقل‌قول
اگه به خروجی دقت کنین می بینین که تمام مسیر ها به کارکتر / ختم شدن
من اینو اضافه کنم که در خروجی اینجور فرمان ها، رنگ دایرکتوری ها با فایل ها متفاوت است، در نتیجه به راحتی میتوان آنها را شناسایی کرد.

فکر کنم استارتر جوابشو کامل گرفت. یک (حل شد) به آخر عنوان تاپیک اضافه شود.
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین MR-Mostafa

  • Full Member
  • *
  • ارسال: 180
  • جنسیت : پسر
  • Ubuntu Gnome
پاسخ : کامند ls -l دایرکتوری‌ها رو نمایش نمی‌ده
« پاسخ #3 : 29 امرداد 1396، 12:37 ب‌ظ »
ممنونم از لطفتون و صمیمانه تشکر می‌کنم که به سوالم پاسخ دادید.
در یک گفتگوی آموزشی مهم نیست کسی اشتباه یا درست جواب دهد، چون در آخر مشخص خواهد شد. می‌نویسم تا همه بخوانند؛ شاید کسی چیزی یاد بگیرد و یا استادی اشتباه مرا بگیرد.
با ما تازه واردها مهربان باشید :D