مهم‌ترین اشتباهات رایج در محیط خط فرمان

سلام :)

خط فرمان (Command Line) یکی از قدرتمندترین بخش‌های سیستم عامل های شبه یونیکس (Unix-like) و یونیکسی (Unix) است. مانند بسیاری از ابزارهای دیگر، در صورت استفاده نادرست از آن ممکن است که صدمات جبران ناپذیری به سیستم و در حالت کلی به سطح کاری شما وارد نماید. این مقاله قصد دارد تا با معرفی مهم‌ترین این اشتباهات، شما را از انجام دادن غیرعمدی آنها آگاه سازد. در انتهای مقاله نیز راه حل هایی جهت رفع ایرادات احتمالی معرفی است.

دستور userdel

این دستور به صورت پیش فرض فقط کاربر را حذف می کند و اثری بر روی فایل‌های کاربر ندارد. ولی در صورتی که در فایل تنظیمات /etc/deluser.conf حذف فایل‌ها نیز فعال شده باشد، با حذف کاربر، تمامی اطلاعات مربوط به آن نیز حذف می شود و ممکن است فایل های موجود در دایرکتوری وی مهم و ضروری باشد. این قضیه بیشتر بر روی سرورها و هنگام عوض شدن مدیرسیستم (SysAdmin) بروز پیدا می کند. پس قبل از پاک کردن کاربر از تنظیمات فایل /etc/deluser.conf و نیز مهم نبودن فایل‌های کاربر مورد حذف مطمئن شوید.

خراب کردن محتوای فایل با استفاده نادرست از > و >>

در خط فرمان و کلا اسکریپت‌نویسی bash شما می توانید با استفاده از > و >> خروجی یک دستور را در یک فایل ذخیره نمایید. تفاوت > و >> در این است که > خروجی دستور را جایگزین محتوای فعلی فایل می‌کند ولی >> خروجی را به انتهای محتوای فایل اضافه می‌نماید. در صورت استفاده > به جای >> شما تمامی اطلاعات قبلی فایل را از دست می‌دهید! پس قبل از اجرای دستور، یک بازنگری در دستور نوشته شده نمایید.

استفاده نادرست از پارامتر c به جای x

در صورتی که شما قصد استخراج کردن محتوای یک فایل فشرده را با دستور tar داشته باشید، باید از این دستور مانند زیر استفاده نمایید:

tar -zxvf FILE.tar.gz DICRECTORY

حال اگر به جای x اشتباها از c استفاده نمایید، بدون هیچ اخطاری محتوای DIRECTORY جایگزین محتوای فعلی فایل بایگانی شما می شود!

اشتباهی گرفتن خط فرمان‌ها

فرض کنید که شما همزمان به دو یا چند سرور از طریق خط فرمان و دستور ssh وصل شده‌اید. ممکن است در هنگام کار یک دستور را در جای اشتباهی اجرا نموده و باعث آسیب رسیدن به آن سرور شوید. بهتر است از hostname های مختلف و در صورت امکان ترمینال‌های رنگی متفاوت استفاده نمایید. با این وجود بهترین راه حل برای جلوگیری از این مشکل وصل شدن تنها به یک سرور در هر لحظه می‌باشد.

استفاده از * در دستور rm

دستور rm برای حذف فایل و دایرکتوری‌ها استفاده می‌شود. همچنین * نشان دهنده تمامی این عناصر است. گاهی اوقات ممکن است که این دو با یکدیگر و به صورت اشتباه استفاده شوند. در زیر نمونه‌هایی از این اشتباهات ارائه شده اند.
وجود فاصله بین * و آدرس دایکتوری مورد نظر بار حذف:

rm /foo/ *

استفاده از .* و پارامتر -R:

rm -R .*

اشتباه دستور با در این مورد است که در دایرکتوری جایی .. به دایکتوری پدر (parent) اشاره دارد و استفاده همزمان از .* و پارامتر -R باعث می‌شود که دستور rm از پایین به بالا (درون به بیرون) تمامی اطلاعات شما را حذف نماید!

استفاده نادرست از / و . و .. در آدرس‌دهی به پارامترهای دستورات

اگر با خط فرمان و آدرس دهی فایل‌ها آشنا باشید می دانید که / به دایرکتوری ریشه و . به دایرکتوری جاری و .. به دایرکتوری پدر (parent) اشاره دارند. برای عوض کردن دسترسی دایرکتوری جاری در صورتی که در همان دایکتوری باشید باید دستوری مانند زیر را وارد نمایید:

chmod -R 755 ./

حال فرض کنید که لازم است از sudo استفاده نمایید و دستور را اشتباها به یکی از صورت‌های زیر وارد کنید. به عدم وجود . قبل از / و فاصله بین . و / دقت نمایید:

sudo chmod -R 755 /
sudo chmod -R 755 . /

آدرس دهی اشتباه سخت افزار در دستور dd

دستور dd برای رونوشت برداشتن (کپی) از اطلاعات در سطح پایین استفاده می‌شود. به عنوان مثال برای رونوشت برداشتن از یک فایل و ذخیره آن باید از دستوری مشابه دستور زیر استفاده نمایید:

dd if=big_null_file of=/dev/sdb

که به نظر شما /dev/sdb آدرس سخت افزار مورد نظر مانند فلش مموری است، حال اگر /dev/sdb آدرس دومین هارد شما باشد، تمامی اطلاعات آن از دست رفته و شما فقط یک big_null_file دارید!

برای جلوگیری از این صدمات چکار کنیم؟

روش‌ها و کارهای زیادی برای جلوگیری از اتفاق افتادن این اشتباهات و رفع آن‌ها وجود دارد. در زیر فهرست اساسی‌ترین مواردی که حتما باید در نظر داشته باشید آمده است:

  • همیشه و در همه حال از تمامی اطلاعات خود نسخه پشتیبان داشته باشد. اگر توانستید نسخه پشتیبان را به صورت های مختلف مانند هارد اکسترنال، دی وی دی، بر روی وب و … به طور همزمان نگهداری نمایید.
  • قبل از اجرای دستورات اساسی مانند rm، mv و chmod حتما یکبار دیگر آن را بازخوانی نمایید.
  • دستور rm را همیشه با پارامتر -i اجرا نمایید.
  • به جای حذف مستقیم اطلاعات توسط rm آن ها را به سطل آشغال منتقل نمایید. برای انجام اینکار در اوبونتو مقاله Make “rm” Move Files To Trash Instead Of Completely Removing Them را مطالعه نمایید. روش های مشابهی نیز در سایر سیستم عامل ها وجود دارد.

منابع و اطلاعات بیشتر

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

چگونه به مشتریان خود نه بگوییم؟

سلام  :)

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

این موضوع که مشتری هیچگاه قصد نه شنیدن را ندارد  درست است. با این حال همه می دانند که همیشه امکان نه شنیدن وجود دارد. فقط روش نه گفتن است که بر روی مشتری تاثیر می گذارد.

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

در این مقاله ضمن معرفی همان راه های ساده که بیشترین ضرر را به شما وارد می کنند، راهی را به شما معرفی کرده و توضیح می دهم که با وجود نه گفتن شما به مشتری، آن مشتری همچنان برای شما مشتری باقی بماند.

ساده ترین و بدترین  راه ها!

  • عدم پاسخگویی به ایمیل مشتری
  • رد تماس مشتری
  • پیچاندن مشتری به هر صورتی

*اکیدا از راه های بالا استفاده نکنید :P

راه بهتر و مفیدتر

Portrait of happy business people enjoying

با مشتری خود ارتباط روحی برقرار کنید. یعنی کاملا به مشتری خود توضیح دهید که وضعیت وی را درک کرده اید و متوجه خواسته وی می باشید.

هیچ وقت به مشتری خود به صورت مستقیم نه نگویید. همیشه دلیل نه گفتن خود را توضیح دهید. به عنوان مثال در صورتی که وقت کافی برای انجام کار را ندارید از او عذرخواهی کرده و زمان بندی احتمالی خود را به او اعلام کنید.

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

