דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. מדריך: שורת הפקודה - תגובות

מדריך: שורת הפקודה - תגובות

מתוזמן נעוץ נעול הועבר תוכנה
64 פוסטים 18 כותבים 3.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לnigun ב נערך לאחרונה על ידי yossiz
    #22

    @nigun אמר במדריך: שורת הפקודה - תגובות:

    מה קורה בתוכנות עם ממשק גרפי?

    אני מניח שאתה מדבר על לינוקס.
    (בווינדוס המושג הזה של stdout ו-stderr לא קיים בצורה מובנית. בשפת C, C++‎ שהמושג קיים הם עושים שכבת תאימות - ב-CRT - ש(בין השאר) מספק את הזרמים האלו לתוכנה, אגב זה קיים בהרבה דברים שהמושגים של unix ושפת C מאוד תואמים אחד את השני, כי אלה שהמציאו את מערכת יוניקס הם אותם שהמציאו את שפת C).
    בלינוקס לכל תוכנה (כולל תוכנות גרפיות) קיימים שלוש file handles שפתוחים מיד בעת הרצת התוכנה.
    אם תהליך האבא לא מגדיר את הקבצים האלו אז הבן יורש את אותם handle-ים של האבא.

    בד"כ תוכנת הטרמינל מריץ את ה-shell כאשר ה-handles פונים לקובץ PTY שמקביל לקלט ופלט של הטרמינל. ואז רואים את ה-prompt של הטרמינל בחלון הטרמינל. אם תריץ תוכנה מתוך shell שרץ בטרמינל תראה את הפלט שלו בטרמינל (אם הוא לא עושה fork כדי להתנתק מהטרמינל)

    אם אתה מריץ תוכנה מתוך תפריט התחלה גרפית בלינוקס, אז הוא יירש את ה-stdout מהאבא, פעם (כאשר הייתי משתמש בלינוקס...) היה קובץ שנקרא משהו כמו xsession_errors (אני לא זוכר בדיוק את השם) שקיבל את ה-stderr של תוכנות שהורצו בתוך סביבה גרפית.
    עריכה: הקובץ נקרא ‎.xsession-errors וה-stdout של ה-Xserver מחובר אליו, וממילא גם של כל הבנים והנכדים וכל המשפחה העניפה... עיין (https://stackoverflow.com/a/17019341) כהיום שעברו ל-wayland ייתכן שדברים השתנו.
    לשירותים, (כמו של systemd) אפשר להגדיר בתצורת השירות לאן יפנה ה-stdout ו-stderr.
    יש מושג של ניתוב הפלט ל-‎/dev/null שזה חור שחור שמדמה קובץ.

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

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    nigunN תגובה 1 תגובה אחרונה
    6
    • yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #23

      @nigun אם אתה באמת רוצה לדעת לאן מנותבים שלוש הזרמים הסטנדרטיים של תהליך בלינוקס, תוכל לבדוק ב-lsof או יותר קל ב-htop (מקש L כאשר אתה עומד על תהליך) את הקבצים הפתוחים של התוכנה. המזהים של הזרמים הסטנדרטיים הם תמיד:

      שם מזהה
      stdin 0
      stdout 1
      stderr 2

      65f458b1-0d0f-44fe-9344-90dcb7700b54-image.png

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      3
      • nigunN מנותק
        nigunN מנותק
        nigun
        השיב לyossiz ב נערך לאחרונה על ידי
        #24

        @yossiz
        כשאני מריץ תוכנה גרפית בטרמינל
        אז הוא פותח לי חלון בצד עם הממשק הגרפי
        ואת הלוגים (כנראה stderr) הוא מדפיס בטרמינל.
        איך הוא יודע שהפלט מיועד לממשק הגרפי?

        מייל: nigun@duck.com

        yossizY תגובה 1 תגובה אחרונה
        0
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לnigun ב נערך לאחרונה על ידי
          #25

          @nigun

          הסברתי את זה, אבל כנראה לא מספיק ברור... (לוקח משאבים להסביר ברור...)

          @yossiz אמר במדריך: שורת הפקודה - תגובות:

          בד"כ תוכנת הטרמינל מריץ את ה-shell כאשר ה-handles פונים לקובץ PTY שמקביל לקלט ופלט של הטרמינל. ואז רואים את ה-prompt של הטרמינל בחלון הטרמינל. אם תריץ תוכנה מתוך shell שרץ בטרמינל תראה את הפלט שלו בטרמינל

          כל טרמינל מייצר קובץ (וירטואלי, משהו שמדמה קובץ). ואז הוא מריץ את ה-shell כאשר הזרמים הסטנדרטיים שלו כולם מנותבים ל"קובץ" הזה. (בתמונה שהעליתי בפוסט הקודם שם הקובץ הוא ‎/dev/ttyS0).
          הטרמינל קורא מתוך הקובץ הזה את הפלט של תוכנות וכותב לתוכה את הקלט שמשתמש מזין לתוך חלון הטרמינל. (אני מפשט קצת, בפועל יש שני קבצים... עיין בכתבה בויקיפידיה או תגגל את הנושא של pty).
          כאשר ה-shell מוליד תהליך בן, תהליך הבן יורש בברירת מחדל את ה-handle-ים לזרמים הסטנדרטיים מהאבא.
          כאשר תוכנה כותב פלט הוא כותב ל-handle עם מזהה 1 או 2 (תלוי אם זה stderr או stdout) וזה מנותב לקובץ שה-handle הזה מייצג. שבברירת מחדל יהיה הקובץ שמננו הטרמינל קורא את הפלט של תוכנות.

          מובן, או שעדיין לא ברור?

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          nigunN 2 תגובות תגובה אחרונה
          4
          • nigunN מנותק
            nigunN מנותק
            nigun
            השיב לyossiz ב נערך לאחרונה על ידי nigun
            #26

            @yossiz
            תודה על הסבלנות
            בעיקר היה חסר לי הקטע של "ברירת מחדל"
            דהיינו שזה מנותב לhandle של האב אא"כ צוין אחרת (ע"י התוכנה כנראה).

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

            עריכה: האם היעד יכול להיות ישירות למסך או שחייב לעבור דרך מקום אחר?
            כי אם יש לי כמה טרמינאלים פתוחים (בw3) ואני כותב באחד מהם echo hello >/dev/pts/6
            הפלט מופיע במסך המבוקש, אבל זה לא כותב ישירות למסך אלא יש כאן כמה שגרירים בדרך.

            נראה לי שהבנתי את הכיוון, תודה רבה.
            נ.ב. אני רואה שיש לי עוד הרבה לקרוא למשל מה זה בעצם ה$DISPLAY ומה ההבדל בין סוגי הפלט (כמו שרואים בתמונה הזאת )
            צילום מסך מ־2020-08-11 18-14-00.png

            מייל: nigun@duck.com

            yossizY תגובה 1 תגובה אחרונה
            1
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לnigun ב נערך לאחרונה על ידי
              #27

              @nigun אמר במדריך: שורת הפקודה - תגובות:

              אני רואה שיש לי עוד הרבה לקרוא למשל מה זה בעצם ה$DISPLAY ומה ההבדל בין סוגי הפלט (כמו שרואים בתמונה הזאת )

              אתה מערב עכשיו נושאים אחרים. זה כבר לא קשור לנושא המקורי. ‎$DISPLAY ל-Xserver. בתמונה רואים כל הקבצים הפתוחים. יש כל מיני קבצים במערכת לינוקס שרובם לא מקבילים לקבצים אמיתיים. כל חיבור רשת או תקשורת בין תהליכי מופיע כקובץ.

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              1
              • nigunN מנותק
                nigunN מנותק
                nigun
                השיב לyossiz ב נערך לאחרונה על ידי nigun
                #28

                @yossiz
                שאלה נוספת (בודק האם הבנתי)
                אם אני מבין נכון כשכותבים בתוכנה כל שהיא print
                מה שקורה בעצם זה העתקת טקסט (בעצם מערך של ביטים) מהזיכרון לstdout.
                (כמו כאן)

                מייל: nigun@duck.com

                yossizY תגובה 1 תגובה אחרונה
                0
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לnigun ב נערך לאחרונה על ידי
                  #29

                  @nigun נכון

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  nigunN תגובה 1 תגובה אחרונה
                  1
                  • nigunN מנותק
                    nigunN מנותק
                    nigun
                    השיב לyossiz ב נערך לאחרונה על ידי nigun
                    #30

                    @yossiz
                    בדיוק אתמול ניסתי להבין איך בונים טרמינל בדפדפן (כמו בcode-server וכדו')
                    איכשהו נפלתי על DISPLAY והסתבכתי עם זה כהוגן.
                    עכשיו אני מבין שזה פשוט עוד PTY שמנתב את הhandles לHTTP
                    וככה זה נראה בקוד בסיסי (כאן זה יוצר עוד טרמינל "שקוף", ואם בודקים עם tty רואים שזה קורא מקובץ PTY אחר, לכאורה כל מה שצריך לשנות זה את הניתוב לWEB ואז אפשר לנהל את השרת מהדפדפן)

                    מייל: nigun@duck.com

                    yossizY תגובה 1 תגובה אחרונה
                    0
                    • yossizY מנותק
                      yossizY מנותק
                      yossiz
                      השיב לnigun ב נערך לאחרונה על ידי yossiz
                      #31

                      @nigun אמר במדריך: שורת הפקודה - תגובות:

                      איכשהו נפלתי על DISPLAY והסתבכתי עם זה כהוגן.
                      עכשיו אני מבין שזה פשוט עוד PTY שמנתב את הhandles לHTTP

                      לגבי DISPLAY אתה טועה, זה כלל לא קשור לסיפור. זה משתנה שאומר לתוכנות גרפיות עם איזה xserver לתקשר.

                      לכאורה כל מה שצריך לשנות זה את הניתוב לWEB ואז אפשר לנהל את השרת מהדפדפן

                      בזה נראה לי שקיבלת תמונה נכונה.

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      nigunN תגובה 1 תגובה אחרונה
                      1
                      • nigunN מנותק
                        nigunN מנותק
                        nigun
                        השיב לyossiz ב נערך לאחרונה על ידי
                        #32

                        @yossiz
                        כשעושים שיתוף מסך מעל WEBRTC או כשמפעילים תוכנת שליטה מרחוק
                        זה בעצם מאזין לPTY או שזה כבר סיפור אחר?

                        מייל: nigun@duck.com

                        yossizY תגובה 1 תגובה אחרונה
                        0
                        • yossizY מנותק
                          yossizY מנותק
                          yossiz
                          השיב לnigun ב נערך לאחרונה על ידי
                          #33

                          @nigun זה כבר סיפור אחר...

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                          nigunN תגובה 1 תגובה אחרונה
                          0
                          • nigunN מנותק
                            nigunN מנותק
                            nigun
                            השיב לyossiz ב נערך לאחרונה על ידי
                            #34

                            @yossiz
                            בגלל שזה גרפי?

                            מייל: nigun@duck.com

                            תגובה 1 תגובה אחרונה
                            0
                            • MusiCodeM מנותק
                              MusiCodeM מנותק
                              MusiCode
                              כתב ב נערך לאחרונה על ידי
                              #35

                              תודה על המדריכים!
                              אולי תפתח בלוג מסודר עם מדריכים לפי נושאים?

                              תגובה 1 תגובה אחרונה
                              4
                              • WWWW מנותק
                                WWWW מנותק
                                WWW
                                השיב לyossiz ב נערך לאחרונה על ידי
                                #36

                                @yossiz אמר במדריך: שורת הפקודה - תגובות:

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

                                תודה רבה!
                                עכשיו עשית לי סדר בראש.

                                WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                                תגובה 1 תגובה אחרונה
                                4
                                • OdedDvirO מנותק
                                  OdedDvirO מנותק
                                  OdedDvir
                                  כתב ב נערך לאחרונה על ידי
                                  #37

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

                                  שאלה קטנה:
                                  אני יודע שבקוד (שפת C) ניגשים לקובץ על ידי handle. האם יש שימושים לגישה הישירה על ידי ה-handle של הקובץ, גם מתוך שורת הפקודה?

                                  yossizY תגובה 1 תגובה אחרונה
                                  6
                                  • yossizY מנותק
                                    yossizY מנותק
                                    yossiz
                                    השיב לOdedDvir ב נערך לאחרונה על ידי yossiz
                                    #38

                                    @odeddvir אמר במדריך: שורת הפקודה - תגובות:

                                    איזה מדריך מדהים (שניהם, הפוסט והכותב)

                                    תודה 🙂 מי כמוך יודע כמה כח זה דורש לכתוב מדריך (או שלך זה קל? 🤔) וכמה שווה משוב חיובי.
                                    נראה לי שבפוסט הזה קצת נסחפתי וכתבתי דברים שכיף עבורי אבל פחות שימושיים לרוב האנשים...

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

                                    אתה לא רחוק מהאמת...
                                    צריך להיות קצת משוגע לדבר ואני לא ממליץ לאף אחד לחקות אותי בזה...

                                    האם יש שימושים לגישה הישירה על ידי ה-handle של הקובץ, גם מתוך שורת הפקודה?

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

                                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                    OdedDvirO nigunN 2 תגובות תגובה אחרונה
                                    9
                                    • OdedDvirO מנותק
                                      OdedDvirO מנותק
                                      OdedDvir
                                      השיב לyossiz ב נערך לאחרונה על ידי
                                      #39

                                      @yossiz אמר במדריך: שורת הפקודה - תגובות:

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

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

                                      תגובה 1 תגובה אחרונה
                                      7
                                      • nigunN מנותק
                                        nigunN מנותק
                                        nigun
                                        השיב לyossiz ב נערך לאחרונה על ידי
                                        #40

                                        @yossiz אמר במדריך: שורת הפקודה:

                                        בונוס: תלמדו את הייעוד של פקודת help ותסבירו למה היא חייבת להיות פקודה מובנית/פנימית ולא פקודה חיצונית

                                        בגלל echo help?

                                        מייל: nigun@duck.com

                                        yossizY תגובה 1 תגובה אחרונה
                                        0
                                        • yossizY מנותק
                                          yossizY מנותק
                                          yossiz
                                          השיב לnigun ב נערך לאחרונה על ידי yossiz
                                          #41

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

                                          @nigun אמר במדריך: שורת הפקודה - תגובות:

                                          בגלל echo help?

                                          לא הבנתי מה הכוונה?
                                          לענ"ד help חייבת להיות פקודה פנימית כי כך היא נותנת עזרה על פקודות פנימיות דוקא. מכיון שהיא פנימית היא יודעת על כל הפקודות הפנימיות.

                                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                          nigunN תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום