מה זה / dev / null וכיצד זה יכול לעזור לך?

אם כבר יש לנו כמה מושגים של עץ הספריות GNU / Linux, עלינו לפחות להכיר את / dev / reference, שהוא למעשה המקום בו כל הקבצים הקשורים התקני חומרה.

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

זו תרומה של דניאל דוראנטה, ובכך הפכה לאחת הזוכות בתחרות השבועית שלנו: «שתף את מה שאתה יודע על לינוקס«. מזל טוב דניאל!

לאיזה מכשיר / dev / null מתאים?

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

אבל אם כבר יש לי פקודות כמו rm, למה אני רוצה למחוק משהו חדש?

מכיוון שהדרך בה שני "החורים השחורים" עובדים שונה לחלוטין: כיצד היית עוקף את הפלט הסטנדרטי של שגיאה בפקודה בתוך סקריפט פגז בזמן ריצה? כאן נכנס / dev / null.

בואו נראה את זה עם דוגמא.

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

משתמש @ מחשב נייד: ~ $ מבחן חתול
שלום עולם

אם הקובץ לא היה קיים או נקרא כמבחנים (עם 's' בסוף), היינו מקבלים את השגיאה הבאה במסוף:

משתמש @ מחשב נייד: ~ $ בדיקות חתול
cat: tests: הקובץ או הספריה אינם קיימים

מה נוכל לעשות כדי להימנע מהודעת השגיאה? ובכן, פשוט להפנות את פלט הפקודה, במקרה של שגיאה, ל"פח זבל ", כלומר ל- / dev / null

איך נציין שזה יהיה במקרה של טעות? כאן אתה מזין את ערכי הקלט, הפלט והשגיאה הסטנדרטיים עבור תוכנית: STDIN, STDOUT ו- STDERR (שניתן להחליף אותם 0, 1 ו- 2 בהתאמה). בדרך זו, אם נשים ...

user @ laptop: ~ $ cat tests 2> / dev / null
משתמש @ מחשב נייד: ~ $

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

היזהר מכיוון שהתחביר הוא חיוני: בין התווים 2 ל> לא אמור להיות רווח. אחרת, זה ייתן את הדברים הבאים:

user @ laptop: ~ $ cat tests 2> / dev / null
cat: tests: הקובץ או הספריה אינם קיימים
cat: 2: הקובץ או הספריה אינם קיימים

לעומת זאת, רווח בין> ל- / dev / null לא ישפיע לרעה על התוצאה.

נוכל גם להשתמש בהפניית שגיאות, למשל, כדי ללכוד שגיאות בקובץ יומן באופן הבא:

user @ laptop: ~ $ cat tests 2> err.log

מקרה מעניין נוסף יהיה איסוף התוצאות בקובץ אחר כל עוד לא מתרחשת שגיאה שעבורו היינו:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

לבסוף, ניתן לשים את הביטוי «> / dev / null 2> & 1» בו משולבים הפלט הסטנדרטי ופלט השגיאה, ולהפנות אותם כך שבשום מקרה לא מתקבל מידע פלט.


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

7 תגובות, השאר את שלך

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

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

*

*

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

  1.   גואידו איגנסיו איגנסיו דיג'ו

    אה, אך חסר אחד מהשירותים הנפוצים ביותר שיש / dev / null, שהוא ריקון קבצים: $ cat / dev / null> file.log באופן זה, הקובץ file.log יהיה ריק. הוסף אותו!

    1.    אדוארדו ה דיג'ו

      זה היה בדיוק ההסבר שחיפש.
      אני תומך בהצעה להוסיף אותה =)

      Saludos!

  2.   פול דיג'ו

    שלום, קודם כל המאמר טוב מאוד! בשניה הייתי רוצה לתרום משהו עם הקישור הזה בנושא עבודת cron ב- php מ- Cpanel והברכה השלישית לבלוג!

  3.   פול דיג'ו

    כתבה נחמדה על dev / null, איזה בושה אני חושבת שהערתי בטעות במקום הלא נכון קודם! אני מתנצל

  4.   אנונימי דיג'ו

    תודה תרומה טובה

  5.   ג'רס דיג'ו

    ברכות אני מקבל התקפה אפסית. אני משתמש ב- andrirc ואני מקבל פרטי של הכינוי שלי עם המילה Null. כעבור 2 שניות התוכנית נסגרת קראתי וממה שאני רואה זה יכול להיעשות רק על ידי המעטפת, לא מישהו חיצוני. ניסיתי להתעלם מעצמי / להתעלם -lrpcntikd ושום דבר לא מפתיע אותי הפקודה ממשיכה להגיע. אם יש לך דרך לנסות לחסום את זה אודה לה. לחיים

  6.   סופיה מרטינז דיג'ו

    מה קורה אם בעת ביצוע המשפט הסמל> אינו ממוקם?

    מישהו יכול להדריך אותי בבקשה?