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