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

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

צינורות

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

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

הנה דוגמה אשר יכלול את כל הקבצים, עם פרטים ( -la ) בספרייה /dev ו צינור הפלט more . ספריית /dev צריך עשרות קבצים ולכן להבטיח כי צריך more paginate.

 ls -la / dev יותר 

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

הנה דוגמה צינור נוסף, הפעם באמצעות " wc " (ספירת מילים) כלי.

 ls -1 / dev שירותים 

wc סופרת את מספר השורות, המילים והתווים בקלט הרגיל. אם אתה משתמש בפרמטר -l הוא יציג רק את מספר השורות, שהוא דרך טובה לראות כמה קבצים נמצאים בספרייה!

את עומק תסתכל על הארכיון של לינוקס ו הדחיסה פקודות הדרכה יש דוגמה באמצעות tar 7-Zip יחד:

 tar cvf - * 7zr a -si somefiles.tar.7z 

במקרה זה המקף לאחר האפשרות f אומר tar לשלוח הפלט שלה החוצה את הסטנדרט ולא לקובץ. הפלט tar יהיה מוזן את הצינור לתוך 7zr אשר מחכה קלט מהתקן בשל האופציה -si.

ניתוב מחדש

ניתוב מחדש דומה לצינורות למעט שימוש בקבצים במקום בתוכנית אחרת. הפלט הסטנדרטי עבור התוכנית הוא המסך. באמצעות הסמל > (גדול מ), ניתן לשלוח את הפלט של התוכנית לקובץ. הנה רשימת ספריות של /dev שוב אבל הפעם מנותב לקובץ בשם listing.txt

 ls -la> listing.txt 

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

 more.txt יותר 

אם listing.txt כבר היה קיים, הוא יחליף. אבל אתה יכול לצרף לקובץ קיים באמצעות >> כך:

 ls -la / home> list.txt ls -la / dev >> listing.txt 

הפניה הראשונה תחליף את הקובץ listing.txt בעוד השני יצורף אליו.

ניתן להשתמש בפקודת cat ליצירת קובץ באמצעות ניתוב מחדש, לדוגמה:

 cat> atextfile.txt 

עכשיו כל טקסט שתקליד יישלחו לקובץ atextfile.txt עד שתלחצו על Control-D, ובנקודה זו הקובץ ייסגר atextfile.txt לשורת הפקודה. אם אתה רוצה להוסיף טקסט נוסף לקובץ להשתמש באותה פקודה אבל עם שני סימנים גדולים יותר ( >> ).

סיכום

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