כיצד להפנות את stderr ל stdout ב- Bash

How Redirect Stderr Stdout Bash



פקודות בלינוקס לוקחות קלט מהמשתמש, שיכול להיות קובץ או תכונה כלשהי, ובביצוע הן נותנות פלט כלשהו הנקרא פלט סטנדרטי. הפלט הסטנדרטי יכול להיות פלט הצלחה או פלט שגיאה; שניהם יוצגו במסך הטרמינל שלך. אבל במקרים מסוימים, אתה רוצה לאחסן פלט סטנדרטי לקובץ לבדיקה או באגים של הקוד. ב- Linux, ניתן להפנות פלטים אלה לקובץ, ולתהליך לכידתו נקרא ניתוב מחדש.







כל תהליך ב- Linux מייצר שלושה זרמי נתונים, stdin, stdout ו- stderr:



  • stdin : לוקח קלט מהמשתמש באמצעות מקלדת
  • stdout : מציג פלט על המסך
  • stderr : מציג פרטי שגיאה על המסך

לכל זרם נתונים יש מזהה מספרי:



מזהה מספרי שֵׁם
0 stdin
1 stdout
2 stderr

בואו להסביר את ההפניה קצת יותר בפירוט:





כיצד לנתב פלט רגיל ושגיאת תקן ב- Bash:

כדי לנתב את הפלט הסטנדרטי של הפקודה, נשתמש ב -1 עם אופרטור ניתוב גדול מהסימן>:

$ls 1>stdout.txt

הפקודה לעיל תיצור קובץ ותמקם את הפלט הסטנדרטי של הפקודה ls בקובץ stdout.txt.



כדי לקרוא את הקובץ stdout.txt, השתמש ב:

$חתולstdout.txt

אנו יכולים להפנות שגיאת תקן גם לקובץ באמצעות הפקודה:

$חתולmyfile.txt2>stderr.txt

לצפייה בקובץ stderr.txt, השתמש ב:

$חתולstderr.txt

ודא ששימוש 2 יהיה גדול מהסימן>. מכיוון שאין קובץ myfile.txt בספרייה, הפקודה cat תיתן שגיאה שתצורף בקובץ stderr.txt.

ניתן להפנות את הפלטים הסטנדרטיים האלה באמצעות פקודה אחת בלבד, השתמש ב:

$ls 1>stdout.txt2>stderr.txt

הפלט של הפקודה ls ייכתב ב- stdout.txt קובץ, אבל stderr.txt יישאר ריק כי לא תהיה שגיאה.

עכשיו בואו נעשה עבור stderr.txt:

$חתולmyfile.txt1>stdout.txt2>stderr.txt

השתמש בפקודה המוזכרת למטה כדי לקרוא stderr.txt.

$חתולstderr.txt

וכמובן, stdout.txt יהיה ריק.

סיכום :

פקודת Linux בעת ביצוע נותנת פלט סטנדרטי שיכול להיות פלט הצלחה או פלט שגיאה. באופן כללי, לא ניתן להפנות פלטים אלה באמצעות אופרטורים של ניתוב מחדש; עלינו להשתמש במזהים מספריים ספציפיים עם הסימן>. במדריך זה למדנו כיצד להשתמש במקשים מספריים אלה כדי להפנות פלט סטנדרטי לקובץ עם דוגמאות.