- عضویت
- 10/5/15
- ارسال ها
- 146
- امتیاز
- 6
سلام.
در این مقاله شمارو با نحوه نغییر مسیر یا ریدایرکت ارورها یا خروجی دستوراتی که در صفحه نمایش لینوکس نمایان می شود به داخل یک فایل آشنا می کنم.
عموما برنامه نویسان بش با این روش آشنا هستند ولی برای تکمیل آموزش بش نیاز به این مورد وجود دارد.
برای ریدایرکت کردن ارور سینتکس آن به طور زیر است :
عموما خطاها در محیط بش k شل و یا پوسته های مدرن تر به سه صورت توصیف می شوند:
نحوه تغییر مسیر هر دو خروجی (خروجی استاندارد) و خطاها (stderr) به فایل های مختلف:
نحوه تغییر مسیر هر دو خروجی (خروجی استاندارد) و خطا (stderr) به همان پرونده:
در این حالت خطاها به یک فایل تهی تغییر مسیر می دهند.در نظر داشته باشید که حتما متن خطا اسپم بوده و باید به حالت صفر یا تهی تبدیل شود:
یا
موفق باشید.
شاهین سالک توتونچی
در این مقاله شمارو با نحوه نغییر مسیر یا ریدایرکت ارورها یا خروجی دستوراتی که در صفحه نمایش لینوکس نمایان می شود به داخل یک فایل آشنا می کنم.
عموما برنامه نویسان بش با این روش آشنا هستند ولی برای تکمیل آموزش بش نیاز به این مورد وجود دارد.
برای ریدایرکت کردن ارور سینتکس آن به طور زیر است :
کد:
cmd > file
ls > file
کد:
stdin(0)
stdout(1)
stderr(2)
نحوه تغییر مسیر تمامی خروجی ها به یک فایل
تغییر مسیر خروجی (stdout) شرح زیر است:
تغییر مسیر خروجی (stdout) شرح زیر است:
کد:
command-name > output.txt
command-name > stdout.txt
تغییر مسیر تمام خطاها به یک فایل:
تغییر مسیر خطا (stderr) به شرح زیر است:
کد:
command-name 2> errors.txt
command-name 2> stderr.txt
کد:
command1 > out.txt 2> err.txt
command2 -f -z -y > out.txt 2> err.txt
نحوه تغییر مسیر هر دو خروجی (خروجی استاندارد) و خطا (stderr) به همان پرونده:
کد:
command1 > everything.txt 2>&1
command1 -arg > everything.txt 2>&1
نحوه تغییر مسیر خطا (stderr) به تهی یا صفر
کد:
command1 2> /dev/null
command1 2> /dev/zero
command2 -arg 2> /dev/null
command2 -arg 2> /dev/zero
نکته : استفاده از دستور تیی برای نمایش و تغییر مسیر خطا یا خروجی ها :
کد:
command1 |& tee log.txt
## or ##
command1 -arg |& tee log.txt
## or ##
command1 2>&1 | tee log.txt
استفاده های دیگر
کد:
#!/bin/bash
# My script to do blah ...
foo(){
:
} 2>&1 | tee foo.log
کد:
#!/bin/bash
# My script to do blah ...
{
command1
command2
} 2>&1 | tee script.log
شاهین سالک توتونچی
آخرین ویرایش: