آموزش مقدمات لینوکس – بخش سوم

آموزش مقدمات لینوکس

ویرایش متن در لینوکس

در لینوکس تقریبا همه مواردی که مستقیماً با آن ها سر و کار دارید، یک فایل بوده و اغلب به صورت متنی می باشند. به عنوان مثال کلیه فایل های پیکربندی موجود در لینوکس، فایل های متنی هستند. بنابراین برای پیکربندی برنامه ها و سرویس های لینوکس شما باید این فایل ها را باز نموده و متن داخل آن را تغییر دهید. همچنین پس از تغییر در فایل و ذخیره آن باید سرویس مورد نظر را مجدد راه اندازی نمایید. بنابراین نحوه کار کردن با فایل های متنی در لینوکس بسیار حائز اهمیت می باشد. به همین دلیل در این بخش شما با نحوه تغییر و ویرایش فایل های متنی آشنا می شوید.

در ادامه ما برای توضیح ویرایش فایل ها در لینوکس از فایل های مربوط به سیستم تشخیص نفوذ Snort استفاده می کنیم. اگر شما این ابزار را بر روی کالی لینوکس خود ندارید، می توانید با استفاده از دستور apt-get install snort می توانید این ابزار را بر روی سیستم خود نصب نمایید.
همانطور که در بخش پیشین هم به آن اشاره کردیم، یکی از ابزارهای کاربردی در لینوکس، cat می باشد که با آن می توانید محتویات فایل را مشاهده و یا ویرایش نمایید. علاوه بر این ابزار، دستورات دیگری نیز در لینوکس وجود دارد که در ادامه به آن ها اشاره خواهیم کرد.

دستور head

از این دستور برای مشاهده بخش های ابتدایی فایل ها استفاده می شود. به صورت پیش فرض این دستور، 10 خط ابتدایی فایل را به شما نمایش می دهد. در ادامه از این دستور برای نمایش بخش ابتدایی فایل پیکربندی snort استفاده می کنیم:

head /etc/snort/snort.conf

head command

همچنین شما می توانید با استفاده از عبارت – در دستور head، تعداد خطوط ابتدایی از فایل که نمایش داده می شود را می توانید تعیین نمایید:

head -20 /etc/snort/snort.conf

دستور tail

این دستور شبیه به دستور head بوده ولی برای نمایش خطوط انتهایی فایل از آن استفاده می شود.

tail /etc/snort/snort.conf

tail command

همانند دستور head شما می توانید با استفاده از عبارت – در دستور tail، تعداد خطوط انتهایی از فایل که نمایش داده می شود را می توانید تعیین نمایید:

tail -20 /etc/snort/snort.conf

دستور nl

در اغلب موارد شما می بایست فایل هایی با خطوط زیاد را ویرایش نمایید. در برخی موارد شما نیاز دارید تا شماره خطوط فایل ها را مشاهده نمایید. برای این منظور از دستور nl استفاده می شود.

nl /etc/snort .conf | grep output

nl command in linux

با توجه به خروجی دستور، ما به دنبال عبارت Step #6 هستیم و البته پنج خط پیش از آن را نیز نیاز داریم. بدین منظور با توجه به شماره خط عبارت مورد نظر از دستور زیر برای مشاهده پنج خط پیشین عبارت Step #6 استفاده می نماییم:

tail -n+440/etc/snort/snort.conf | head -n 6

نکته ای که در این جا حائز اهمیت است، وجود خطوط خالی است که با توجه به اینکه به خطوط خالی شماره تعلق نمی گیرد، دستور بالا خروجی صحیحی به ما نمایش نمی دهد. بدین منظور دستور nl را با سوییچ -b و مقدار a فراخوانی می کنیم تا به خطوط خالی نیز شماره تعلق بگیرد.

nl command in linux

