آنچه در این مقاله میخوانید
دستورهای لینوکس برای مشاهده و مرتبسازی فایلها
۲۱ تیر ۱۳۹۹
کار با فایلها و مشاهده محتوای آنها، از جمله عملیات پایه و پرکاربرد در سیستمعاملهای مبتنی بر لینوکس است. دستورهای متعددی برای مشاهده، ترکیب، مرتبسازی و بررسی محتویات فایلها وجود دارد که هرکدام کاربرد خاص خود را دارند و در مدیریت دادهها به ما کمک میکنند.
در این مقاله با دستورات پرکاربردی مانند cat
, tac
, rev
, less
, head
, tail
و sort
آشنا میشویم و نحوه استفاده مؤثر از آنها را بررسی خواهیم کرد. این دستورات به شما امکان میدهند تا به سادگی محتوای فایلها را مشاهده، تغییر شکل داده یا مرتب کنید و در نهایت مدیریت بهتری روی دادهها داشته باشید.
در ادامه خواهید خواند:
- ۱) دستور
cat
- ۲) دستور
tac
- ۳) دستور
rev
- ۴) دستور
less
- ۵) دستورهای
head
وtail
- ۶) دستور
sort
- جمع بندی

۱) دستور cat
نحوه استفاده از دستور cat
به شکل زیر است:

بیایید با مثال این قضیه را بررسی کنیم، فرض کنید دو فایل با نامها grocery1.txt
و grocery2.txt
داریم که هرکدام شامل لیستی از خواربارهای مختلف است.
ابتدا محتوای فایل اول را توسط دستور cat
، مشاهده میکنیم:

از همین روش، محتویات فایل دوم را مشاهده میکنیم:

در مثالهای بالا، از دستور cat <filename>
برای مشاهده محتویات فایل استفاده کردیم.
اما چه میشود اگر بخواهیم فایلهای بالا را ترکیب کنیم و هر دو آنها را در یک فایل داشته باشیم؟
برای یکیکردن دو فایل بالا از روش زیر استفاده میکنیم:

در مثال بالا، از دستور cat grocery1.txt grocery2.txt > groceryFinal.txt
استفاده کردیم که در زیر به بیان بخشهای مختلف آن میپردازیم:
cat
نشاندهنده دستوری است که برای مشاهده محتویات فایل از آن استفاده میکنیم.grocery1.txt grocery2.txt
نام فایلهایی است که میخواهیم آنها را یکی کنیم.>
نشاندهنده این است که میخواهیم خروجی یک دستور را به عنوان ورودی، به دستور دیگری هدایت کنیم.groceryFinal.txt
نشاندهنده نام فایل خروجی است، درواقع فایلی که میخواهیم نتیجه را در آن ذخیره کنیم.
برای تایید اینکه تمام محتویات این دو فایل به درستی و به صورت کامل به فایل خروجی منتقل شده است، از دستور cat groceryFinal.txt
استفاده میکنیم تا محتویات آن را مشاهده کنیم.
اما خروجی دستور بالا، برای خواندن اندکی دشوار است، چه اتفاقی میافتد که اگر خروجی را در حالی که هر خط شماره دارد، مشاهده کنیم؟
بیایید آن را امتحان کنیم:

در مثال بالا از دستور cat -n groceryFinal.txt
استفاده کردیم که در آن -n
سوییچی است که از آن برای نمایش شماره هر خط استفاده میکنیم.
سرور ابونتو خود را با بهترین کارایی و امنیت بالا، بهسرعت راهاندازی کنید.
✅ نصب و پیکربندی آسان✅ منابع اختصاصی و عملکرد بهینه✅ امنیت و پشتیبانگیری مطمئن
خرید و راهاندازی سرور اوبونتو Ubuntu
۲) دستور tac
دستور tac
، برعکس دستور cat
عمل میکند، به عبارتی محتویات فایل را از انتها نمایش میدهد. توجه کنید که محتویات فایل را تغییر نمیدهد، بلکه تنها آن را از انتها به ابتدا میخواند.

