دستور ls در لینوکس چیست؟ – آموزش کامل لیست کردن فایل ها در لینوکس
دستور ls یکی از دستورهای پایهای در لینوکس است که در تمامی توزیعهای لینوکس میتوانید برای مشاهده فایلها و دایرکتوریها در محیط خط فرمان لینوکس از آن استفاده کنید. این دستور یکی از کاربردیترین دستورها در خط فرمان لینوکس است و از اولین دستورهایی است که هر کاربر لینوکس استفاده از آن را یاد میگیرد. در این مقاله به توضیح عملکرد دستور ls در لینوکس و نحوه استفاده از آن خواهیم پرداخت و مثالهایی از کاربرد آن را خواهیم دید.
در ابتدا با استفاده از یک مثال عملکرد دستور ls در لینوکس را خواهیم دید و پس از آن با ساختار کلی این دستور آشنا میشویم. پس از آشنایی با ساختار دستور، به بررسی گزینههای پرکاربردی که دستور ls از آنها پشتیبانی میکند خواهیم پرداخت و با چند مثال ساده ترکیب این گزینهها با یکدیگر و موارد استفاده از آنها را میبینیم. در آخر با شیوه ذخیره نتایج دستور ls در فایل آشنا میشویم تا بتوانیم از این دستور در اسکریپتهایی که به منظور خودکارسازی عملیات نوشته میشوند استفاده کنیم.
دستور ls در لینوکس چه کاری انجام میدهد؟
در محیط ترمینال لینوکس برای مشاهده لیست فایلها و دایرکتوریها از فرمان ls استفاده میشود. برای اینکه عملکرد این دستور را ببینید کافی است ترمینال لینوکس را بازکرده و دستور ls را تایپ کنید. پس از فشردن کلید Enter لیستی از فایلها و دایرکتوریهایی که درون دایرکتوری فعال شما وجود دارند در خروجی نمایش داده خواهد شد. به شکل زیر دقت کنید:
در مثال فوق مسیر ~/faradars توسط دستور ls به عنوان دایرکتوری فعال در نظر گرفته شده است و خروجی دستور که با حاشیه قرمز در تصویر مشخص شده است فایلها و دایرکتوریهایی هستند که درون دایرکتوری فعال قرار دارند.
اما کاربرد دستور ls تنها به مواردی مانند مثال فوق محدود نمیشود. این دستور نیز مانند بسیاری دیگر از دستورات لینوکس آرگومانهای مختلفی را میپذیرد که به وسیله آنها میتوان خروجی دستور را تغییر داد. با دانستن این آرگومانها میتوانید خروجی دستور را مطابق نیاز خود تغییر بدهید. در ادامه با آرگومانهای پرکاربرد این دستور آشنا میشویم و مثالهایی از استفاده از آنها را خواهیم دید.
ساختار دستور ls
شکل کلی استفاده از دستور ls در لینوکس به صورت ls [options] [files] است. هر دو بخش options و files اختیاری هستند و الزامی به استفاده از آنها وجود ندارد. در قسمت options، یعنی دقیقا پس از دستور ls آرگومانهایی قرار میگیرند که چگونگی نمایش خروجی را تعیین میکنند. پس از آن در قسمت files مسیر یا مسیرهایی که میخواهیم لیست فایلها و دایرکتوریهای داخل آنها را ببینیم نوشته میشوند. همانطور که در مثال قبل دیدیم در صورتی که در قسمت files مسیری را مشخص نکنیم، دایرکتوری فعال به صورت پیشفرض مورد استفاده قرار میگیرد. در مثال زیر یک آرگومان برای قسمت options و یک آرگومان برای قسمت files مشخص شده است:
در مثال فوق قسمت options که با رنگ قرمز مشخص شده است حاوی نشانه-l است. اضافه کردن این نشانه به دستور باعث میشود که فایلها همراه با مشخصاتشان لیست شوند و هر فایل در یک خط جداگانه نمایش داده شود. توجه کنید که در مثال اول تنها نام فایلها به صورت متوالی در خروجی آمده بودند اما در این مثال هر فایل در یک خط جداگانه به همراه مشخصات مالک فایل، مجوزهای دسترسی مربوط به فایل، تاریخ آخرین ویرایش و حجم فایل نمایش داده شده است. تفاوت نحوه نمایش خروجی بین مثال اول و دوم به دلیل استفاده از نشانه -l در قسمت options از مثال دوم است.
قسمت files نیز در مثال فوق با رنگ سبز مشخص شده است. مسیر /opt که در این قسمت نوشته شدهاست باعث میشود دستور ls محتویات مسیر /opt را در خروجی نمایش دهد.
گزینههای دستور ls
همانطور که پیش از این مشاهده کردید دستور ls از گزینههای مختلفی پشتیبانی میکند که به کمک آنها میتوانیم جزئیات نمایش خروجی را تعیین کنیم. در قسمت options میتوانیم گزینههای مختلف را به صورت همزمان استفاده کنیم و تقدم یا تاخر ظاهر شدن آنها در دستور اهمیتی ندارد.
برای مثال، دستورهای ls -lh ، ls -hl ، ls -l -h و ls -h -l همگی خروجی مشابهی را تولید میکنند. همچنین به خاطر داشته باشید که در قسمت files میتوانید بیش از یک دایرکتوری را انتخاب کنید. مثلا دستور
ls /usr /varخروجی به این صورت خواهد داشت:
/usr: bin games include lib lib32 lib64 libexec libx32 local sbin share src /var: backups local log run cache lib lock mail optهمانطور که میبینید در این حالت محتویات دایرکتوریهای مختلف با یک سطر خالی از همدیگر جدا شدهاند.
نمایش لیست فایلها همراه با جزئیات با نشانه -l
با استفاده از نشانه -l میتوان جزئیات فایلها را بررسی کرد. در این نحوه نمایش هر فایل در یک خط جداگانه نمایش داده میشود و اطلاعات مربوط به آن در ۶ ستون قابل مشاهده خواهد بود. مثال زیر به توضیح اطلاعات درج شده در هرکدام از ستونها کمک میکند.
اطلاعات درج شده در ستونهای تصویر بالا را یک به یک شرح میدهیم.
مجوزهای دسترسی به فایل: مشخص شده با رنگ قرمز
برای تفسیر اطلاعات مندرج در ستون مجوزهای دسترسی به فایل لازم است بدانید توالی کاراکترهای موجود در این ستون از چهار بخش تشکیل شده است. به طور مثال فایل اول در تصویر بالا با نام checklist.txt را در نظر بگیرید. محتویات ستون مجوزهای دسترسی برای این فایل مانند سایر فایلها حاوی ۱۰ کاراکتر است. میبینیم که عبارت کامل برای فایل checklist.txt برابر "-rw-rw-r--" است. چهار بخشی که این عبارت را تشکیل میدهند به شرح زیر هستند:
- کاراکتر اول از سمت چپ نشاندهنده نوع فایل است. مقدار این کاراکتر برای فایلهای عادی - ، برای دایرکتوریها d و برای لینکها (فایلهای میانبر که به فایل دیگری ارجاع میدهند) i خواهد بود. میبینیم که در مورد فایل checklist.txt مقدار این کاراکتر برابر - است، یعنی این فایل یک فایل عادی است.
- کاراکتر دوم تا چهارم از سمت چپ نشاندهنده مجوزهای دسترسی مالک فایل است. این سه کاراکتر به ترتیب نمایشدهنده مجوز خواندن r ، نوشتن w و اجراx برای یک فایل هستند. در صورتی که مالک فایل هر کدام از این مجوزها را داشته باشد در جایگاه مربوط به آن مجوز، کاراکتر متناظر با آن قرار میگیرد و در غیر این صورت کاراکتر - به معنی نداشتن آن مجوز خاص در جایگاه مربوطه درج میشود. مثلا در مورد فایل checklist.txt میبینیم که مقدار این بخش برابر rw- است و اینطور تفسیر میشود که مالک این فایل اجازه خواندن و نوشتن روی فایل را دارد اما اجازه اجرا کردن فایل را ندارد.
- کاراکتر پنجم تا هفتم از سمت چپ نمایش دهنده مجوزهای دسترسی گروه مالک فایل است. این سه کاراکتر نیز مانند بخش دوم تفسیر میشوند. مجوزهایی که در این قسمت مشخص میشوند بر روی کاربرانی اعمال میشوند که مالک فایل نیستند، اما عضو گروهی هستند که فایل متعلق به آن گروه است.
- کاراکتر هشتم تا دهم از سمت چپ یا به عبارت دیگر سه کاراکتر آخر نشان دهنده سطوح دسترسی سایر کاربران است. مثلا در مورد فایل checklist.txt مقدار این بخش برابر با r-- است. در نتیجه کاربرانی که این فایل متعلق به آنها نیست و عضو گروه مالک فایل هم نیستند تنها میتوانند اطلاعات فایل را بخوانند و مجوز نوشتن روی آن و یا اجرا کردنش را ندارند.
تعداد لینکهایی که به یک فایل اشاره میکنند: مشخص شده با رنگ سبز
این ستون تعداد فایلهایی را نمایش میدهد که به یک محتوا اشاره میکنند. مقدار این ستون برای همه فایلهای عادی حداقل ۱ و برای همه دایرکتوریها حداقل ۲ است. با بررسی این ستون متوجه میشوید که آیا لینکهای بیشتری ساخته شدهاند که به فایل مورد بررسی اشاره کنند یا خیر.
کاربر و گروه مالک فایل: مشخص شده با رنگ فیروزهای
در این ستون به ترتیب کاربر مالک فایل و گروه مالک فایل را میبینیم. با دقت در مثال بالا میبینیم که فایل root-owned-file.txt متعلق به کاربری با نام root و گروهی با نام soroosh است. اطلاعات این ستون برای بررسی تنظیمات امنیتی کاربردی است.
حجم فایل: مشخص شده با رنگ بنفش
این ستون حجم فایل را بر حسب بایت نمایش میدهد. در ادامه خواهیم دید که میتوانیم مقدار این ستون را به صورتی که خواناتر باشد هم نمایش دهیم.
تاریخ آخرین ویرایش فایل: مشخص شده با رنگ آبی
در این ستون میبینیم که هر فایل برای آخرین بار در چه تاریخی ویرایش شده است. دستور ls در لینوکس امکان مرتب سازی نتایج بر اساس مقدار این ستون را هم دارد که در ادامه چگونگی این کار را خواهیم دید.
نام و اطلاعات تکمیلی فایل: مشخص شده با رنگ نارنجی
در این ستون علاوه بر نام فایل چنانچه یک فایل میانبری به فایل دیگر باشد، این موضوع را هم میتوانیم ببینیم. در مثال بالا به فایل Postman Agent دقت کنید. پس از درج نام فایل مشخص شده است که این فایل در واقع میانبری است که به محتویات فایلی دیگر با مسیر app/"Postman Agent" اشاره میکند.
نمایش حجم فایلها به صورت خوانا با نشانه -lh
زمانی که میخواهیم دستور ls در لینوکس جزئیات فایلها را به ما نشان دهد، در صورتی که از نشانه h استفاده کنیم حجم فایلها را به صورتی که خواندن آن برای انسان راحتتر باشد خواهیم دید. در این نحوه نمایش به جای این که حجم همه فایلها را بر حسب بایت ببینیم، حجم فایلهای بزرگ بر حسب کیلوبایت، مگابایت و یا گیگابایت نمایش داده میشود. در مثال قبل اگر به جای ls -l از دستور ls -lh استفاده کنیم خروجی به صورتی که در تصویر زیر میبینید تغییر میکند.
همانطور که میبینید مثلا حجم فایل cover-img1.png به جای ۹۳۲۷۰۹ بایت معادل ۹۱۱ کیلوبایت درج شده است که خواناتر است. دقت کنید که منظور از هر کیلوبایت ۱۰۲۴ بایت است نه ۱۰۰۰ بایت.
مشاهده فایلهای مخفی شده با نشانه -a
در لینوکس نام فایلهای مخفی شده با کاراکتر "." شروع میشود. دستور ls در لینوکس این دسته از فایلها را به طور معمول نمایش نمیدهد مگر این که از آن بخواهید تمام فایلها را نمایش دهد. برای این کار از نشانه -a استفاده میکنیم. به خاطر داشته باشید که میتوان نشانههای مختلف را به صورت همزمان استفاده کرد مثلا دستور ls -lha همهی فایلها را به همراه فایلهای مخفی شده همراه با جزئیات مربوط به فایلها نمایش میدهد و حجم فایلها را نیز به صورت خوانا مینویسد.
نمایش نام و حجم فایلها با نشانه -s
اگر تنها اطلاعاتی که میخواهید در مورد فایلها بدانید حجم آنها باشد، استفاده از نشانه -l جزئیات زیادی را به شما نمایش خواهد داد که نیازی به آنها ندارید. در چنین شرایطی بهتر است از نشانه -s استفاده کنید. دستور ls -s حجم هر فایل را در کنار نامش نمایش میدهد. اگر این دستور را به صورت ls -sh استفاده کنید حجم فایلها را به صورت خوانا خواهید دید.
تغییرات در ستون کاربر و گروه مالک فایل
نشانه -o خروجی با جزئیات کامل مانند نشانه -l تولید میکند با این تفاوت که تنها نام کاربر را در ستون مربوط به مالکیت فایل نمایش میدهد و از نمایش گروه مالک فایل صرف نظر میکند. به صورت مشابه نشانه -g تنها گروه مالک فایل را در خروجی میآورد و کاربر مالک را حذف میکند. همانطور که قابل حدس است استفاده از این دو نشانه به صورت همزمان باعث حذف تمام اطلاعات ستون مالکیت فایل میشود. در تصویر زیر مثالی از اجرای دستور ls -go را میبینید.
همچنین چنانچه بخواهید به جای نام کاربری و نام گروهها شناسه آنها را ببینید باید از نشانه -n استفاده کنید.
مرتب سازی نتایج دستور ls در لینوکس
چنانچه دستور ls را در دایرکتوریهایی که حاوی فایلهای پرشماری هستند اجرا کنید تعداد نتایجی که در خروجی خواهید دید زیاد خواهد بود و اگر بخواهید اطلاعات مربوط به فایل خاصی را پیدا کنید مرتب سازی نتایج کار شما را تسریع میکند. در ادامه به نشانههایی که امکان مرتب سازی نتایج را فراهم میکنند خواهیم پرداخت.
مرتب سازی نتایج بر اساس تاریخ
با استفاده از نشانه -t نتایج بر اساس تاریخ آخرین ویرایش فایلها مرتب سازی میشوند. در این حالت فایلهایی که به تازگی ویرایش شدهاند قبل از فایلهای قدیمیتر در لیست قرار خواهند گرفت. اگر بخواهیم به جای تاریخ آخرین ویرایش تاریخ آخرین دسترسی به فایلها را ملاک مرتب سازی قرار دهیم باید از نشانه -u استفاده کنیم. با استفاده از این نشانه فایلهایی که به تازگی مورد استفاده قرار گرفتهاند در ابتدای لیست خواهند آمد.
در کنار هر کدام از نشانههای مربوط به مرتب سازی از نشانه -r میتوانیم استفاده کنیم که ترتیب لیست را معکوس میکند. مثلا برای مرتب سازی فایلها بر اساس تاریخ آخرین ویرایش به صورتی که فایلهای قدیمیتر اول ظاهر شوند باید از دستور ls -ltr استفاده کنیم. در این مثال نشانه -l ضروری نیست و تنها برای این که تاریخهایی که مرتب سازی بر اساس آنها انجام شدهاست را ببینیم از این نشانه استفاده کردهایم.
مرتب سازی نتایج بر اساس حجم فایلها
نشانه -S (به بزرگ بودن حرف s دقت کنید) امکان مرتب سازی فایلها به ترتیب حجم آنها را فراهم میکند. دستور ls -S نتایج را به این صورت مرتب سازی میکند که فایلهایی با حجم بیشتر اول ظاهر شوند. برای این که فایلهای کمحجم در ابتدای لیست ظاهر شوند باید با استفاده از نشانه -r ترتیب نتایج را معکوس کنید.
مرتب سازی بر اساس حروف الفبا و پسوند فایل
دستور ls -X (به بزرگ بودن حرف x دقت کنید) خروجی را اول بر اساس پسوند فایلها و به ترتیب حروف الفبا و بعد فایلهایی با پسوند مشابه را بر اساس نام فایلها و به ترتیب حروف الفبا مرتب سازی میکند. مثالی از خروجی این دستور را در زیر میبینید.
مانند سایر نشانههای مربوط به مرتب سازی، ترتیب نتایج مرتب سازی شده با استفاده از نشانه -X را هم میتوان با استفاده از نشانه -r معکوس کرد.
مشاهده محتویات دایرکتوریها به صورت بازگشتی با دستور ls -R
چنانچه بخواهیم محتویات دایرکتوریهایی که لیست میکنیم را نیز در خروجی دستور ls ببینیم باید از دستور ls -R استفاده کنیم. به مثال زیر توجه کنید:
در این مثال پس از این که محتویات دایرکتوری فعال در خروجی نمایش داده شده است، محتویات هرکدام از سه دایرکتوری folder1، folder2 و linux-content که درون دایرکتوری فعال قرار داشتند نیز به نتایج اضافه شدهاند. اگر درون هر کدام از این دایرکتوریها نیز دایرکتوری دیگری قرار داشت، محتویات آن دایرکتوری هم به نتایج اضافه میشد. به این ترتیب میتوانیم از دستور ls -R برای نمایش تمام فایلهایی که درون یک مسیر مشخص قرار دارند استفاده کنیم.
ذخیره نتایج دستور ls در فایل
بسیاری از اوقات ممکن است بخواهید لیست محتویات یک دایرکتوری و یا جزئیات مربوط به فایلها را در فایل دیگری ذخیره کنید. این امکان به طور ویژه زمانی که بخواهید کارهایی مانند نظارت بر وضعیت فایلهای مربوط به یک برنامه خاص را به صورت اتوماتیک و توسط اسکریپتها انجام دهید کاربردی خواهد بود. با اجرای دستور زیر خروجی دستور ls -lSo در فایلی با نام "ls-output.txt" ذخیره میشود.
ls -lSo > ls-output.txt
خلاصه مطلب و نحوه دسترسی به راهنمای دستور ls در لینوکس
دیدیم که دستور ls برای لیست کردن فایلها و دایرکتوریها در ترمینال لینوکس مورد استفاده قرار میگیرد و شکل کلی استفاده از آن به صورت ls [options] [files] است. قسمت options چگونگی نمایش نتایج مانند جزئیات مربوط به فایلها و نحوه مرتب سازی آنها را مشخص میکند. قسمت files مسیر یا مسیرهایی که لیست فایلهای داخل آنها باید نمایش داده شود را تعیین میکند. همچنین نشانههای مختلف را میتوان در کنار هم استفاده کرد. تعدادی از نشانههای پرکاربرد دستور ls در لینوکس را به همراه توضیح مختصری در رابطه با آنها در جدول زیر میبینید.
نشانه | عملکرد |
-l | نمایش جزئیات کامل فایلها |
-g | حذف اطلاعات کاربر مالک فایل از جزئیات |
-o | حذف اطلاعات گروه مالک فایل از جزئیات |
-n | نمایش کد شناسه کاربر و گروه مالک به جای نام آنها |
-s | اضافه کردن حجم فایلها به نتایج |
-h | نمایش حجم فایلها به صورت خوانا |
-a | اضافه کردن فایلهای مخفی شده به نتایج |
-t | مرتب سازی نتایج بر اساس تاریخ آخرین ویرایش |
-u | مرتب سازی نتایج بر اساس تاریخ آخرین دسترسی |
-S | مرتب سازی نتایج بر اساس حجم فایلها |
-X | مرتب سازی نتایج بر اساس پسوند فایلها و به ترتیب حروف الفبا |
-R | اضافه کردن محتویات دایرکتوریها به صورت بازگشتی |
علاوه بر این همیشه میتوانید با دستورهای ls --help و man ls اطلاعات کاملی درباره دستور ls و تمام نشانههایی که میتوانید در این دستور استفاده کنید به دست بیاورید.