یکی از پرکاربردترین فرمانهای برای کار با Terminal در توزیعات مختلف Linux، دستور ls است. ls که مخفف List است، برای لیست کردن فایل و فولدرهای موجود در یک مسیر کاربرد دارد و لذا یکی از مهمترین دستورات محسوب میشود. این دستور تعداد زیادی آپشن مفید و کاربردی نیز دارد و بسیار انعطافپذیر است.
در این مقاله میخواهیم به شیوهی استفاده از دستور مهم ls در ترمینال لینوکس بپردازیم و آپشنهای آن را بررسی کنیم.
آشنایی با دستور ls و کاربرد آن
دستور ls یکی از دستورات مهم در مدیریت فایل و فولدرها و همینطور کار با سایر دستورات است. در واقع یکی از نیازهای اصلی کاربر در هر سیستم عاملی این است که بداند در یک مسیر خاص، چه فایلها و فولدرهایی وجود دارد. ممکن است کاربر حین استفاده از دستوری دیگر، نام فایل یا فولدری را اشتباه تایپ کرده باشد و دستور به درستی عمل نکرده باشد. در این صورت با استفاده از ls میتواند لیستی از تمام فایل و فولدرها را مشاهده کند و نام وارد شده را تصحیح کند.
علاوه بر این میتوانید لیست فایل و فولدرها را با فرمت طولانی که در واقع شامل مشخصات مفیدی مثل دسترسیها یا Permissions میشود، بررسی کنید. این موضوع نیز در کار با سایر دستورات مفید واقع میشود.
دستور ls یکی از دستوراتی است که آپشنهای متعددی دارد. برخی آپشنها کاربرد بیشتری دارند که در ادامه با مثالهایی به موارد مهمتر میپردازیم.
قبل از هر چیز بد نیست با استفاده از دستور type، نوع فرمان ls را بررسی کنیم:
با توجه به اسکرینشات فوق مشخص میشود که زمانی که فرمان ls را به صورت ساده و بدون آپشن استفاده میکنید، پارامتر تنظیم رنگها به صورت خودکار که --color=auto است نیز به همراه آن وارد میشود. به عبارت دیگر در لیست خروجی این دستور، رنگ انواع فایل به صورت متفاوت و خودکار انتخاب میشود.
سادهترین شکل استفاده از فرمان ls
برای چک کردن لیست فایل و فولدرها در هر فولدری کاری دلخواهی میتوانید فرمان ls را بدون هیچ پارامتر و آپشن اضافی اجرا کنید. توجه کنید که فولدر کاری با دستور cd قابل تغییر است.
لیست فوق کمی فشرده و شلوغ به نظر میرسد چرا که چندستونی است. اگر بخواهید در هر خط از خروجی، یک آیتم درج شود، میتوانید از آپشن -1 استفاده کنید. در این صورت یک ستون خواهید داشت.
لیست کردن محتویات فولدر دلخواه
شاید نخواهید از دستور cd برای تغییر دادن فولدر کاری استفاده کنید. در این صورت هم استفاده از دستور ls به منظور لیست کردن فایل و فولدرها امکانپذیر است و تنها کاری که لازم است انجام بدهید این است که مسیر فولدر موردنظر را پس از آن ذکر کنید. شاید دو یا چند فولدر موردنظر باشد، در این صورت به جای دو بار اجرا کردن فرمان ls، آدرس دو یا چند فولدر را پس از ls وارد کنید. محتویات فولدرها به ترتیبی که به این فرمان داده شده، ذکر خواهد شد.
به عنوان مثال برای بررسی لیست محتویات دو فولدر Help و gc_help که هر دو در فولدر کاری فعلی قرار دارند، از دستور زیر استفاده میکنیم:
و خروجی به صورت زیر خواهد بود. ابتدای هر لیست نام فولدر مربوطه ذکر میشود:
استفاده از عبارتهای منظم در لیست کردن
اگر به دنبال لیست کردن فایلهایی هستید که نامشان طرح مشخصی دارد، میتوانید از عبارتهای منظم استفاده کنید. علامت سوال یا ? معادل یک کاراکتر و نماد ستاره یا * معادل چند کاراکتر است. با این دو کاراکتر خاص میتوان طرحهای متعددی ساخت. به عنوان مثال:
- اگر میخواهید لیستی از فایلهایی داشته باشید که نامشان با عبارت ip_ آغاز میشود و پس از این عبارت، چند کاراکتر دیگر وجود دارد، میتوانید از نام با طرح ip_* استفاده کنید.
- به همین صورت اگر پس از ip_ تنها یک کاراکتر وجود دارد، از طرح ip_? استفاده کنید.
- اگر در میان نام فایل، عبارت ip وجود دارد، طرح را به صورت *ip* بنویسید.
- اگر نام فایل شامل یک کاراکتر و سپس ip و سپس یک کاراکتر دیگر است، از طرح ?ip? استفاده کنید.
- و هزاران حالت دیگر!
طرح نام فایل را پس از دستور ls تایپ کنید. به مثال زیر و خروجی آن توجه کنید:
منظور از نام، صرفاً اسم فایل نیست بلکه پسوند نیز با همین روش قابل ارزیابی است. به عنوان مثال برای لیست کردن فایلهایی با نام دلخواه، از علامت * استفاده کنید و پسوند موردنظر را پس از . ذکر کنید. دستور زیر فایلهایی با پسوند .C را لیست میکند.
با زدن Enter لیست خروجی مثال ما چاپ میشود:
نکتهی دیگر این است که میتوانید با فرمان grep در لیست خروجی دستور ls جستجو انجام دهید و بخشهای موردنظر را استخراج کرده و مشاهده کنید. به عنوان مثال برای یافتن فایلهایی که در نامشان عبارت _pin_ وجود دارد، میتوان پس از ls دستور grep _pin_ را اجرا کرد:
در واقع ترکیب ls و grep میتواند به جای استفاده از عبارتهای منظم استفاده شود. لذا دو دستور زیر عملاً کاربری یکسان دارند:
اما شیوهی نمایش نتایج متفاوت است:
در واقع grep نتیجهی جستجو را به صورت هر مورد در یک خط و بدون رنگبندی خودکار نمایش داده است.
نمایش کاراکترهای خاص حین کار با ls
ممکن است در نام برخی فایلها، از کاراکترهای کنترلی استفاده شده باشد که قابلیت چاپ ندارند. به مثال زیر توجه کنید که در نام فایل از کاراکترهای خاص نظیر \n استفاده شده است:
اگر در اپلیکیشن مدیریت فایل، فولدر حاوی این فایل را باز کنید و پس از انتخاب کردن فایل، کلید F2 را برای تغییر دادن نام آن فشار دهید، کاراکترهای خاص با نماد عجیبی نشان داده میشوند:
اما خوشبختانه دستور ls یک آپشن کاربردی برای نمایش این نامها به شکل اصلی و بدون تغییر آن دارد. از آپشن -b استفاده کنید که برای رد کردن کاراکترهای خاص در نظر گرفته شده است:
و این بار نام فایل به شکل عادی آن نمایش داده میشود:
مخفی کردن برخی فایل و فولدرها در لیست
برای حذف کردن برخی موارد از لیست، میتوانید از آپشن --hide استفاده کنید و پس از این آپشن، نام فایلهای موردنظر را به شکل نام یا طرح نام تایپ کنید. به عنوان مثال دستور اول همهی فایلها را نمایش میدهد و دستور بعدی فایلهایی که دارای پسوند bak هستند را از لیست نتایج حذف یا مخفی میکند:
لیست طولانی به همراه مشخصات کامل فایلها
برای بررسی لیست فایلها به همراه دسترسیها یا Permissions و تاریخ آخرین دسترسی و ... از آپشن -l که معادل Long Format یا فرمت طولانی است، ستفاده کنید.
اطلاعات لیستی با فرمت طولانی شامل موارد زیر میشود:
- حجم کلی فایلهای لیست شده در خط اول و روبروی عبارت total
- نام و مشخصات فایلها در خطوط بعدی، هر فایل در یک خط
- ۱۰ حرف ابتدایی مشخصات هر فایل شامل نوع فایل، دسترسیهای مالک، گروه و دیگر دسترسیهای آن است.
اولین کاراکتر نوع فایل را نشان میدهد که میتواند یکی از موارد زیر باشد:
- – به معنی یک فایل معمولی
- b به معنی فایل بلوک خاص
- c به معنی فایل کاراکتر خاص
- d به معنی فولدر
- l به معنی لینک سمبولیک
- n به معنی فایل شبکه
- p به معنی یک pipe دارای نام
- s به معنی سوکت
اما توضیحاتی در مورد سطح دسترسی فایل و فولدرها:
۹ کاراکتر بعدی که به سه گروه ۳ کاراکتری که پشتسرهم چیده شده تقسیم میشود، دسترسی خواندن یا read و نوشتن یا write و اجرا یا execute فایل توسط Owner یا مالک، Group Members یا اعضای گروه و دیگران است. اگر دسترسی مجاز باشد، حرف r و w و x ذکر میشود و اگر دسترسی مجاز نباشد، - ذکر میشود.
به عنوان مثال اگر دسترسی فایلی به صورت rwx------ ذکر شده باشد، مالک سه دسترسی خواندن و نوشتن و اجرا را دارد اما گروه و دیگران هیچ دسترسیای ندارند.
گاهی اوقات دسترسی اجرا با حرف s مشخص میشود. استفاده از حرف s به این معنی است که فایل با سطح دسترسی مالک فایل اجرا توسط کاربری دیگر اجرا شده است. این حرف ممکن است در دسترسیهای مالک یعنی سه کاراکتر اول یا دسترسی گروه یا سه کاراکتر بعدی دیده شود.
نکتهی دیگر این است که در صورت ایجاد فایل در فولدرها، سطح دسترسی گروه از سطح دسترسی فولدر گرفته میشود، نه سطح دسترسی کاربری که فایل را ایجاد کرده است.
ممکن است سطح دسترسی اجرا توسط Others یا دیگران، با حرف t نیز نمایش داده شود. در این صورت تغییر دادن نام فایلهای داخل فولدر یا حذف کردن فایلها صرفاً توسط مالک فایل، مالک فولدر یا حساب کاربری root امکانپذیر است. فولدر /tmp یا فایلهای موقتی، چنین دسترسیای دارد. به عبارت دیگر حذف کردن فایلهای داخل آن فقط از طریق حساب روت یا حساب کاربری که فایلی را ایجاد کرده، امکانپذیر است.
عددی که پس از سطح دسترسیها ذکر میشود، تعداد هاردلینکها است. این عدد در مورد فایلها معمولاً یک مورد است که به فولدر بالادست اشاره میکند. در مورد فولدرها نیز معمولاً ۲ است که یک مورد لینک به خود فولدر و مورد بعدی لینک به فولدر بالادستی است. در صورت ایجاد هاردلینک، طبعاً اعداد افزایش پیدا میکند.
بررسی مشخصات فولدر با آپشن -d
برای بررسی مشخصات یک فولدر و نه فایلهای داخل آن به کمک فرمان ls میتوان از آپشن -d به معنی directory استفاده کرد. به عنوان مثال برای بررسی مشخصات کامل فولدر /tmp دستور زیر قابل استفاده است:
همانطور که در اسکرینشات فوق مشاهده میکنید، سطح دسترسی اجرا توسط دیگران، با حرف t مشخص شده که معنای آن را پیشتر توضیح دادیم.
دستور ls و ذکر حجم فایلها به شکل خواندنیتر
معمولاً کاربر ترجیح میدهد که حجم فایلها نه بر حسب بیت بلکه بر حسب کیلوبایت و مگابایت و غیره ذکر شود. برای این منظور میتوانید از آپشن -h که مخفف human-readable است، استفاده کنید. به این ترتیب کنار حجم فایلها از حرف K به معنی کیلوبایت و M به معنی مگابایت و غیره استفاده میشود.
نمایش فایلهای مخفی با دستور ls
برای نمایش تمام فایلها حتی موارد مخفی، میبایست از آپشن -a که مخفف all است، استفاده کنید.
دقت کنید که که دو مورد اول لیست که . و .. نام دارند، فولدر فعلی و فولدر بالادست هستند. میتوانید این دو مورد را از لیست حذف کنید چرا که واقعاً یک فایل مخفی محسوب نمیشوند. برای این مهم از آپشن -A استفاده کنید که به معنی Almost All یا تقریباً همه است.
لیست کردن محتویات فولدرهای داخلی با ls
برای لیست کردن محتویات تمام فولدرهایی که در فولدری موجود است، میتوانید از آپشن -R یا recursive استفاده کنید.
به این ترتیب محتویات تمام فولدرهای داخلی نیز نمایش داده میشود و نیازی به چند بار استفاده از فرمان ls نیست.
نمایش UID و GID در لیست فایلها
ممکن است به شناسهی کاربر یا user ID و شناسهی گروه یا group ID در برخی کاربردها نیاز داشته باشید. برای نمایش این موارد، از آپشن -n استفاده کنید.
در این حالت عدد مربوط به شناسه کاربر و گروه به جای نامشان ذکر میشود:
مرتبسازی لیست خروجی ls
برای مرتب کردن لیست فایل و فولدرها که فرمان ls ایجاد کرده، بر حسب پسوند فایلها، میتوانید از آپشن -X استفاده کنید. نیازی به استفاده از این آپشن در لیست کامل و طولانی نیست بلکه بدون استفاده از آپشن -l نیز مرتبسازی اعمال میشود.
طبعاً فولدرها با توجه به نداشتن پسوند، در صدر لیست قرار میگیرند.
برای مرتبسازی بر حسب حجم فایلها، از آپشن -S استفاده کنید که به معنی Sort by file Size است.
فایلهایی که حجیمتر هستند، در صدر لیست قرار میگیرند.
برای مرتبسازی بر اساس زمان آخرین تغییر، از آپشن -t استفاده کنید.
اگر تاریخ آخرین تغییر فایل در سال فعلی باشد، ماه و روز و ساعت ذکر میشود اما اگر در سال فعلی نباشد، سال نیز نمایش داده میشود.
ترکیب فرمان ls و head و tail نیز کاربرد فراوانی دارد چرا که میتوانید جدیدترین و قدیمیترین فایلها را به سادگی پیدا کنید. به عنوان مثال با دستور زیر، ۱ مورد از جدیدترین فایلها بر اساس تاریخ تغییر نمایش داده میشود:
برای یافتن قدیمیترین فایل از نظر تاریخ تغییر نیز به ۱ آیتم انتهای لیست نیاز دارید. لذا از فرمان tail -1 استفاده کنید:
معکوس کردن ترتیب فایلهای لیست
برای معکوس کردن مرتبسازی، از آپشن -r یا reverse استفاده کنید. دقت کنید که -R بزرگ معنای متفاوتی دارد که قبلاً اشاره کردیم.
اطلاعات بیشتر در مورد فرمان ls
برای دریافت اطلاعات کامل در مورد دستور پرکاربرد ls در ترمینال لینوکس، میتوانید به سایتهای آموزش لینوکس مراجعه کنید. یک راهکار سادهتر، استفاده از دستور man برای دریافت راهنما است. فرمان ls آپشنهای متعددی دارد لذا بد نیست هر از گاهی دستور man ls را اجرا کنید و توضیحات آن را در محیط ترمینال مطالعه کنید.
برخی آپشنهای این فرمان، کاربرد کمتری دارند. به عنوان مثال برای نمایش تاریخ آخرین تغییر با بالاترین دقت، میتوانید از آپشن کمکاربردتری به اسم --full-time استفاده کنید.
یا برای نمایش شماره inode فایلها میتوانید از آپشن -i استفاده کنید.
شاید نمایش فایلها و فولدرها با رنگهای متفاوت برایتان جالب و مفید نباشد. در این صورت میتوانید از آپشن -F استفاده کنید. در این صورت کنار هر نوع فایل و فولدر خاص، علائمی ذکر میشود:
- / به معنی فولدر
- @ به معنی لینک سمبولیک
- | به معنی pipe دارای نام
- = به معنی سوکت
- * به معنی فایل اجرایی
howtogeekسیارهی آیتی