آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

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

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

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

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

    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)

نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد