دستورهای لینوکس برای مشاهده و مرتبسازی فایلها
۲۱ تیر ۱۳۹۹
در این مقاله قصد بررسی برخی از دستورهایی را داریم که در مشاهده و مرتبسازی محتوای فایلها، به ما کمک خواهند کرد.
بیایید با دستور cat
که به احتمال زیاد آن را بسیار دیدهاید، شروع کنیم. دستور cat
برای ترکیب و یکیکردن چندین فایل و یا مشاهده محتوای آنها استفاده میشود.
۱) دستور 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
سوییچی است که از آن برای نمایش شماره هر خط استفاده میکنیم.
۲) دستور tac
دستور tac
، برعکس دستور cat
عمل میکند، به عبارتی محتویات فایل را از انتها نمایش میدهد. توجه کنید که محتویات فایل را تغییر نمیدهد، بلکه تنها آن را از انتها به ابتدا میخواند.
برای استفاده از این دستور، کافی است این دستور را به همراه نام فایل مدنظرتان اجرا کنید.
برای مثال میتوانیم محتویات فایل groceryFinal.txt
را، که در مرحله قبل ایجاد کردیم، توسط دستور tac
، به صورت برعکس مشاهده کنیم:
در این مثال، از دستور tac groceryFinal.txt
استفاده کردیم، که باعث میشود محتویات فایل ذکرشده را به صورت برعکس مشاهده کردیم.
۳) دستور rev
این دستور برای برعکسکردن خط به خط محتوای یک فایل استفاده میشود. یک فایل را از بالا میخواند اما هر خط از محتوای آن را برعکس میکند و نمایش میدهد. تصویر زیر نمایشدهنده نحوه استفاده از دستور rev
است:
تنها کاری که باید بکنید این است که نام فایل مدنظرتان را ادامه این دستور بنویسید و آن را اجرا کنید.
بیایید فایل groceryFinal.txt
را به عنوان ورودی این دستور قرار دهیم و آن را اجرا کنیم:
در تصویر بالا از دستور rev
استفاده کردیم که هر خط از محتوای این فایل را برعکس میکند و نمایش میدهد. توجه داشته باشید که محتوای فایل تغییری نمیکند، بلکه تنها آن را به شیوه دیگری نمایش میدهد.
از نظر من این دستور هیچ کاربردی غیر از این ندارد که به قصد آزار دیگری، فایلی را با این دستور تغییر دهید و باعث سردرگمی آن شخص شوید. 🙂
۴) دستور less
دستور less
این امکان را به ما میدهد که فایلهای کوچک تا فایلهای بسیار بزرگ را در ترمینال خود، به صورت صفحهبندیشده مشاهده کنیم. به صورت زیر میتوانید از این دستور استفاده کنید:
با توجه به تصویر بالا، تنها کاری که نیاز است انجام دهید این است که این دستور را به همراه نام فایل مدنظرتان اجرا کنید.
less
امکانات و قابلیتهای زیادی ازجمله: جستوجو در محتوای فایل، بالا و پایینرفتن در فایل تنها در محیط ترمینال و … را فراهم میکند.
۵) دستورهای head
و tail
head
دستوری است که با استفاده از آن میتوان تعداد خط مشخصی را از ابتدای فایل نمایش دهیم، به طور مثال با استفاده از توانایی این دستور میتوانید ۵ خط ابتدایی یک فایل را مشاهده کنیم و به مابقی و ادامه آن هم کاری نداشته باشیم. در مقابل دستور tail
قرار دارد که همین کار را از انتهای فایل انجام میدهد.
مثال زیر نحوه استفاده از دستور head
به جهت مشاهده ۲ خط ابتدایی فایل groceryFinal.txt
است:
در تصویر بالا از دستور head -n 2 groceryFinal.txt
استفاده کردیم، که درآن -n 2
، تعداد خطهایی که میخواهیم از ابتدا نشان دهیم را مشخص میکند.
تصویر زیر مثالی از استفاده از دستور tail
است:
-n 2
تعداد خطهایی که میخواهیم از انتها نشان دهیم را مشخص میکند.
بنابراین head
و tail
، دستورهایی هستند که برای مشاهده بخشی از ابتدا یا انتهای یک فایل استفاده میشوند.
۶) دستور 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
همانند مثالهای قبلی بیانگر مرتبسازی اعداد ستون دوم، توسط این دستور است.
این دستورها، دستورهای پایهای برای مشاهده فایلها در سیستمعامل لینوکس بودند.
منبع: https://dev.to/yashsugandh/commands-for-viewing-and-sorting-files-452j