پرسش و پاسخ شماره ۱۴ - آموزش اسکریپت نویسی
X
تبلیغات
زولا

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

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

#!/bin/bash

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

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

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

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

    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)