همانطور که در تصویر بالا نیز قابل مشاهده می باشد، شماره خط عبارت مورد نظر ما به 529 تغییر پیدا کرده است. به همین منظور به جای عدد 440 در مثال پیشین باید از عدد 524 استفاده کنیم تا پنج خط پیشین عبارت مورد نظر ما را نمایش دهد.
علاوه بر روش مذکور شما می توانید از دستور grep نیز برای حذف خطوط خالی استفاده نمایید. بدین منظور ابتدا با دستور grep و با استفاده از عبارت نقطه، خطوط خالی را حذف نموده و سپس از شماره خطوط برای چاپ 5 خط پیشین عبارت مورد نظر استفاده می کنیم:

grep command in linux

دستور sed

دستور sed این امکان را به شما می دهد تا بوسیله آن عبارت مورد نظر خود را در یک فایل پیدا نموده و اقدام مورد نظر را بر روی آن انجام دهید. نام این دستور کوتاه شده عبارت Stream Editor می باشد. در ابتدایی ترین حالت، دستور sed همانند Find and Replace در ویندوز عمل می کند.
در ابتدا ما قصد جستجوی عبارت mysql در فایل تنظیمات snort را داریم که بدین منظور از دستور زیر استفاده می کنیم:

cat /etc/snort/snort.conf | grep mysql

grep command in linux

در ادامه ما قصد داریم تا عبارت mysql را با عبارت MySQL در فایل تنظیمات snort جابجا نماییم. بدین منظور از دستور sed به شکل زیر استفاده می کنیم و خروجی آن را در یک فایل جدید با نام snort1.conf ذخیره می نماییم.

sed s/mysql/MySQL/g /etc/snort/snort.conf > snort1.conf

در دستور بالا عبارت s برای جستجو استفاده شده و پس از اسلش عبارت مورد جستجو و بعد از آن و عبارت اسلش بعد عبارتی که باید جایگزین عبارت اول شود قرار داده می شود. عبارت g نیز موجب می شود تا کلیه عبارت مورد نظر جایگزین شوند و در صورت عدم استفاده از g تنها اولین عبارت جایگزین می شود.
به مثال های زیر و خروجی مربوط به آن ها توجه نمایید:

content of file:
foo bar foo bar foo bar foo bar

sed ‘s/foo/FOO/’
FOO bar foo bar foo bar foo bar

sed ‘s/foo/FOO/3’
foo bar foo bar FOO bar foo bar

sed ‘s/foo/FOO/g’
FOO bar FOO bar FOO bar FOO bar

sed ‘s/foo/FOO/3g’
foo bar foo bar FOO bar FOO bar

مشاهده فایل با more و less

دستوراتی مانند cat بسیار کاربردی هستند ولی زمانی که فایل مورد نظر ما دارای خطوط زیادی باشد، دستور cat کلیه محتویات فایل را در صفحه به صورت یک جا چاپ می کند. برای مشاهده خطوط بالایی فایل نیاز به Scroll صفحه خواهیم داشت. این موضوع در فایل های بزرگ جالب به نظر نمی رسد و کار ما را برای مشاهده محتویات فایل کمی با سختی روبرو می شود. برای حل این مشکل می توان از دستور more یا less استفاده نمود.
دستور more خروجی را به صورت صفحه به صفحه نمایش می دهد و شما با فشردن کلید Space می توانید به صفحه بعدی رفته و در انتها نیز با فشردن کلید q مرور فایل را پایان دهید.

علاوه بر دستور more شما می توانید از دستور less نیز استفاده کنید. دستور less علاوه بر اینکه امکان مشاهده صفحه به صفحه فایل را فراهم می کند، شما می توانید عبارت مورد نظر خود را نیز در آن فیلتر نموده و به صورت پرنگ تر مشاهده نمایید. برای فیلتر نمودن یک عبارت خاص ابتدا دستور less و سپس آدرس فایل مورد نظر را تایپ نموده و پس از فشردن کلید Enter، عبارت / را تایپ نموده و سپس عبارت مورد نظر را تایپ کنید. در ادامه با فشردن کلید Space اگر عبارت تایپ شده در هر جایی از فایل باشد، آن عبارت با بکگراند مشخص نمایش داده خواهد شد.

  less command in linux

منابع این بخش:

https://serverfault.com/
https://www.howtoforge.com/
https://www.linuxquestions.org/

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید