۱۴۰۱/۱/۱۴ فناوری اطلاعات

کی بازار- ترمینال، قلب سیستم لینوکس است. هر برنامه‌ای که لینوکس را اجرا می‌کند در حقیقت آن زیر دارد یک خط فرمان ترمینالی را اجرا می‌کند. این شامل برنامه‌های بزرگی چون مرورگرهای وبی و حتی موارد ساده‌تری مانند ادیتورهای متنی می‌شود. در نتیجه، قابلیت درست استفاده کردن از ترمینال در صورتیکه تمایل دارید از نحوه ساز و کار این سیستم عامل سر دربیاورید گام مهمی محسوب می‌شود. شاید حین کار روی ترمینال لینوکس بخواهید خروجی ترمینال یک فرمان را در فایل سیو کنید. این فایل ممکن است در قالب اطلاعاتی برای عملیات دیگر یا صرفاً یک فعالیت لاگ ترمینال استفاده شود. با ما همراه شوید تا توضیح دهیم چطور می‌شود خروجی ترمینال را در فایلی در لینوکس ذخیره کنیم. این کار را می‌شود به 5 روش انجام داد:

روش اول- استفاده از ترمینال‌های ویژه

اولین روش، استفاده از ترمینالی است که سیو کردن خروجی در فایل را پشتیبانی کند. برای مثال ترمینال Konsole که با خود نصب استاندارد KDE دارد شامل گزینه‌ای می‌شود مخصوص نوشتن خروجی در فایل. برای انجام این کار دکمه File را در نوار منو فشار داده و روی گزینه Save output as … کلیک کنید.

با این کار دیالوگ باکسی برایتان باز خواهد شد که در آن می‌توانید خروجی ترمینال را سیو کنید. از آنجا می‌توانید جای سیو فایل را برای خود انتخاب نمایید. همچنین می‌توانید خروجی فرمان را در ترمینال GNOME ذخیره نمایید. فقط کافیست روی ترمینال راست کلیک کرده و گزینه Copy output as HTML  را فشار دهید. این کار متن ترمینال را در کلیپ‌بورد شما لود خواهد کرد. از آنجا می‌توانید آن را به هر ادیتور متنی پیست کنید.

روش دوم- ریدایرکشن خروجی

روش بعدی استفاده از اپراتورهای داخلی پوسته یونیکس است. اینها توابع پیش‌فرض در لینوکس هستند و می توانند خروجی متن یک برنامه را به یک فایل هدایت کنند. سه اپراتور وجود دارد که می توانند این کار را انجام دهند:

  •          > که محتویات یک فایل را با خروجی برنامه شما ایجاد یا جایگزین می‌کند. اگر می‌خواهید نتیجه فعلی برنامه خود را در همان فایل تخلیه کرده و مشاهده کنید، این کار مفید است.
  •          >> که همچنین یک فایل با خروجی برنامه شما ایجاد می کند. با این حال، این اپراتور تنها خروجی را به جای جایگزین کردن آن اضافه می کند. اگر می‌خواهید نتیجه برنامه خود را به طور مداوم در یک فایل خالی کنید این روش به شما کمک خواهد کرد.
  •          در نهایت، اپراتور 2> نوع خاصی از اپراتور است که خطاهایی را چاپ می‌کند که پس از آن گزارش می‌شود. این در هنگام اشکال‌زدایی بسیار مؤثر عمل خواهد کرد، زیرا نشان‌دهنده مشکلی است که برنامه قبل از خراب شدن با آن مواجه شده.

با دانستن این موضوع، استفاده از این اپراتورها با افزودن آن در انتهای برنامه کلید می‌خورد. به مثال زیر توجه کنید:

echo"maketecheasier"> hello.txt

 

ما به برنامه echo دستور دادیم که کلمه maketecheasier  را خروجی کند، سپس عملگر > و همچنین نام فایل را اضافه کردیم. این به پوسته یونیکس می‌گفت که خروجی را به‌جای چاپ کردن روی صفحه، روی فایل hello.txt  بنویسد.

روش سوم- Tee

