1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

همه ی ترفند های لینوکس در این تاپیک

شروع موضوع توسط minaaa ‏6/11/11 در انجمن لینوکس

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    آموزش





    تغيير نام چند فايل با يك دستور


    اگر تعداد زیادی فایل دارید كه باید نام همه‌شان به چیز مشابه دیگری تغییر كند، در ویندوز معمولا به سراغ Batch File Processorها خواهیم رفت (كه پیشتر در همین ضمیمه چند نرم‌افزار مرتبط معرفی شده است). اما كاربران دو آتشه لینوكس، معمولا به این افتخار می‌كنند كه ترمینال قدرتمند لینوكسی، آنها را از نصب بيشتر نرم‌افزارهای خرد و جانبی بی‌نیاز می‌كند و می‌توانند مستقیما امور حرفه‌ای‌تری انجام دهند.
    تغییر دستی نام‌ فایل‌ها مدت زیادی طول می‌كشد، اما اگر بتوان اسكریپتی نوشت كه تك‌تك فایل‌های یك دایركتوری را بخواند و نام‌ هر فایل را تغییر دهد، در وقت بسیار صرفه‌جویی خواهد شد. دستور for در اسكريپت‌ها اين‌گونه عمل مي‌كند:‌
    for var in «files»;do «command» $var;done

    مي‌توان به‌جاي «files» هر چيزي نوشت. مثلا * يا *.txt همچنين مي‌توانيد داخل «command» هر چيزي را كه دستور لينوكسی باشد اجرا كرد. توجه داشته باشید كه این دستور هر بار كه فايلی پيدا شد، اجرا مي‌شود.
    حالا با كمك يك متغير مي‌توانيم كار را جالب‌تر كنيم. به‌جاي اين‌كه فقط از متغير استفاده كنيم (مثل var$) مي‌توانيم با استفاده از اين الگوي نگارشي، عمليات جايگزيني را هم انجام دهيم:
    ${var‌/‌originaltext‌/‌replacetext}

    بنابراين اگر اين دستور را داخل دايركتوري از عكس‌ها با نام‌های مشابه اجرا كنيم:
    for f in *;do mv $f ${f‌/‌IMG‌/‌Image};done

    براي هر فايلي كه داراي الگوي * باشد (يعني همه فايل‌ها)، دستور زير اجرا مي‌شود:‌
    mv IMG_00042.jpg Image_00042.jpg

    و این یعنی نام آن فایل از IMG_00042.jpg به Image_00042.jpg تغییرخواهد كرد و نام فایل بعدی به همین ترتیب و...
    در نتیجه در كمتر از چند ثانیه، فولدری جدید خواهیم داشت كه اطلاعات فایل‌هایمان در آن به‌روز شده‌اند.
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : همه ی ترفند های لینوکس در این تاپیک

    استادي با دستورات ترمينال

    [​IMG]
    «در لينوكس، همه مي‌دانند كه مي‌شود فلان كار را با يك دستور ترمينالي انجام داد.» اين جمله درست است، اما اين كه آن دستور را بشود پيدا كرد اصلا آسان نيست؛ بخصوص در مورد مديريت بسته‌ها در سيستم‌هاي دبياني.
    ابزارهاي بسته‌هاي دبيان(dpkg، مجموعه نرم‌افزاري ATP و ابزارهايي چونaptitude) امور پايه‌اي نصب و مديريت بسته‌ها را بسادگي انجام مي‌دهد. حتي اگر بخواهيم كارهاي پيچيده‌تر را هم انجام دهيم، ‌به كمك اين ابزارها مي‌توان آنها را ساده‌تر كرد، اما آپشن‌ها و ابزارهايي كه براي اين كار لازم است، خيلي مشهور نيستند.
    يكي از كارهاي مفيدي كه مي‌توان انجام داد فهميدن اين موضوع است كه چرا فلان بسته نصب شده است؟ براي پاسخ به اين سوال، مي‌خواهيم از ابزار Aptitude استفاده كنيم كه اين كار را بسادگي و سرعت انجام مي‌دهد. كافي است از دستور زير استفاده كنيم تا متوجه شويم اين بسته مورد استفاده چه برنامه‌اي است:
    Aptitude why packagename
    اگر براي مدت طولاني ابزارهاي سيستم خود را به‌روز نكرده‌ايد، احتمالا از اطرافيان خود شنيده‌ايد كه مي‌گويند، بهتر است توزيع خود را ارتقا بدهيد و به‌جاي دستور upgrade ازdist-upgrade استفاده كنيد. هر چند كه راه بهتري است و بعد از انجام اين دستور، ديگر با تعداد زيادي از بسته‌هاي ارتقا يافته بي‌مصرف روبه‌رو نخواهيد شد، اما تنها كافي است به‌جاي استفاده از ابزار apt، از aptitude استفاده كنيد.
    گاهي اوقات پيش مي‌آيد كه بخواهيد بدانيد فايل‌هاي موجود در يك بسته چه هستند يا اين كه آيا فلان فايل به بسته خاص وابسته هست يا خير. براي اين منظور، از دستور dpkg –S filename استفاده مي‌كنيم. مثلا اگر بسته Sendmail در سيستم شما نصب نشده باشد و بخواهيد بدانيد كه چه بسته‌اي است كه دارد لينك ‌/‌usr‌/‌lib‌/‌sendmail را كنترل مي‌كند، مي‌توانيد دستور زير را اجرا كنيد:‌
    Dpkg –S ‌/‌usr‌/‌lib‌/‌sendmail
    كه براي مثال، جوابي معادل زير مي‌دهد:
    postfix: ‌/‌usr‌/‌lib‌/‌sendmail
    حالا اگر بخواهيم بدانيم كه كدام بسته چه فايلي را نصب مي‌كند، بايد چه كنيم؟ اين كاري است كه دستور apt-file انجام مي‌دهد. توجه داشته باشيد اين دستور ممكن است به‌صورت پيش‌فرض نصب نشده باشد و بايد آن را نصب كنيم. بعد از نصب بايد حافظه كش آن را به‌روز كنيم (با تايپ دستور apt-file update). حالا اگر دستور apt-file filename را تايپ كنيم، اطلاعات آن فايل را دريافت مي‌كنيم.
    بهتر است اطلاعاتي كه مي‌دهيم بسيار جزئي باشد، چرا كه ممكن است پاسخ برگشتي شامل چند جواب شود اما وقتي آدرس دقيق مي‌دهيم، مثلا نشاني ‌/‌usr‌/‌lib‌/‌xml2Conf.sh را به‌عنوان filename به آن دستور بدهيم، تنها يك پاسخ بيرون مي‌دهد. در نتيجه اگر فايل /etc/apache2/apache2.conf را با اين دستور جستجو كنيم، حتي اگر آپاچي روي سيستم نصب نشده باشد هم، پاسخ apache2.2-common را بر مي‌گرداند. آخرين ترفند ترمينالي هم برمي‌گردد به يك موضوع جالب و آن هم گزارش‌گيري از تمام نرم‌افزارهايي است كه تاكنون نصب شده است. به فرض بخواهيم يك نصب تميز از سيستم عامل داشته باشيم، اما نه حوصله و نه وقت اين كار را داريم كه يكي يكي يادمان بيايد چه نرم‌افزارهايي را قبلا نصب كرده‌ بوديم. براي اين منظور ‌مي‌توان با اجراي دستور dpkg –get-selections فهرست بسته‌هايي را كه نصب ‌شده‌اند، بيابيم. نتيجه را در يك فايل متني ذخيره كنيم و بعد از اين كه سيستم عامل نصب شد، دستور زير را اجرا كنيم:
    dpkg --set-selections » installed-packages.txt