אחת הנושאים החשובים והמעניינים ביותר בניהול Linux הוא הפניה של הקלט ו/או הפלט של פקודות מודיעין ו/או אל קבצים, או לחבר פקודות מרובות יחד באמצעות צינורות כדי ליצור את מה שנכון לקרוא "צינור פקודות".צינור פקודות.
כל הפקודות שאנו מריצים מייצרות בסיסית שני סוגי פלט:
- תוצאת הפקודה – הנתונים שהתוכנית מיועדת ליצור, ו
- מעמד התוכנית והודעות שגיאה שמעבירות מידע למשתמש על פרטי ביצוע התוכנית.
ב-Linux ובמערכות דומות ל-Unix, קיימים שלושה קבצים ברירת מחדל הנקראים כאן למטה, שזיהויים גם על ידי השול, באמצעות מספרי מזהה של פקד קובץ:
- stdin או 0 – מחובר למקלדת, רוב התוכניות קוראות קלט מן הקובץ הזה.
- stdout או 1 – מחובר למסך, וכל התוכניות שולחות את התוצאות שלהן לקובץ זה ו
- stderr או 2 – התוכניות שולחות הודעות מצב/שגיאה לקובץ זה שגם הוא מחובר למסך.
לכן, הפניה של הקלט ו/או הפלט מאפשרת לך לשנות את מקור הקלט של פקודה וגם את מקום שליחת הפלט והודעות השגיאה שלה. וכל זה נעשה אפשרי על ידי האופרטורים “<”
ו־“>”
של הפניה.
איך להפנות את הפלט התקני אל קובץ ב-Linux
אתה יכול להפנות את הפלט התקני כמו בדוגמה שלמעלה, כאן, אנו רוצים לאחסן את הפלט של פקודת top לצורך בדיקה מאוחר יותר:
$ top -bn 5 >top.log
באמצעות הדגלים:
-b
– מאפשר ל־top לרוץ במצב סדרי, כך שתוכל להפנות את הפלט שלו לקובץ או לפקודה אחרת.-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

על מנת להוסיף את השגיאה התקנית, ניתן להשתמש בפקודה הבאה:
$ 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

איך להפנות קלט/פלט סטנדרטי לקובץ
ניתן לבצע הפנית קלט סטנדרטי, פלט סטנדרטי בו זמנית באמצעות פקודת sort כפי שמוצג להלן:
$ sort <domains.list >sort.output
איך להשתמש בהפנית קלט/פלט באמצעות צינורות
כדי להפנות את פלט של פקודה אחת כקלט של פקודה אחרת, ניתן להשתמש בצינורות, זהו כלי עוצמתי לבניית שורות פקודה שימושיות לפעולות מורכבות.
לדוגמה, הפקודה הבאה תציג את רשימת חמשת הקבצים ששונו לאחרונה.
$ ls -lt | head -n 5
כאן, האפשרויות:
-l
– מאפשר פורמט רשימה ארוכה-t
– ממיין לפי זמן שינוי עם הקבצים החדשים ביותר מוצגים תחילה-n
– מציין את מספר שורות הכותרת להצגה
פקודות חשובות לבניית צינורות
כאן, נבקר באופן קצר בשתי פקודות חשובות לבניית צינורות פקודה והן:
xargs שמשמש לבניית וביצוע שורות פקודה מקלט סטנדרטי. להלן דוגמה לצינור שמשתמש ב־xargs, פקודה זו משמשת ל־העתקת קובץ לתיקיות מרובות בלינוקס:
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

והאפשרויות:
-n 1
– מורה ל־xargs להשתמש לכל היותר בארגומנט אחד לכל שורת פקודה ולשלוח ל־פקודת cpcp
– מעתיק את הקובץ-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

סנני קובצים או טקסט נהוגים בשימוש עם צינורות עבור פעולות קובצים ב-Linux ביעילות, כדי לעבד מידע בדרכים עוצמתיות כגון שינוי פלט של פקודות (דבר זה יכול להיות חיוני עבור יצירת דוחות שימושיים ב-Linux), שינוי טקסט בקבצים ועוד מספר משימות ניהול מערכת ב-Linux.
כדי ללמוד עוד על סננים וצינורות ב-Linux, קראו את המאמר הזה מצאו את עשרת כתובות ה-IP העליונות שנגישות לשרת Apache, מציג דוגמה שימושית לשימוש בסננים וצינורות.
במאמר זה, הסברנו את היסודות של הפניית קלט/פלט ב-Linux. זכרו לשתף את דעתכם דרך חלק המשוב למטה.
Source:
https://www.tecmint.com/linux-io-input-output-redirection-operators/