ברוכים הבאים צו נאָך אַ פרייטיק ...
עס איז צייט צו לערנען אַ קליינטשיק טייל פון דער וואָקזאַל. נאָך פיל געדאַנק איך באַשלאָסן צו שאַפֿן אַ פּאָסטן וועגן דעם נאָרמאַל סטרימז; כאָטש עס וועט זיין אויבנאויפיקער, איך טראַכטן עס איז עפּעס אַז אַלעמען זאָל וויסן.
ינדעקס
נאָרמאַל סטרים
נאָרמאַל סטרים עס איז קאַמפּרייזד פון עטלעכע קאָמוניקאַציע טשאַנאַלז צווישן די באַניצער און די וואָקזאַל. די ינפּוט / אָוטפּוט "טשאַנאַלז" אַרויסווייַזן אָדער כאַפּן אינפֿאָרמאַציע ווען אַ באַפֿעל איז עקסאַקיוטאַד.
די 3 איך / אָ קאַנעקשאַנז זענען: סדין נאָרמאַל ינפּוט, סטדאָוט נאָרמאַל רעזולטאַט, סטדערר נאָרמאַל טעות.
סטדין: סטאַנדאַרד אַרייַנשרייַב
נאָרמאַל ינפּוט איז די וועג וואָס מיר כאַפּן אינפֿאָרמאַציע פון אַ באַפֿעל, אָדער דורך פּייפּס, רידערעקשאַן, קלאַוויאַטור, עטק. מיר ידענטיפיצירן עס מיט די טעקע דעסקריפּטאָר 0.
אַ ביישפּיל פון סטדין וואָלט זיין:
סאָרט <ליסטינג
עס נעמט אַלע אינפֿאָרמאַציע אין דער רשימה - אין דעם פאַל די נומערן געשריבן ראַנדאַמלי - און ווען רידערעקטינג די טעקע צו די ls באַפֿעל, עס סאָרץ די נומעריקאַל רשימה אַלפאַבעטיקלי. אין דעם בייַשפּיל, די פלאַגס זענען ימפּליסאַט.
סטדאָוט: סטאַנדאַרד פּראָדוקציע
ווי דער נאָמען פון זיין ימפּלייז, נאָרמאַל רעזולטאַט דיספּלייז די פּראָדוקציע פון אַ באַפֿעל דורך די קאַנסאָול. אויב מיר שרייבן, אַלע די אינפֿאָרמאַציע וואָס עס ווייזט אונדז אויף דעם עקראַן איז דער נאָרמאַל רעזולטאַט. עס איז רעפּריזענטיד דורך דעסקריפּטאָר 1.
איצט איך וועל פּרובירן צו ינסטאַנטירן סטדין און סטדאָוט מיט אַ שריפט געשריבן אין באַש, פשוט ווייַל איך ליבע באַש האַהאַהאַ. 🙂
test.sh
#! / בין / באַש אויב [-ט 0]; דערנאָך ווידערקאָל "איר נוצן סטדאָוט" עליף [-ט 1]; דעמאָלט ווידערקאָל "איר זענט ניצן סטדין" אַנדערש ווידערקאָל "ברוטאַל טעות" פי
איצט אַ סקרעענשאָט וואָס דעמאַנסטרייץ ווי צו נוצן דעם שריפט. ניצן רידערעקטינג אָדער ניצן אַ רער מיט די שריפט פּרובירן -ט צו וויסן אויב נאָר די סטדאָוט שריפט איז עקסאַקיוטאַד, און אויב נישט, דאָס איז דאָך סטדין.
באַש test.sh לס | באַש test.sh באַש test.sh </ עטק / פּאַססווד
געדענקט צו מאָדיפיצירן די באַפֿעל און פיר אַזוי אַז איר לערנען.
סטדערר: סטאַנדאַרד טעות
נאָרמאַל טעות איז די וועג ווי מגילה אַרויסווייַזן ערראָרס אָדער דיאַגנאָסטיקס. עס איז רעפּריזענטיד דורך דעסקריפּטאָר 2.
צו פֿאַרשטיין דעם באַגריף, דאָס איז די סיטואַציע: ווען מיר ווילן צו ראַטעווען אַ באַפֿעל טעות, דער ערשטער זאַך מיר טראַכטן וועגן איז רידערעקט די פּראָדוקציע צו קלאָר טעקסט.
לס> אינפֿאָרמאַציע.טקסט
דאָס קען אַרבעטן, די באַפֿעל אינפֿאָרמאַציע איז סטאָרד אין אַ קלאָר טעקסט טעקע. ווען שפּאָרן דעם טעות, עס איז נישט סטאָרד, אָבער עס איז געוויזן אויף דעם עקראַן און די קלאָר טעקסט טעקע איז ליידיק.
אַנשטאָט אויב מיר נוצן 2> צו אָנווייַזן צו ראַטעווען סטדערר אין דער טעקע:
לס פאָאָ 2> אינפֿאָרמאַציע.טקסט
איצט עס וועט שפּאָרן די טעות אינפֿאָרמאַציע אין די טעקסט טעקע.
רובֿ פון די שאָל לאָזן סטדערר און סטדאָוט צו זיין סטאָרד אין אַ איין באַפֿעל באַפֿעלן מיט &> ווו פאָאָ איז אַ ניט-עגזיסטאַנט וועגווייַזער
ls דאַונלאָודז Foo &> info.txt
דער טעקע כּולל די אינפֿאָרמאַציע פון די טעות ווען עקסאַקיוטיישאַן LS אין Foo און רשימה די דיירעקטעריז אונטער דאָוונלאָאַדס.
און לעסאָף, וואָס איז אַז באַרימט 2> & 1?
פּשוט, רידערעקט סטערר צו סטדאָוט. אַז & אין די מיטל פון> און 1 מיטל עס וועט רידערעקט צו סטדאָוט. אויב עס איז נישט דאָרט, עס וואָלט זיין עפּעס ווי ... "רידערעקט די טעות צו טעקע 1".
און מיט דעם עס איז מעגלעך צו רידערעקט:
- סטדאָוט צו אַ טעקע
- סטדערר צו אַ טעקע
- סטדאָוט צו סטדערר
- סטדערר צו סטדאָוט
- סטדערר און סטדאָוט צו אַ טעקע
- צווישן אנדערע
אַז ס עס פֿאַר הייַנט מענטשן. מיר לייענען און דאַנקען איר פֿאַר סטאָפּפּינג דורך. 😀
6 באַמערקונגען, לאָזן דיין
אינטערעסאנט. דאַנק צו דיין טוטאָריאַלז, איך בין פיל מער פון Bash.
ליב, טשיקאַווע, אָבער איר האָט אַ טעות אין די פאלגענדע שורה:
"און ווען רידערעקטינג די טעקע צו די ls באַפֿעל", עס זאָל זיין "און ווען רידערעקטינג די טעקע צו די סאָרט באַפֿעל".
א גרוס.
עס איז אַ טעות אין די אָנהייב פון די טעקסט. ווען איר אָנווייַזן דעם באַפֿעל «לס», עס זאָל זיין «סאָרט»:
"עס נעמט אַלע אינפֿאָרמאַציע וואָס איז אין דער רשימה - אין דעם פאַל די נומערן געשריבן ראַנדאַמלי - און ווען רידערעקטינג די טעקע צו די ls באַפֿעל (דאָ עס וואָלט זיין סאָרט)"
גרעעטינגס און דאַנקען פֿאַר ייַנטיילונג דיין אַרבעט
דאָס איז גרויס פֿאַר Cron, וווּ איר ווילט אַז די פּראָדוקציע זאָל זיין פלאַשט (/ dev / null), אָבער די ערראָרס זאָל זיין סטאָרד אין טעקעס. ווען איך טאָן דאָס, איך יוזשאַוואַלי נוצן די דאַטע באַפֿעלן צו ספּעציפיצירן פּונקט ווען זיי ניט אַנדערש.
Bash (sh) האט די מכשירים אַזוי דעוועלאָפּעד דורך די יוניקס פילאָסאָפיע "טאָן איין זאַך און טאָן דאָס געזונט"
נו, איך האב נישט געפונען עפּעס
האַה געזונט, עס איז גאַנץ גוט דערקלערט, וואָס איר האָט נישט פֿאַרשטיין?