برای استفاده از این دستور، کافی است این دستور را به همراه نام فایل مدنظرتان اجرا کنید.
برای مثال میتوانیم محتویات فایل groceryFinal.txt
را، که در مرحله قبل ایجاد کردیم، توسط دستور tac
، به صورت برعکس مشاهده کنیم:

در این مثال، از دستور tac groceryFinal.txt
استفاده کردیم، که باعث میشود محتویات فایل ذکرشده را به صورت برعکس مشاهده کردیم.
۳) دستور rev
این دستور برای برعکسکردن خط به خط محتوای یک فایل استفاده میشود. یک فایل را از بالا میخواند اما هر خط از محتوای آن را برعکس میکند و نمایش میدهد. تصویر زیر نمایشدهنده نحوه استفاده از دستور rev
است:

تنها کاری که باید بکنید این است که نام فایل مدنظرتان را ادامه این دستور بنویسید و آن را اجرا کنید.
بیایید فایل groceryFinal.txt
را به عنوان ورودی این دستور قرار دهیم و آن را اجرا کنیم:

در تصویر بالا از دستور rev
استفاده کردیم که هر خط از محتوای این فایل را برعکس میکند و نمایش میدهد. توجه داشته باشید که محتوای فایل تغییری نمیکند، بلکه تنها آن را به شیوه دیگری نمایش میدهد.
از نظر من این دستور هیچ کاربردی غیر از این ندارد که به قصد آزار دیگری، فایلی را با این دستور تغییر دهید و باعث سردرگمی آن شخص شوید. 🙂
سرور لینوکس خود را با پایداری و امنیت بالا، سریع و آسان راهاندازی کنید.
✅ منابع اختصاصی و عملکرد پایدار✅ نصب و پیکربندی آسان✅ پشتیبانگیری و امنیت تضمین شده
خرید و راهاندازی سرور لینوکس Linux
۴) دستور less
دستور less
این امکان را به ما میدهد که فایلهای کوچک تا فایلهای بسیار بزرگ را در ترمینال خود، به صورت صفحهبندیشده مشاهده کنیم. به صورت زیر میتوانید از این دستور استفاده کنید:

با توجه به تصویر بالا، تنها کاری که نیاز است انجام دهید این است که این دستور را به همراه نام فایل مدنظرتان اجرا کنید.

less
امکانات و قابلیتهای زیادی ازجمله: جستوجو در محتوای فایل، بالا و پایینرفتن در فایل تنها در محیط ترمینال و … را فراهم میکند.
هاست لینوکس چیست؟ (بررسی جامع ویژگیها + مزایا)
هاست لینوکس
۵) دستورهای head
و tail
head
دستوری است که با استفاده از آن میتوان تعداد خط مشخصی را از ابتدای فایل نمایش دهیم، به طور مثال با استفاده از توانایی این دستور میتوانید ۵ خط ابتدایی یک فایل را مشاهده کنیم و به مابقی و ادامه آن هم کاری نداشته باشیم. در مقابل دستور tail
قرار دارد که همین کار را از انتهای فایل انجام میدهد.
مثال زیر نحوه استفاده از دستور head
به جهت مشاهده ۲ خط ابتدایی فایل groceryFinal.txt
است:

در تصویر بالا از دستور head -n 2 groceryFinal.txt
استفاده کردیم، که درآن -n 2
، تعداد خطهایی که میخواهیم از ابتدا نشان دهیم را مشخص میکند.
تصویر زیر مثالی از استفاده از دستور tail
است:

-n 2
تعداد خطهایی که میخواهیم از انتها نشان دهیم را مشخص میکند.
بنابراین head
و tail
، دستورهایی هستند که برای مشاهده بخشی از ابتدا یا انتهای یک فایل استفاده میشوند.
هاست لینوکس با پایداری، سرعت و امنیت بالا، مناسب برای انواع وبسایتها و اپلیکیشنها
✅ نصب و راهاندازی سریع و آسان✅ منابع بهینه و عملکرد پایدار✅ پشتیبانی فنی حرفهای و بکاپگیری منظم
خرید و راهاندازی هاست لینوکس Linux
۶) دستور sort
دستور sort برای مرتبسازی خطوط محتوای یک فایل استفاده میشود. تصویر زیر نحوه استفاده از این دستور است:

برای استفاده از این دستور تنها کافی است که بعد از دستور sort، گزینههای مدنظرتان را به همراه نام فایل مشخص کنید.

در مثال بالا از دستور sort groceryFinal.txt
استفاده کردیم که خطوط این فایل را به صورت صعودی در حروف الفبای انگلیسی مرتب میکند.
اما اگر بخواهیم به صورت نزولی مرتب کنیم، باید چگونه این دستور را اجرا کنیم؟

در مثال بالا از دستور sort -r groceryFinal.txt
استفاده کردیم، که در آن سوییچ -r
، مشخص میکند که میخواهیم به صورت نزولی عملیات مرتبسازی را انجام دهیم.
آیا میتوانید حدس بزنید که از چه راه دیگری میتوانیم به خروجی بالا برسیم؟
اگر حدستان دستور tac
است، باید بگویم که بله، درست حدس زدهاید. میتوانیم خروجی دستور sort
، که به طور پیشفرض به صورت صعودی است را به عنوان ورودی برای دستور tac
هدایت کنیم تا خروجی مانند نتیجه مثل قبل شود sort groceryFinal.txt | tac
.
اما چه اتفاقی بر سر اعداد خواهد افتاد؟ بیایید بررسی کنیم که دستور sort
چه رفتاری با فایلی حاوی اعداد دارد:

صبر کنید، نتیجه اشتباه است، اما چرا؟ دستور sort
به طور پیشفرض رقم به رقم عملیات مقایسه را انجام میدهد و کاری به مابقی ارقام ندارد (به عبارتی تنها اولین رقم مورد مقایسه قرار میگیرد). بااینحال برای مرتبسازی اعداد چه کاری باید انجام دهیم؟
تصویر زیر نحوه مرتبسازی اعداد داخل یک فایل توسط دستور sort
است:

در مثال بالا، -n
گزینهای است که باعث میشود بتوان اعداد را مرتب کرد و در نهایت نام فایل ورودی قرار داده شده است.
برای نمایش اعداد به صورت مرتبشده، درحالی که موارد اضافهی تکراری حذف شدهاند (درواقع اگر عدد تکراری وجود داشته تنها یکی از آنها وجود خواهد داشت و مابقی نمایش داده نخواهند شد)، میتوانید از دستور زیر استفاده کنید:

در مثال بالا، سوییچ -un
، این موضوع را نشان میدهد که نوع مرتبسازی، مرتبسازی اعداد با خروجی یکتا (unique
) میباشد.
اما فایلی را تصور کنید که در آن چندین ستون داشته باشید و بخواهید خروجی را براساس دیتای موجود در یک ستون خاص مرتب کنید، در این حالت چاره چیست؟ تصویر زیر پاسخ این قضیه است:

در این مثال، سوییچ -k 2n
به این معنا است که میخواهیم خروجی براساس ستون دوم که مقادیر آن عددی است، مرتب شود، درواقع -n
همانند مثالهای قبلی بیانگر مرتبسازی اعداد ستون دوم، توسط این دستور است.
این دستورها، دستورهای پایهای برای مشاهده فایلها در سیستمعامل لینوکس بودند.
سرور مجازی لینوکس چیست؟ مزایا و کاربردهای آن برای کسبوکارها
سرور مجازی لینوکس
جمع بندی
دستورات cat
, tac
, rev
, less
, head
, tail
و sort
، ابزارهای پایه و قدرتمندی هستند که در کار با فایلها در سیستمعامل لینوکس نقش اساسی دارند. با یادگیری و تسلط بر این دستورات، میتوانید به سادگی محتوای فایلها را مشاهده کنید، آنها را ترکیب کنید، مرتبسازی انجام دهید و بخشهای مورد نظر را استخراج کنید.
این ابزارها ضمن سادگی، انعطافپذیری بالایی دارند و در بسیاری از سناریوهای روزمره به کار میآیند. استفاده هوشمندانه از این دستورات به بهبود کارایی و سرعت انجام وظایف مدیریتی در محیط ترمینال کمک میکند و پایهای قوی برای تسلط بر خط فرمان لینوکس فراهم میآورد.
منبع: https://dev.to/yashsugandh/commands-for-viewing-and-sorting-files-452j