מהו /dev /null וכיצד להשתמש בו

What Is Dev Null How Use It



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

דוגמא אחת כזו היא /dev /null. זהו קובץ מיוחד הקיים בכל מערכת לינוקס יחידה. עם זאת, בניגוד לרוב הקבצים הווירטואליים האחרים, במקום לקרוא, הוא משמש לכתיבה. כל מה שאתה כותב /dev /null יימחק, יישכח לתוך החלל. הוא ידוע כמכשיר null במערכת UNIX.







מדוע שתרצה להשליך משהו לחלל? בואו לבדוק מהו /dev /null והשימוש בו.



תנאים מוקדמים

לפני שנצלול לעומק השימוש ב- /dev /null, עלינו להבין היטב את stdout ו stderr זרם נתונים. בדוק זאת מדריך מעמיק על stdin , stderr , ו stdout .



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





לדוגמה, הפקודה הבאה תדפיס את המחרוזת בתוך הרכוב הכפול. כאן הפלט מאוחסן ב stdout .

$זרקשלום עולם



הפקודה הבאה תראה לנו את מצב היציאה של הפקודה שהופעלה בעבר.

$זרק $?

מכיוון שהפקודה הקודמת רצה בהצלחה, סטטוס היציאה הוא 0. אחרת, מצב היציאה יהיה שונה. מה קורה כשאתה מנסה להריץ פקודה לא חוקית?

$ adfadsf
$זרק $?

כעת עלינו לדעת על מתאר הקבצים. במערכת האקולוגית של UNIX, מדובר בערכים שלמים שהוקצו לקובץ. שניהם stdout (קובץ תיאור = 1) ו- stderr (קובץ מתאר = 2) יש תיאור קובץ ספציפי. באמצעות מתאר הקבצים (1 ו -2 במצב זה), אנו יכולים להפנות את ה- stdout ו stderr לקבצים אחרים.

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

$זרקשלום עולם>log.txt

הפקודה הבאה תנתב מחדש את stderr לקובץ טקסט.

$asdfadsa2>error.txt

שימוש /dev /null

הפניית פלט ל /dev /null

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

$אחיזה -rשלום/sys/

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

$אחיזה -rשלום/sys/ 2> /dev/ריק

הפלט נראה הרבה יותר טוב, נכון? שום דבר! במקרה זה, ל- grep אין גישה להרבה קבצים ולאלה הנגישים אין את המחרוזת שלום.

בדוגמה הבאה, אנו נצייץ את Google.

$פינגGoogle com

עם זאת, איננו רוצים לראות את כל אותן תוצאות פינג מוצלחות. במקום זאת, אנו רוצים להתמקד רק בשגיאות כאשר פינג לא הצליח להגיע ל- Google. כיצד אנו עושים זאת?

$פינגGoogle com1> /dev/ריק

כאן, התוכן של stdout נזרקים ל- /dev /null, ומשאירים רק את השגיאות.

הפנה את כל הפלט ל /dev /null

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

$אחיזה -rשלום/sys/ > /dev/ריק2> &1

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

$זרק $?

הערך הוא 2 מכיוון שהפקודה יצרה שגיאות רבות.

אם אתה נוטה לשכוח את מתאר הקבצים של stdout ו stderr , הפקודה הבאה תסתדר מצוין. זהו פורמט כללי יותר של הפקודה הקודמת. שניהם stdout ו stderr ינותב אל /dev /null.

$אחיזה -rשלום/sys/ &> /dev/ריק

דוגמאות אחרות

זהו אחד מעניין. זוכרים את הכלי dd? זהו כלי רב עוצמה להמרה והעתקת קבצים. למידע נוסף על dd. באמצעות dd, אנו יכולים לבדוק את מהירות הקריאה ברצף של הדיסק שלך. כמובן שזו לא מדידה מדויקת. עם זאת, לבדיקה מהירה, זה די שימושי.

$dd אם=<קובץ גדול> שֶׁל=/dev/ריקסטָטוּס= התקדמותbs= 1 מיליוןiflag= ישיר

הנה, השתמשתי ב- ISO 18.04.4 ISO כקובץ הגדול.

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

$wget -אוֹ /dev/ריק<קישור_גדול_קובץ>

מחשבות אחרונות

אני מקווה שיש לך הבנה ברורה של מהו קובץ /dev /null זה. זהו מכשיר מיוחד שאם הוא נכתב אליו, זורק אותו ואם הוא נקרא ממנו, קורא null. הפוטנציאל האמיתי של תכונה מעניינת זו הוא בתסריטים מעניינים של bash.

האם אתה מתעניין בסקריפטים bash? לבדוק המדריך למתחילים לתסריט .

תהנה!