למידת היסודות של איך שינוי הכניסה/הפלט של Linux עובד

אחת הנושאים החשובים והמעניינים ביותר בניהול Linux הוא הפניה של הקלט ו/או הפלט של פקודות מודיעין ו/או אל קבצים, או לחבר פקודות מרובות יחד באמצעות צינורות כדי ליצור את מה שנכון לקרוא "צינור פקודות".צינור פקודות.

כל הפקודות שאנו מריצים מייצרות בסיסית שני סוגי פלט:

  1. תוצאת הפקודה – הנתונים שהתוכנית מיועדת ליצור, ו
  2. מעמד התוכנית והודעות שגיאה שמעבירות מידע למשתמש על פרטי ביצוע התוכנית.

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

  1. stdin או 0 – מחובר למקלדת, רוב התוכניות קוראות קלט מן הקובץ הזה.
  2. stdout או 1 – מחובר למסך, וכל התוכניות שולחות את התוצאות שלהן לקובץ זה ו
  3. stderr או 2 – התוכניות שולחות הודעות מצב/שגיאה לקובץ זה שגם הוא מחובר למסך.

לכן, הפניה של הקלט ו/או הפלט מאפשרת לך לשנות את מקור הקלט של פקודה וגם את מקום שליחת הפלט והודעות השגיאה שלה. וכל זה נעשה אפשרי על ידי האופרטורים “<” ו־“>” של הפניה.

איך להפנות את הפלט התקני אל קובץ ב-Linux

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

$ top -bn 5 >top.log

באמצעות הדגלים:

  1. -b – מאפשר ל־top לרוץ במצב סדרי, כך שתוכל להפנות את הפלט שלו לקובץ או לפקודה אחרת.
  2. -n – מציין את מספר האיטרציות לפני שהפקודה תסיים את ריצתה.

ניתן להציג את תוכן קובץ top.log באמצעות פקודת cat כך:

$ cat top.log

כדי להוסיף את הפלט של פקודה, יש להשתמש באופרטור “>>”.

לדוגמה, כדי להוסיף את הפלט של פקודת top למעלה בקובץ top.log במיוחד בתוך סקריפט (או בשורת הפקודה), יש להזין את השורה הבאה:

$ top -bn 5 >>top.log

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

$ top -bn 5 1>top.log

כיצד להפנות שגיאת תקן לקובץ בלינוקס

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

פקודת ls למטה תפיק שגיאה כאשר מבצעים אותה על ידי משתמש מערכת רגיל ללא הרשאות root:

$ ls -l /root/

ניתן להפנות את השגיאה התקנית לקובץ כך:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 
Redirect Standard Error to File

על מנת להוסיף את השגיאה התקנית, ניתן להשתמש בפקודה הבאה:

$ ls -l /root/ 2>>ls-error.log

איך להפנות את הפלט/השגיאה התקנית לקובץ אחד

כמו כן, ניתן לתפוס את כל הפלט של פקודה (הפלט התקני והשגיאה התקנית) לקובץ אחד. ניתן לעשות זאת בשני אופנים אפשריים על ידי ציון מספרי תיאור הקובץ:

1. הראשון הוא שיטה יחסית ישנה שעובדת כך:

$ ls -l /root/ >ls-error.log 2>&1

הפקודה למעלה אומרת שהשל תשלח תחילה את הפלט של פקודת ls לקובץ ls-error.log (באמצעות >ls-error.log), ואז תכתוב את כל הודעות השגיאה לתיאור הקובץ 2 (פלט תקני) שהופנה לקובץ ls-error.log (באמצעות 2>&1). מה שמרמז על כך שהשגיאה התקנית גם נשלחת לאותו קובץ כמו הפלט התקני.

2. השני והשיטה הישירה היא:

$ ls -l /root/ &>ls-error.log

ניתן גם להוסיף את הפלט התקני והשגיאה התקנית לקובץ אחד כך:

$ ls -l /root/ &>>ls-error.log

איך להפנות קלט תקני לקובץ

רוב הפקודות, אם לא כלן, מקבלות את הקלט שלהן מהקלט התקני, ולפי ברירת המחדל הקלט התקני מחובר למקלדת.

כדי להפנות קלט סטנדרטי מקובץ שונה מהמקלדת, יש להשתמש באופרטור “<” כפי שמוצג להלן:

$ cat <domains.list 
Redirect Standard Input to File

איך להפנות קלט/פלט סטנדרטי לקובץ

ניתן לבצע הפנית קלט סטנדרטי, פלט סטנדרטי בו זמנית באמצעות פקודת sort כפי שמוצג להלן:

$ sort <domains.list >sort.output

איך להשתמש בהפנית קלט/פלט באמצעות צינורות

כדי להפנות את פלט של פקודה אחת כקלט של פקודה אחרת, ניתן להשתמש בצינורות, זהו כלי עוצמתי לבניית שורות פקודה שימושיות לפעולות מורכבות.

לדוגמה, הפקודה הבאה תציג את רשימת חמשת הקבצים ששונו לאחרונה.

$ ls -lt | head -n 5 

כאן, האפשרויות:

  1. -l – מאפשר פורמט רשימה ארוכה
  2. -tממיין לפי זמן שינוי עם הקבצים החדשים ביותר מוצגים תחילה
  3. -n – מציין את מספר שורות הכותרת להצגה

פקודות חשובות לבניית צינורות

כאן, נבקר באופן קצר בשתי פקודות חשובות לבניית צינורות פקודה והן:

xargs שמשמש לבניית וביצוע שורות פקודה מקלט סטנדרטי. להלן דוגמה לצינור שמשתמש ב־xargs, פקודה זו משמשת ל־העתקת קובץ לתיקיות מרובות בלינוקס:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
Copy Files to Multiple Directories

והאפשרויות:

  1. -n 1 – מורה ל־xargs להשתמש לכל היותר בארגומנט אחד לכל שורת פקודה ולשלוח ל־פקודת cp
  2. cp – מעתיק את הקובץ
  3. -vמציג התקדמות של פקודת ההעתקה.

לאפשרויות שימוש נוספות ומידע, קראו בעמוד ה־ xargs במדריך:

$ man xargs 

A tee command reads from standard input and writes to standard output and files. We can demonstrate how tee works as follows:

$ echo "Testing how tee command works" | tee file1 
tee Command Example

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

כדי ללמוד עוד על סננים וצינורות ב-Linux, קראו את המאמר הזה מצאו את עשרת כתובות ה-IP העליונות שנגישות לשרת Apache, מציג דוגמה שימושית לשימוש בסננים וצינורות.

במאמר זה, הסברנו את היסודות של הפניית קלט/פלט ב-Linux. זכרו לשתף את דעתכם דרך חלק המשוב למטה.

Source:
https://www.tecmint.com/linux-io-input-output-redirection-operators/