در صورتی که احساس کردید مشتری هنوز از شنیدن نه ناراحت است، سعی کنید که مدیر بالاتر خود را در جریان گذاشته و به مشتری اعلام کنید که مدیر بالاتر شما قصد توضیح بیشتر در این زمینه را دارد. این کار باعث می شود که مشتری متوجه اهمیت و جایگاه خود نزد شما شود و بداند که هیچ دلیل غیر منطقی مبنی بر نه گفتن شما وجود ندارد.

سایر کارهایی که می توانید برای مشتری انجام دهید را به وی بگویید. مثلا در صورتی که نمی توانید بهترین نرم افزار مالی را بررسی و همراه با مستندات به عنوان مشاوره برای آن ها ارسال کنید، می توانید لیستی از ۱۰ محصول برتر مالی را آماده و به وی ارائه دهید.

موفق باشید :)

تجربیات من از ۳ سیستم عامل ویندوز، لینوکس و مک

سلام :)

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

ویندوز

ویندوز

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

ویندوز مزایایی نیز داشت که مهمترین آنها برای من موارد زیر می باشند:

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

لینوکس

گنو/لینوکس

لینوکس (اوبونتو، آرچ، دبیان، فدورا و…) مورد اطمینان ترین سیستم عاملی است که تقریبا پاسخ گوی همه نیاز های من می باشد. مزایای بسیاری دارد. مهمترین مزیت آن آزاد بودن است. شما هر تغییری که نیاز دارید، بر روی آن انجام می دهید. خط فرمان بسیار قوی آن واقعا مشکلات بسیاری را برای من حل کرده است.

البته ایراداتی نیز دارد. مهم ترین ایراد آن نبود ابزارهای گرافیکی برای انجام کارهای مختلف و یا ضعیف بودن ابزارهای موجود است. وجود باگ های مختلف در ابزارهای گرافیکی نیز باعث عدم کارایی لازم آنها می شود. مشکل جستجو و دستیابی به اطلاعات نیز نسبت به ویندوز (۷) و به خصوص نسبت به مک واقعا ضعیف است. از طرف دیگر محیط های گرافیکی موجود مانند گنوم یا کی دی ای واقعا User Friendly (کاربرپسند) نیستند. منظور من افکت های تصویری نیست! رنگ بندی، نحوه چیدمان دسکتاپ و… نسبت و ویندوز و مک ضعیف ترند.

مک

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

مک

گرافیکی فوق العاده قوی ای را در برگرفته است. مک قدرت خود را از یونیکس گرفته است و همین موضوع باعث شده است تا همه نیازهای لینوکسی من را بر طرف کند.

مک نیز مشکلاتی دارد. مثلا خیلی وقت ها شما مجبورید برای انجام دادن کارها از ماوس استفاده کنید در حالی که در ویندوز و لینوکس بسیاری از کارها براحتی با کیبورد قابل انجام می باشند. از طرفی Shortcut های مک بعضی اوقات واقعا سخت هستند. البته بعد از مدتی عادت می کنید :)

عیب دیگر آن گران بودن سخت افزارهای اپل می باشد که البته با نصب مک بر روی سیستم های x86 می توان حل کرد.

و در آخر مک برای من آن قدر مزایا دارد که بتوانم از ایرادات آن چشم پوشی کنم.

دسته بندی سیستم عامل ها و استفاده کنندگان

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

  • برنامه نویسان
    1. مک
    2. لینوکس
    3. ویندوز
  • طراحان و گرافیست ها
    1. مک
    2. ویندوز
    3. لینوکس
  • علاقمندان به بازی های کامپیوتری
    1. ویندوز
    2. مک
    3. لینوکس
  • سیستم های نسبتا قدیمی و ضعیف تر
    1. لینوکس
    2. ویندوز
    3. مک
  • سرورها
    1. لینوکس
    2. ویندوز
    3. مک
  • سایر استفاده کنندگان عمومی دسکتاپ
    1. مک
    2. ویندوز
    3. لینوکس

پیوند ها

پی نوشت

بزودی تجربیات بیشتر خود را در مورد مک می نوسیم.

بروزرسانی
مک اونقدرها هم که فکر می کردم نتونست من رو راضی کنه. برگشتم به دنیای زیبای گنو/لینوکس :)
موفق و شاد باشید :)