به غیر از تغییر مسیر خروجی، می‌توانید خروجی یک فرمان ترمینال را با استفاده از برنامه‌ای به نام tee نیز ذخیره کنید. این یک برنامه GNU  است که به شما امکان می‌دهد از ورودی استاندارد بخوانید و بنویسید. از این برنامه با پایپ‌های یونیکس برای نوشتن خروجی یک دستور در یک فایل استفاده کنید.

 

به مثال زیر توجه کنید:

echo"maketecheasier"|tee hello.txt

 

اینجا به جای استفاده از ریدایرکشن خروجی | در tee پایپ شده است.

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

روش چهارم- اسکریپت

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

برای استفاده از آن، دستور زیر را اجرا کنید:

script filename.txt

این یک محیط اسکریپت را شروع می‌کند که در آن می‌توانید دستورات را اجرا کنید. با این حال، نکته مهمی که باید به آن توجه داشته باشید این است که اسکریپت هر کاری را که در آن سشن انجام می دهید را ضبط می کند. به مثال زیر توجه کنید:

Script started on 2022-03-2718:02:29+08:00 [TERM="rxvt-unicode-256color"TTY="/dev/pts/2"COLUMNS="77"LINES="22"][?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls[?2004l[0m[01;34mDesktop[0m    [01;34mDownloads[0m  [01;34mmail[0m  [01;34mNews[0m  [01;34mpods[0m  [01;34mdocuments[0m  [00;32mhello.txt[0m  [01;34mMail[0m  [01;34mpics[0m  [01;34mtmp[0m   [01;34mvids[0m[?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit[?2004lexitScript done on 2022-03-2718:03:19+08:00 [COMMAND_EXIT_CODE="0"]

 

اسکریپت شامل تمام کلیدها و کاراکترهای کنترلی است که فشار می‌دهید. در مورد ما، شامل تمام کلیدهای نامرئی بود که فشار دادیم، از جمله کلید Tab و Backspace.

پس از اتمام سشن، exit را تایپ کنید. با این کار برنامه اسکریپت تمام می‌شود و کل گزارش روی فایلی که مشخص کرده‌اید می‌نویسد.

روش پنجم- ترمینال کپچر Framebuffer

در نهایت، شما همچنین می‌توانید خروجی ترمینال را با کشیدن از فریم بافر لینوکس دریافت کنید. اگر مستقیماً روی تله تایپ کار می‌کنید و می‌خواهید خروجی یک برنامه را بگیرید، این روش مناسب خواهد بود.

برای کپژر کردن دستگاه framebuffer درحالیکه در تله‌تاپی به سر می‌برید خط فرمان زیر را اجرا کنید:

cat/dev/fb0 > capture.raw

 

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

 

به این ترتیب، یکی از راه‌های مقابله با این موضوع استفاده از یک برنامه شخص ثالث، مانند fbgrab است. این صفحه نمایش تله تایپ فعلی را از دستگاه فریم بافر گرفته و در یک فایل PPM یا PNG قرار می دهد.

 

نصب fbgrab نیز نسبتاً ساده است. در توزیع‌های مبتنی بر دبیان و اوبونتو، می توانید از apt استفاده کنید:

sudoaptinstall fbgrab

 

برای Arch Linux پک‌من را اجرا کنید:

sudo pacman-S fbgrab

 

استفاده از fbgrab برای گرفتن خروجی ترمینال

پس از نصب، با فشار دادن Control + Shift + Alt + F3 آن را در teletype رها کنید، سپس fbcat یا fbgrab را اجرا کنید.

Fbcat برنامه ساده‌تری است که صفحه فریم بافر فعلی را گرفته و آن را در یک تصویر PPM ذخیره می‌کند. این یک فرمت تصویر خام سطح پایین است که می‌توانید آن را در یک ویرایشگر تصویر بارگذاری کنید تا به PNG تبدیل شود. Fbcat در درجه اول اگر بخواهید از نمایشگری با عمق بیت پایین‌تر عکس بگیرید که برای گرفتن درست به فرمت تصویر خام نیاز داشته باشد کارامد خواهد بود.

برای گرفتن عکس با استفاده از برنامه fbcat دستور زیر را اجرا کنید:

fbcat > capture.ppm

 

با این کارصفحه نمایشی که در حاضر نمایش شده گرفته شده و محتوا در یک فایل capture.ppm ریخته می‌شود.

Fbgrab از طرفی دیگر برنامه پیچیده‌تری است که برای گرفتن نمایشگرهایی با عمق بیت بالاتر طراحی شده است. در بیشتر موارد، از آن برای گرفتن صفحه نمایش تله تایپ خود استفاده خواهید کرد. به طور پیش‌فرض از ذخیره‌سازی در PNG پشتیبانی می‌کند و این گزینه را دارد که یک تله‌تایپ متفاوت برای عکس‌برداری انتخاب کنید.

برای گرفتن عکس با استفاده از برنامه fbgrab، فرمان زیر را اجرا کنید:

sudo fbgrab-c3 capture.png

 با این کار صفحه نمایش تله تایپ سوم گرفته می‌شود و در فایل capture.png ذخیره می‌گردد.

پرسش‌های پرتکرار

  •          کمک! Fbgrab کار نمی‌کند، عکس یا سیاه است یا خالی

این احتمالاً به این دلیل است که fbgrab از یک دستگاه فریم بافر متفاوت برای گرفتن خروجی ترمینال استفاده می‌کند. دستگاه فریم بافر فعلی را که سیستم از آن استفاده می‌کند، با فهرست کردن پوشه "/dev"  بررسی کنید.

ls/dev

 

از آنجا، به دنبال دستگاه dev/fbX / بگردید. به طور معمول، لینوکس از  /dev/fb0  برای بافر فریم خود استفاده می‌کند. با این حال، اگر سیستم شما از فریم‌بافر دیگری مانند  dev/fb1 / ستفاده می‌کند، می‌توانید با استفاده از دستور زیر به fbgrab بگویید از آن فریم‌بافر خارج شود:

fbgrab-d1 capture.png

 

  •          آیا ممکن است محتوای فایل را که در قالب خروجی یک برنامه نوشته بودم بگیرم؟

بله! جدا از سه عملگر مورد بحث در بالا، شما همچنین می توانید از عملگر < برای استخراج داده ها از یک فایل استفاده کنید. پس پوسته این را یک ورودی برای یک برنامه خواهد کرد.

انجام این کار به این روش نیاز به تکیه بر برنامه‌های دیگر را برای چاپ متن برای شما برطرف می‌کند. به مثال‌های زیر توجه کنید:

[1]cat test.txt | program[2] program < test.txt

 

-          مثال اول برنامه cat را برای بارگذاری متن فراخوانی می‌کند، سپس یک اپراتور لوله را با خروجی cat بارگذاری نموده و آن را به برنامه شما پایپ می‌کند.

-          از سوی دیگر، مثال دوم بلافاصله برنامه شما را فراخوانی می‌کند، سپس عملگر < را انتخاب می‌کند که آرگومان بعدی آن را به عنوان ورودی خود در نظر می‌گیرد.

  •          آیا راهی وجود دارد که بشود اسکریپت را مجبور به گرفتن تنها خروجی فرمان کرد؟

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

script-c"your-command" test.txt

فلگ –c به برنامه اسکریپت می‌گوید تنها برنامه را اجرا کند: فرمان شما را. از آنجا شروع خواهد کرد به نوشتن خروجی‌اش در فایل متنی که نامش test.txt است.

 

منبع: کی بازار (فروشگاه آنلاین نرم افزارهای اورجینال)، با دریافت انواع لایسنس‌های معتبر از تامین‌کنندگان جهانی این امکان را برای تمام کاربران فراهم آورده است تا در چند ثانیه، از خدماتی بین‌المللی لذت ببرند. در کی بازار امکان خرید لایسنس‌های اورجینال نرم افزار‌های کاربردی و امنیتی(ویندوز اورجینال، آفیس اورجینال، آنتی ویروس اورجینال، آنتی ویروس کسپرسکی، آنتی ویروس پادویش و آنتی ویروس نود 32) بصورت ارسال آنی فراهم آمده است.