צינורות: מה שאתה צריך לדעת כדי להתחיל להשתמש בהם ב- GNU / Linux

צינורות

א צינור או פיפe הוא למעשה צינור זמין עבור UNIX / Linux והוא מעשי ביותר. אך כדי להבין היטב מהו צינור, עליך לדעת שבסביבת * nix יש לו 3 זרמי נתונים מובנים. פירוש הדבר שלמי שלא יודע פירושו שהנתונים יכולים לנסוע לשלוש נקודות או ממנה.

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

הנקודות האלה שדיברתי עליהן או זרמי נתונים, הם:

  • סטדין: תואם 0 והוא הקלט הסטנדרטי. באופן כללי, הקלט הסטנדרטי עבור מערכת * nix הוא המקלדת. כלומר, מה שתקליד יהיה המידע המשמש. יש לה מכשיר מיוחד המשויך אליו שהוא / dev / stdin.
  • stdout: מזוהה עם 1, זה הפלט הסטנדרטי. בדרך כלל זה מתאים לצג או למסך של המחשב שלך, שם אתה יכול לראות את המידע. לדוגמא, כאשר אתה מפעיל פקודה ls רשימת התוכן תוצג על המסך, נכון? המכשיר המשויך הוא / dev / stdout.
  • סטדרר: מזוהה עם 2, זהו פלט השגיאה הסטנדרטי, כאשר מתרחשת שגיאה בתוכנית. המכשיר המשויך הוא / dev / stderr.

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

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

ls -l | grep doc

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

ps aux | grep firefox

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

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

cat libro | grep love | more

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

cat listado | head
cat listado | tail
cat listado | wc -l
cat listado | sort

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

./miscript |& grep alerta 

ולבסוף, ישנן שתי פקודות הקשורות קשר הדוק לצינורות טי ו- xargs וכי הם יכולים להרחיב עוד יותר את האפשרויות של אלה. במקרה של טי, מה שהוא יאפשר זה להציג את התוצאה של התוכנית הקודמת בפלט הסטנדרטי, כך שתוכלו לראות אותה, ובנוסף לכך, היא יכולה לצינור אותה לקובץ אחר. דוגמה לכך תהיה אם תרשום את תוכן הספרייה ותרצה לראות את הפלט של ls -l כרגע ושמור אותה ברשימת הקבצים.txt:

ls -l | tee listado.txt

אם אינך משתמש בטי, לא תוכל לראות את הפלט במסוף שלך ...

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

עדיין לא מבין? אתה תראה את זה הרבה יותר טוב עם דוגמא. דמיין שאתה רוצה להסיר את כל קבצי thumbs.db הארורים מספרייה, דיסק או מחיצה. אם ישנם רבים, ייתכן שאי אפשר ללכת בזה אחר זה עם הפקודה rm למחוק אותם באופן ידני. אבל עם xargs אתה יכול לעשות הכל אוטומטי. ואתה יכול לעשות זאת באמצעות חיפוש כדי לאתר אותם, לשלוח את הפלט דרך קלט ה- xargs וזה בתורו ייתן ל- rm את השמות כטיעונים. לכן כל האיתורים יימחקו באופן אוטומטי:

find ./ -name "thumbs.db" | xargs rm

לדוגמא, נניח שמצא אתרים /home/name/thumbs.db, /media/test/thumbs.db ו- /tmp/thumbs.db. ובכן, קסארגס יעביר אותם ל- rm כאילו היו ויכוחים. כלומר, כאילו ביצענו: rm /home/name/thumbs.db, ואז rm /media/test/thumbs.db ואז rm /tmp/thumbs.db.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   חוסה דיג'ו

    מצוין, מידע זה חשוב מאוד עבורנו משתמשי הלינוקס

  2.   Daniel דיג'ו

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

  3.   01101001b דיג'ו

    הדוגמה עם xargs התאימה לי כמו כפפה ליד. בדיוק היום התמודדתי עם אותו פרט קטן של יציאה מרובה שהיה עלי לשלוח "בחלקים". קסארגס הלך על פינטוריטה.
    אסיר תודה!