מערכת הקבצים של Linux - מה שרצית לדעת ולא העזת לשאול
במדריך זה תקבלו הסבר על התיקיות העיקריות המרכיבות את מערכת הקבצים (file system) של לינוקס שכדאי להכיר.
נתחיל במבט כללי על מערכת הקבצים:
כל תיקייה נקראת directory, ובתוך התיקיות ניתן למצוא תיקיות משנה מה שיוצר היררכיה (עץ) של תיקיות. שמם של התיקיות נגזר ממיקומם בהיררכיה.
כל מערכת הקבצים קיימת בתוך תיקייה אחת מיוחדת ששמה root - תיקיית השורש אליה ננווט על ידי הקלדה בטרמינל של הפקודה cd (change directory) ואחריה קו נטוי /.
$ cd /
תיקיות שנמצאות ישירות מתחת ל- root (top level directories)
בתוך תיקיית השורש קיימות כמה תיקיות top level. דוגמת: home, boot ו-usr. לינוקס משתמש בתיקיות אילה בתהליך האתחול.
כדי להגיע לכל אחת מהתיקיות אנחנו יכולים להשתמש בקו נטוי ואח"כ שם התיקייה.
ננווט לתיקייה /bin:
$ cd /bin
bin הוא קיצור של binaries שאילו קבצים הכתובים בקוד מכונה. מבחינתנו, binaries הם תוכנות ניתנות להרצה. הסיבה שהתיקייה נמצאת ישירות בתוך תיקייה השורש היא שאתחול המחשב boot דורש תוכנות שונות שנמצאות בתיקייה.
נצפה ברשימת הקבצים בתיקייה:
$ ls
הקבצים בתיקייה הם תוכנות שכל אחד שעובד עם לינוקס מכיר היטב כי הוא מריץ אותם על הטרמינל במסגרת העבודה השוטפת. לדוגמה:
- cat - לקריאת קבצים.
- pwd - לאיתור מיקום התיקייה הנוכחית (באיזה תיקייה אני נמצא עכשיו?)
- less - דפדוף בתוך קבצים ארוכים.
- grep - איתור טקסטים בתוך קבצים.
- sh - מוציא לפועל פקודות (מתוך הטרמינל או מקובץ).
התיקייה /sbin דומה ל-bin בגלל שהיא כוללת קבצים הכתובים בשפת מכונה binaries הדרושים לתהליך האתחול. בניגוד ל-bin, כדי להשתמש בפקודות שקיימות בתיקייה נצטרך רמת הרשאה של superuser.
בניגוד למערכת ההפעלה Windows, שבה התוכנות מותקנות בתיקיות Program Files, בלינוקס קבצי התוכנות יושבים בתיקיות /bin או /sbin וקבצי הקונפיגורציה בתיקייה ששמה /etc.
תיקיות נוספות שנמצאות ישירות בתוך תיקיית השורש root הם:
תיקיית /boot - מכילה קבצי kernel - ליבת מערכת ההפעלה - שמתווכת בין החומרה לפעולות שמבצעת המערכת וקבצים נוספים שהכרחיים ל - booting - אתחול המערכת.
תיקיית /dev - מכילה את הקבצים של המכשירים devices כי בלינוקס הכול הוא קובץ. כולל התיקיות והחומרה (דיסק קשיח, מקלדת, מוניטור, מדפסת, וכיו"ב). בהתאם, התיקייה כוללת תיקיות משנה ששמם: disk cpu log ואפילו null שאליו אנחנו מתעלים פלטים שלא מעניינים אותנו. לדוגמה, הודעות שגיאה מינוריות.
תיקיות המשתמשים, כולל המשתמש שלנו, נמצאות בתוך התיקייה /home, ומיד נחזור אליה.
התיקייה /lib מכילה ספריות libraries של הדרייברים הנדרשים לאתחול מערכת ההפעלה.
התיקייה /opt מכילה קבצים של תוכנות נוספות optional שאנחנו מתקינים. לדוגמה, google או zoom.
בתיקיית /proc נמצאים כל התהליכים processes שרצים על מערכת ההפעלה.
התיקייה /tmp מכילה קבצים זמניים temp שיוצרות התוכנות אשר רצות על מערכת ההפעלה, והמערכת מוחקת אותם על בסיס קבוע.
התיקייה /var מכילה דברים שהגודל שלהם משתנה. דוגמת: גיבויים, קבצי לוג וקאש (זיכרון מטמון).
התיקייה /usr מכילה תוכנות נוספות, פקודות, תיעוד וספריות. היא מתפצלת לתת תיקיות. לדוגמה:
- /usr/bin
- /usr/sbin
- /usr/lib
שמם של חלק מהתיקיות זהה לתיקיות top level אבל הם בדרך כלל לא דרושות לאתחול המערכת.
תיקיית הבית שלך
בכל פעם שתפתח את הטרמינל תגלה שאתה נמצא בתיקיית הבית שלך - התיקייה שבה נמצאים הקבצים האישיים שלך.
התיקייה האישית שלך היא מאוד חשובה ועל כן היא זכתה בקיצור דרך. זה לא משנה היכן אתה נמצא במערכת הקבצים, אם תקליד:
$ cd ~
תגיע לתיקיית המשתמש שלך.
בתוך התיקייה הקלק את הפקודה pwd כדי לברר היכן אתה נמצא.
$ pwd
התוצאה במקרה שלי היא:
/home/joe
זה מפני ששם המשתמש שלי הוא joe. אצלך יופיע שם המשתמש שלך.
נשתמש בפקודה ls כדי לראות את רשימת הקבצים בתיקיית הבית:
$ ls
_a.index hello.py
Android logs
AndroidStudioProjects Music
atom_projects Pictures
backups projects
bash_scripts Public
composer.phar python_projects
dead.letter python_scripts
Desktop scripts
docker seashell.py
Documents snap
Downloads Templates
ebook_the_essentials_oo_php tools
examples.desktop Videos
Templates
התיקיות צבועות בכחול.
הפקודה which
הפקודה which של bash מאפשרת לנו למצוא האם פקודה מסויימת קיימת במערכת. היא עושה זאת באמצעות חיפוש בתיקיות מסוימות במערכת הקבצים.
לדוגמה, אנחנו משתמשים בפקודה ping בשביל לברר האם כתובת IP של שרת פעילה.
כדי לברר האם הפקודה ping קיימת במערכת נריץ בטרמינל:
$ which ping
התוצאה אצלי במערכת היא:
/usr/bin/ping
- שימו לב שהפקודה נמצאת בתוך תיקייה ששמה bin שמכילה קבצים בינאריים של פקודות.
המערכת יודעת לחפש את קובץ הפקודה בתוך תיקיות המכילות קבצים בינאריים כיוון שהנתיבים לתיקיות מוגדרים בתוך משתנה המערכת בשם $PATH.
נבדוק אילו תיקיות מוגדרות בתוך משתנה המערכת:
echo $PATH
התוצאה על המחשב שלי:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
- מספר נתיבים מופרדים בנקודתיים.
אולי גם זה יעניין אותך:
ניהול הרשאות, משתמשים וקבוצות בלינוקס
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.