הקדמה
תעודה: Linux Essentials
גרסה: 1.6
נושא: 2 – מציאת דרכך במערכת לינוקס
מטרה: 2.3 – שימוש בתיקיות ורשימת קבצים
שיעור: 1 מתוך 2
קבצים ותיקיות
מערכת הקבצים של לינוקס דומה למערכות קבצים של מערכות הפעלה אחרות בכך שהיא מכילה קבצים ותיקיות. קבצים מכילים נתונים כמו טקסט קריא לבני אדם, תוכניות הפעלה, או נתונים בינאריים המשמשים את המחשב. תיקיות משמשות ליצירת ארגון בתוך מערכת הקבצים. תיקיות יכולות להכיל קבצים ותיקיות נוספות.
$ tree
Documents
├── Mission-Statement.txt
└── Reports
└── report2018.txt
1 directory, 2 files
בדוגמה זו, Documents היא תיקיה המכילה קובץ אחד (Mission-Statement.txt) ותיקיית משנה אחת (Reports). תיקיית Reports מכילה בתורה קובץ אחד בשם report2018.txt. ניתן לומר שתיקיית Documents היא התיקייה הראשית של תיקיית Reports.
טיפ:
אם הפקודה tree אינה זמינה במערכת שלך, התקן אותה באמצעות מנהל החבילות של הפצת הלינוקס שלך. עיין בשיעור על ניהול חבילות כדי ללמוד כיצד לעשות זאת.
שמות קבצים ותיקיות
שמות קבצים ותיקיות בלינוקס יכולים להכיל אותיות קטנות וגדולות, מספרים, רווחים ותווים מיוחדים. עם זאת, מכיוון שלתווים מיוחדים רבים יש משמעות מיוחדת ב-shell של לינוקס, כדאי להימנע משימוש ברווחים או תווים מיוחדים כאשר נותנים שמות לקבצים או לתיקיות. לדוגמה, רווחים דורשים תו התחמקות \ כדי להזינם בצורה נכונה:
$ cd Mission\ Statements
בנוסף, התייחס לשם הקובץ report2018.txt. שמות קבצים יכולים להכיל סיומת שמגיעה לאחר הנקודה (.). שלא כמו ב-Windows, לסיומת אין משמעות מיוחדת בלינוקס; היא שם להבנת האדם. בדוגמה שלנו, .txt מסמן לנו שזהו קובץ טקסט רגיל, למרות שהוא יכול להכיל מבחינה טכנית כל סוג של נתונים.
ניווט במערכת הקבצים
זיהוי מיקום נוכחי:
מכיוון ש-shell של לינוקס כמו Bash מבוססים על טקסט, חשוב לזכור את המיקום הנוכחי שלך בעת ניווט במערכת הקבצים. שורת הפקודה מספקת את המידע הזה:
user@hostname ~/Documents/Reports $
שימו לב שמידע כמו שם המשתמש ו- hostname יכוסה בחלקים הבאים. משורת הפקודה, אנחנו יודעים שהמיקום הנוכחי שלנו הוא בתיקיית Reports. בצורה דומה, הפקודה pwd תדפיס את ספריית העבודה הנוכחית:
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
הקשר בין תיקיות מיוצג באמצעות קו נטוי קדימה (/). אנחנו יודעים ש-Reports היא תיקיית משנה של Documents, שהיא תיקיית משנה של user, שנמצאת בתוך תיקיה שנקראת home. נראה ש-home אין תיקיית אם, אך זה לא נכון כלל. ההורה של home נקרא root, ומיוצג על ידי הקו הנטוי הראשון (/). נדון בספריית root בחלקים הבאים.
שימו לב שהפלט של הפקודה pwd שונה מעט מנתיב הנתון בשורת הפקודה. במקום /home/user, שורת הפקודה מכילה את הסמל (~). הסמל הזה הוא תו מיוחד שמייצג את ספריית הבית של המשתמש. נעסוק בזה בהרחבה בשיעור הבא.
רשימת תוכן התיקייה
תוכן התיקייה הנוכחית נרשם באמצעות פקודת ls:
user@hostname ~/Documents/Reports $ ls
report2018.txt
שימו לב ש-ls לא מספק מידע על ספריית ההורה. בנוסף, כברירת מחדל ls לא מציג מידע על תוכן תיקיות המשנה. ls יכול “לראות” רק את מה שנמצא בתיקייה הנוכחית.
שינוי ספריה נוכחית
הניווט בלינוקס נעשה בעיקר באמצעות הפקודה cd. פקודה זו משנה את הספרייה הנוכחית. באמצעות הפקודה pwd שהוצגה קודם, אנו יודעים שהספרייה הנוכחית שלנו היא /home/user/Documents/Reports. ניתן לשנות את הספרייה הנוכחית על ידי הזנת נתיב חדש:
user@hostname ~ $ cd /home/user/Documents
user@hostname ~/Documents $ pwd
/home/user/Documents
user@hostname ~/Documents $ ls
Mission-Statement.txt Reports
מהמיקום החדש שלנו, אנו יכולים “לראות” את Mission-Statement.txt ואת ספריית המשנה שלנו Reports, אך לא את התוכן של ספריית המשנה. אנו יכולים לנווט בחזרה לתוך Reports כך:
user@hostname ~/Documents $ cd Reports
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
user@hostname ~/Documents/Reports $ ls
report2018.txt
כעת חזרנו למקום שבו התחלנו.
נתיבים מוחלטים ויחסיים
הפקודה pwd תמיד מציגה נתיב מוחלט. נתיב מוחלט מכיל כל שלב בדרך מהקצה העליון של מערכת הקבצים (/) עד לתיקייה הסופית (Reports). נתיבים מוחלטים תמיד מתחילים בקו נטוי קדימה (/).
/
└── home
└── user
└── Documents
└── Reports
הנתיב המוחלט מכיל את כל המידע הדרוש כדי להגיע ל-Reports מכל מקום במערכת הקבצים. החיסרון הוא שזה עלול להיות מייגע להקלדה.
הדוגמה השנייה (cd Reports) הייתה הרבה יותר קלה להקלדה. זהו דוגמה לנתיב יחסי. נתיבים יחסיים קצרים יותר אך יש להם משמעות רק ביחס למיקום הנוכחי שלך. שקול את ההשוואה הבאה: אני מבקר אצלך בבית. אתה אומר לי שהחבר שלך גר ליד. אני אבין את המיקום מכיוון שהוא יחסי למיקומי הנוכחי. אבל אם תאמר לי את זה בטלפון, אני לא אוכל למצוא את בית החבר שלך. תצטרך לתת לי את הכתובת המלאה.
נתיבים יחסיים מיוחדים
ה-shell של לינוקס מספק לנו דרכים לקצר את הנתיבים כאשר אנו מנווטים. כדי לחשוף את הנתיבים המיוחדים הראשונים, נשתמש בפקודת ls עם הדגל -a. דגל זה משנה את פקודת ls כך שכל הקבצים והתיקיות יופיעו, כולל קבצים ותיקיות מוסתרים:
user@hostname ~/Documents/Reports $ ls -a
.
..
report2018.txt
הערה: תוכל לעיין בעמוד המדריך (man page) עבור ls כדי להבין מה עושה הדגל -a.
פקודה זו חשפה שתי תוצאות נוספות: אלו הם נתיבים מיוחדים. הם אינם מייצגים קבצים או תיקיות חדשים, אלא מייצגים תיקיות שכבר מוכרות לך:
- . מציין את המיקום הנוכחי (במקרה זה, Reports).
- .. מציין את תיקיית ההורה (במקרה זה, Documents).
בדרך כלל אין צורך להשתמש בנתיב היחסי המיוחד עבור המיקום הנוכחי. קל יותר ומובן יותר להקליד report2018.txt מאשר ./report2018.txt. אבל לשימוש ב-. יש יתרונות שתלמד בהמשך. כרגע, נתמקד בנתיב היחסי עבור תיקיית ההורה:
user@hostname ~/Documents/Reports $ cd ..
user@hostname ~/Documents $ pwd
/home/user/Documents
הדוגמה של cd הופכת להיות הרבה יותר קלה כאשר משתמשים ב-.. במקום בנתיב המוחלט. בנוסף, אנו יכולים לשלב את הדפוס הזה כדי לנווט למעלה בעץ הקבצים במהירות רבה.
user@hostname ~/Documents $ cd ../..
$ pwd
/home
תרגילים מונחים
- עבור כל אחד מהנתיבים הבאים, ציין האם הוא נתיב מוחלט או יחסי:
/home/user/Downloads../Reports/vardocs/
- התבונן במבנה הקבצים הבא. שים לב: ספריות מסתיימות בקו נטוי (/) כאשר הפקודה
treeמופעלת עם האפשרות-F. תזדקק להרשאות מנהל מערכת כדי להפעיל את פקודתtreeעל הספרייה root (/). הבא הוא פלט דוגמה ואינו מעיד על מבנה ספרייה מלא. השתמש בו כדי לענות על השאלות הבאות:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 filesמשתמש הזין את הפקודות הבאות:
$ cd /etc/udev $ ls -aמה יהיה הפלט של הפקודה
ls -a? - הזן את הפקודה הקצרה ביותר עבור כל אחת מהבאות:
- המיקום הנוכחי שלך הוא root (/). הזן את הפקודה כדי לנווט לתיקיית
lost+foundבתיקייתhome(דוגמה):$ cd home/lost+found - המיקום הנוכחי שלך הוא root (/). הזן את הפקודה כדי לנווט לתיקייה בשם
/etc/network/. - המיקום הנוכחי שלך הוא
/home/user/Documents/. נווט לתיקייה בשם/etc/. - המיקום הנוכחי שלך הוא
/etc/systemd/system/. נווט לתיקייה בשם/home/user/.
- המיקום הנוכחי שלך הוא root (/). הזן את הפקודה כדי לנווט לתיקיית
- השתמש בפקודות הבאות:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwdמהו הפלט של הפקודה
pwdהאחרונה?
תרגילי חקירה
- נניח שמשתמש הזין את הפקודות הבאות:
$ mkdir "this is a test" $ ls this is a testאיזו פקודת
cdתאפשר לך להיכנס לתיקייה זו? - נסה זאת שוב, אך לאחר הקלדת
cd this, לחץ על מקש ה-TAB. מה מוצג כעת בשורת הפקודה? - נסה ליצור ספרייה ששמה מכיל תו
\. הצג את שם הספרייה באמצעותlsומחק את הספרייה.
סיכום
בשיעור זה למדת:
- יסודות מערכת הקבצים של לינוקס
- ההבדל בין תיקיות אב לתיקיות משנה
- ההבדל בין נתיבים מוחלטים לנתיבים יחסיים
- הנתיבים היחסיים המיוחדים
.ו-.. - ניווט במערכת הקבצים באמצעות
cd - הצגת המיקום הנוכחי שלך באמצעות
pwd - רשימת כל הקבצים והתיקיות באמצעות
ls -a
הפקודות הבאות נדונו בשיעור זה:
cd– שינוי הספרייה הנוכחית.pwd– הצגת הנתיב של הספרייה הנוכחית.ls– הצגת תוכן תיקייה והצגת מאפייני קבצים.mkdir– יצירת ספרייה חדשה.tree– הצגת רשימה היררכית של עץ ספריות.
תשובות לתרגילים מונחים
- עבור כל אחד מהנתיבים הבאים, ציין האם הוא נתיב מוחלט או יחסי:
/home/user/Downloadsמוחלט../Reportsיחסי/varמוחלטdocsיחסי/מוחלט
- התבונן במבנה הקבצים הבא. שים לב: ספריות מסתיימות בקו נטוי (/) כאשר הפקודה
treeמופעלת עם האפשרות-F. תזדקק להרשאות מנהל מערכת כדי להפעיל את פקודתtreeעל ספריית/. השתמש במבנה זה כדי לענות על השאלות הבאות:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 4 filesמשתמש הזין את הפקודות הבאות:
$ cd /etc/udev $ ls -aמה יהיה הפלט של הפקודה
ls -a?תשובה: . .. rules.d udev.conf
- הזן את הפקודה הקצרה ביותר עבור כל אחת מהבאות:
- המיקום הנוכחי שלך הוא
/. הזן את הפקודה כדי לנווט ל-lost+foundבתיקייתhome(דוגמה):$ cd home/lost+found - המיקום הנוכחי שלך הוא
/. הזן את הפקודה כדי לנווט לתיקייתnetwork:$ cd etc/network - המיקום הנוכחי שלך הוא
Documents. נווט לתיקייתetc:$ cd /etc - המיקום הנוכחי שלך הוא
system. נווט לתיקייתuser:$ cd /home/user
- המיקום הנוכחי שלך הוא
- שקול את הפקודות הבאות:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwdמהו הפלט של הפקודה
pwdהאחרונה?תשובה: /etc/systemd
תשובות לתרגילי חקירה
- נניח שמשתמש הזין את הפקודות הבאות:
$ mkdir "this is a test" $ ls this is a testאיזו פקודת
cdתאפשר לך להיכנס לתיקייה זו?תשובה:
$ cd this\ is\ a\ test - נסה זאת שוב, אך לאחר הקלדת
cd this, לחץ על מקש ה-TAB. מה מוצג כעת בשורת הפקודה? - נסה ליצור ספרייה ששמה מכיל תו
\. הצג את שם הספרייה באמצעותlsומחק את הספרייה.תשובה: אתה יכול להתחמק מהתו
\באמצעות תו\נוסף (\\) או להשתמש במרכאות יחידות או כפולות סביב שם הספרייה כולו:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'
