گربه بالدار: یک دستور کاربردی لینوکس

توی سیستم‌های لینوکس و کلاً شبه یونیکسی، از دستور cat برای چاپ و ادغام کردن فایل‌های متنی استفاده می شود. در واقع با استفاده از دستور cat می‌تونیم محتویات یک فایل رو در STDOUT چاپ کنیم یا چندتا فایل رو با هم ادغام کنیم و در یک فایل جدید ذخیره کنیم. چند روز پیش من با یک ابزار مشابه به نام batcat آشنا شدم که همون کار cat رو انجام میده اما ویژگی‌های اضافی و باحال دیگه‌ای داره مثل سینتکس هایلایتینگ، یکپارچگی با Git، صفحه بندی خودکار و غیره.

توی این پست نحوه نصب و استفاده از batcat رو در لینوکس توضیح میدم.

نصب bat در لینوکس

bat توی ریپازیتوری‌های پیشفرض آرچ‌لینوکس موجوده بنابراین خیلی راحت می‌تونیم اونو با استفاده از pacman روی هر سیستم مبنتی بر آرچ نصب کنیم.

$ sudo pacman -S bat

اگر از نسخه‌های نسبتاً جدید دبین یا ابونتو استفاده می‌کنید خیلی راحت با apt می‌تونید bat رو نصب کنید:

$ sudo apt install bat

نکته: ‌اگر bat رو از این طریق نصب می‌کنید، ممکنه پکیج (به دلیل شباهت اسمی با یک پکیج دیگه) به جای bat، با نام batcat نصب و اجرا بشه. برای همین اگر مثل من تایپ کردن batcat براتون سخته، می‌تونید یک alias برای این دستور تعریف کنید.

اگر توی ابونتو از روش بالا برای نصب bat استفاده کنید، نسخه قدیمی‌تر اون براتون نصب می‌شه. بنابراین برای نصب آخرین نسخه bat می‌تونید آخرین نسخه پکیج deb. رو از گیت‌هاب دانلود و با دستور زیر نصب کنید:

$ sudo dpkg -i bat_0.18.0_amd64.deb

ابزار bat روی اکثر توزیع‌های لینوکس نصب و اجرا میشه و حتی روی مک، ویندوز یا حتی Termux هم می‌تونید نصبش کنید. برای نصب روی بقیه توزیع‌های لینوکس می‌تونید به قسمت راهنمای نصب صفحه گیت‌هاب این ابزار مراجعه کنید.

کاربرد دستور bat

همونطوری که قبلا گفتم عملکرد دستور bat کاملاً شبیه به cat است. با bat می‌تونید فایل‌های جدید ایجاد کنید، محتویات یک یا چندتا از فایل‌هاتون رو مشاهده کنید یا اونارو باهم دیگه ادغام کنید و در یک فایل دیگه ذخیره کنید. اما چیزی که bat رو از پدرش (یا شاید پدربزرگش) متمایز می‌کنه قابلیت‌های جدیدیه که داره. bat برای تعداد زیادی از زبان‌های برنامه نویسی از سینتکس هایلایتینگ (یا به قول بعضی‌ها برجسته سازی نحو!) پشتیبانی می‌کنه.

دستور cat محتویات فایل رو در قالب متن ساده نمایش میده، در حالی که bat نه تنها خروجی رو سینتکس هایلایت شده نشون میده بلکه جدول بندی و شماره گذاری هم می‌کنه. ولی اگر دوست دارید محتویات بدون جدول بندی و فقط با شماره گذاری نمایش داده بشه می‌تونید از دستور زیر استفاده کنید:

$ bat -n file.txt

یکی دیگه از قابلیت‌های قابل توجه دستور bat صفحه بندی خودکاره. این یعنی اگر محتویات فایل از یک صفحه بیشتر باشه، دستور bat به طور خودکار خروجی رو توی دستور less پایپ می‌کنه تا بتونید محتویات رو صفحه به صفحه مشاهده کنید. اگر با لینوکس کار کرده باشید حتما می‌دونید که وقتی با دستور cat می‌خواهید محتویات فایلی رو مشاهده کنید، سریع به آخرین صفحه میره و شما محتویات ابتدا یا وسط فایل رو مشاهده نمی‌کنید مگر اینکه خروجی cat روی توی less پایپ کنید. اما همانطور که قبلاً گفتم با دستور bat نیاز به انجام چنین کار نیست. توی تصویر بالا هم این امر قابل تشخیص هست.

از طرفی دستور bat با Git یکپارچگی داره، بنابراین خیلی راحت می‌تونید با ترکیب git show و دستور bat، نسخه‌ی قدیمی‌تر یک فایل رو مشاهده کنید.

قابلیت دیگه bat اینه که با استفاده از سوئیچ A- یا show-all-- می‌تونید کاراکترهای غیرقابل چاپ رو هایلایت شده مشاهده کنید:

نمایش کاراکترهای غیرقابل چاپ با دستور bat

شخصی سازی bat

اگر از تم‌ پیشفرض bat رو دوست ندارید، می‌تونید تغییرش بدید. برای نمایش لیست تم‌های موجود می‌تونید دستور زیر رو اجرا کنید:

$ bat --list-themes

برای تغییر تم فعلی دستور زیر رو وارد کنید و نام تم مورد نظرتون رو بنویسید. برای مثال من تم DarkNeon رو انتخاب کردم:

$ bat --theme=DarkNeon file.txt

حرف آخر

bat جایگزین خیلی خوبی برای cat بوده و می‌تونه توی وظایف روزمره خیلی مفید واقع بشه پس بد نیست توی جعبه ابزار لینوکسیتون داشته باشیدش. تفاوت bat با سایر ابزارهای مشابه cat توی این جدول قابل مشاهده است. توجه داشته باشید که این جدول از دیدگاه دستور bat و کاربردهاش با سایر ابزارها مقایسه شده و بعضی از اونا کاملاً اهداف و کاربردهای متفاوتی نسبت به bat دارند.