Gnu Tips

وبلاگ شخصی وحید معانی

حذف خطوط خالی از فایل – Bash

postسلام

هنگام نوشتن یه اسکریپت Bash ممکنه لازم داشته باشیم که خطوط خالی یک فایل رو برای پردازش هر چه راحتتره اون نادیده بگیریم امّا چطور باید اینکار رو بکنیم؟!

اگر با دستور grep کار کرده باشید می‌دونید که کارش جستجوی یک الگو داخل یک فایل یا یک استریم هست و خروجیش همه‌ی خطوطی هست که داخل اون الگو صدق می‌کنن. برای مثال دستور زیر رو در نظر بگیرید:

بخش دوّم دستور که ورودیش رو از طریق پایپ (‪pipe (|)‬) از دستور lsmod گرفته همه‌ی خطوطی که توی اونها عبارت brcm وجود داره رو نشون می‌ده و بقیه رو حذف می‌کنه. آپشن ignore-case دستور grep رو در جریان این کار می‌زاره که نیازی به بررسی بزرگ یا کوچک بودن حروف عبارت نیست. یا مثلاً دستور زیر با استفاده از الگوی “^” به دستور grep می‌فهمونه که همه‌ی خطوطی که با الگوری brcm شروع می‌شن رو برگردونه (کاراکتر ^ برای نشون دادن ابتدای خط به کار می‌ره):

یا به عنوان یک مثال دیگه، دستور زیر با استفاده از یک دستور grep دیگه، همه‌ی خطوطی که به حرف c ختم می‌شن رو نشون می‌ده. برای این کار از الگوی “$” برای نشون دادن آخر خط استفاده می‌کنه:

دستور grep آپشنی به اسم invert-match داره که خروجی رو برعکس می‌کنه، یعنی همه‌ی خطوطی که در الگو صدق نمی‌کنن رو چاپ می‌کنه. برای مثال دستور زیر همه‌ی خطوط فایل resolve.conf رو نشون می‌ده بغیر از اونهایی که شامل کاراکتر # هستن:

خب این همه صغرا و کبرا چیدیم که برسیم به اینجا که وقتی لازم داشتیم که خطوط خالی یک فایل رو حذف کنیم می‌تونیم از دستور grep با ترکیب آپشن‌ها و الگوهایی که بررسی کردیم استفاده کنیم. یعنی از الگوی ‪”^$“‬ برای تشخیص خطوط خالی استفاده کنیم و با استفاده از آپشن invert-match همه‌ی خطوطی که شامل این الگو نمی‌شن رو فقط نشون بدیم. الگوی ‪”^$“‬ از این جهت شامل خطوط خالی می‌شه که بین نشانگر اوّل خط (^) و نشانگر آخر خط ($) هیچ کاراکتر دیگه‌ای وجود نداره! برای مثال به دستورات زیر توجه کنید:

 

 

تنظیم nameserver در سیستم‌های بر پایه Debian

postسلام

برای تنظیم nameserver در سیستم‌های گنو/لینوکس تقریباً اوّلین روشی که همه استفاده می‌کنند فایل resolve.conf موجود در مسیر ‪/etc/‬ هست که هر خط اون نشانگر یک nameserver با حالت کلی زیر هست:

امّا از جمله معایبی که این روش داره این هست که ممکنه بعد از هر بار ریبوت توسط ابراز‌های مورد استفاده بپره و مجبور بشیم دوباره اون رو تنظیم کنیم. پس می‌ریم دنبال راه‌حل دیگه!

اگر شما هم از اون دسته آدمایی هستین که تلاش می‌کنید با استفاده از دکمه‌ی tab دستور رو کامل کنید حتماً هنگام تایپ کردن کلمه‌ی resolve.conf متوجه شدین که در همان مسیر ‪/etc/‬ یک دایرکتوری به اسم resolving.conf.d وجود داره. درون این مسیر یه فایل به اسم base وجود داره که کارش ذخیره‌ی nameserverهاست. و به عبارت دیگه با هر بار بالا آمدن سیستم مقادیر موجود در آن درون فایل resolv.conf قرار می‌گیره. شکل کلی خطوط این فایل هم مانند فایل resolv.conf هست.

و در نهایت راه‌حل سوّم برای زمانی مناسب هست که اینترفیس شبکه قرار هست آدرس IP استاتیک داشته باشه و این کار رو از طریق فایل ‪/etc/network/interfaces‬ انجام می‌دیم. در این حالت هم کافی هست که آدرس IP سرور DNS رو با فرمت:

درون بلاک اینترفیس مورد نظر اضافه کنیم. برای مثال:

 

URI, URL and URN

سلام

توی بعضی از داکیومنت‌های فنی به کلمات URL, URI و URN بر می‌خوریم که علاقه‌بر اینکه شکل نوشتاری مشابهی دارن مفهوم خیلی شبیه به همی هم دارن. از این به بعد اگر به این کلمات بر خوردین و نیاز داشتین که سریع به مفهوم کلی اونها پی ببرید می‌تونید این شماتیک رو در نظر بگیرید:

 

ریست کردن رمز عبور ispconfig

postسلام

اگر خدای نکرده کلمه عبور ispconfig رو فراموش کردید لازم نیست زیاد نگران باشید، چون اگر هنوز به سرور دسترسی دارید و کلمه عبور mysql اون رو می‌دونید می‌تونید کلمه عبور ispconfig رو بدون اینکه لازم باشه کلمه عبور قبلی رو بدونید ریست کنید.

این کار از طریق آپدیت کردن فیلد کلمه‌ی عبور کاربر مورد نظر (admin) انجام می‌شه. پس کافیه از طریق phpmyadmin در دیتابیس dbispconfig و جدول sys_user فیلد passwort رو زمانی که فیلد username برابر مقدار admin هست رو با md5 کلمه‌ی عبور جدید جایگزین کنید.

اگر phpmyadmin نصب ندارید کافی هست با استفاده از دستور زیر وارد mysql شوید:

سپس با استفاده از دستور زیر، دیتابیس مورد استفاده رو به dbispconfig تغییر می‌دیم:

و در نهایت کافی هست دستور زیر رو اجرا کنیم تا کلمه‌ی عبور کاربر admin از هر چیزی که بود به NEW-PASSWORD تغییر پیدا کنه (هشدار: قبل از اجرای دستور مقدار NEW-PASSWORD رو به کلمه‌ی عبور دلخواه تغییر دهید!)

و نهایت با استفاده از دستور ‪quit;‬ از mysql خارج شوید.

حال می‌توانید با استفاده از کلمه‌ی عبور جدید کاربر admin وارد وب‌اینترفیس ispconfig شوید. :)