آموزش‌های خط فرمانی

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

آموزش‌های خط فرمانی

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

پرسش و پاسخ شماره ۱۴



چطور می‌توانم چند دستور را در یک مرحله تغییر مسیر بدهم؟

تغییر مسیر خروجی استاندارد یک فرمان منفرد به همین آسانی است:

    date > file

برای تغییر مسیر خروجی استاندارد خطا:

    date 2> file

برای تغییر مسیر هردو:

    date > file 2>&1

یا، روش تفننی‌تر:

    #  اما غیرقابل حمل  date > file 2>&1 معادل با ,Bash فقط در 
    date &> file

تغییر مسیر کل یک حلقه:

    for i in $list; do
        echo "Now processing $i"
        # more stuff here...
    done > file 2>&1

به هرحال، اگر باید خروجی فرمانهای بسیاری تغییر مسیر داده شود، این روش می‌تواند کسل کننده گردد. اگر تمام خروجی یک اسکریپت باید به یک فایل(به عنوان مثال فایل log بروند)، فرمان exec می‌تواند به کار برود:

    # "log.txt"   تغییر مسیر هردو خروجی استاندارد وخطا به فایل
    exec > log.txt 2>&1
    # می‌روند "log.txt" تمام خروجی از جمله خطای استاندارد اکنون به فایل

در غیر آن صورت، گروه‌بندی فرمانها، کمک می‌کند:

    {
        date
        # some other commands
        echo done
    } > messages.log 2>&1

در این مثال، خروجی تمام فرمانهای درون ابروها به فایل messages.log تغییر مسیر داده می‌شود.

مباحثه بیشتر

آموزش تشریحی ژرفکاوانه


CategoryShell

پرسش و پاسخ 14 (آخرین ویرایش ‎ 2010-07-01 13:04:42 ‎ توسط GreyCat)


نظرات 1 + ارسال نظر
خودم پنج‌شنبه 15 فروردین‌ماه سال 1392 ساعت 04:23 ب.ظ http://porpot.blogsky.com

ممنونم بابت این وبلاگ. مطمئنا برای من مفید خواهد بود و البته اگه مشکلی داشتم حتما مزاحم میشم.

ایمیل شما بعد از ثبت نمایش داده نخواهد شد