אם כבר יש לנו כמה מושגים של עץ הספריות 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» בו משולבים הפלט הסטנדרטי ופלט השגיאה, ולהפנות אותם כך שבשום מקרה לא מתקבל מידע פלט.
אה, אך חסר אחד מהשירותים הנפוצים ביותר שיש / dev / null, שהוא ריקון קבצים: $ cat / dev / null> file.log באופן זה, הקובץ file.log יהיה ריק. הוסף אותו!
זה היה בדיוק ההסבר שחיפש.
אני תומך בהצעה להוסיף אותה =)
Saludos!
שלום, קודם כל המאמר טוב מאוד! בשניה הייתי רוצה לתרום משהו עם הקישור הזה בנושא עבודת cron ב- php מ- Cpanel והברכה השלישית לבלוג!
כתבה נחמדה על dev / null, איזה בושה אני חושבת שהערתי בטעות במקום הלא נכון קודם! אני מתנצל
תודה תרומה טובה
ברכות אני מקבל התקפה אפסית. אני משתמש ב- andrirc ואני מקבל פרטי של הכינוי שלי עם המילה Null. כעבור 2 שניות התוכנית נסגרת קראתי וממה שאני רואה זה יכול להיעשות רק על ידי המעטפת, לא מישהו חיצוני. ניסיתי להתעלם מעצמי / להתעלם -lrpcntikd ושום דבר לא מפתיע אותי הפקודה ממשיכה להגיע. אם יש לך דרך לנסות לחסום את זה אודה לה. לחיים
מה קורה אם בעת ביצוע המשפט הסמל> אינו ממוקם?
מישהו יכול להדריך אותי בבקשה?
בוקר טוב, התקנתי את Debian netinst ב-ACER Extensa 5620Z – 32 ביט. לאחר סיום ההתקנה מ-USB והסרת ה-pendrive כך שהוא מאתחל מהדיסק הקשיח (אין להתקין מחדש מהעט) אלא ברגע האתחול המערכת היא שואלת אותי:
כניסה של דביאן: xxxxxxxx (בסדר)
סיסמה: xxxxxxxx (בסדר)
nil@debian:~$ ???? מה זה? מה אני צריך לשים שם?
ללא פקודה זו איני יכול להמשיך באתחול המערכת.
אתה יכול לעזור לי? אני לא יודע איך אני צריך להמשיך.
תודה רבה. בכבוד רב.