לדלג לתוכן

1.2 - ניווט בקבצים - הרצאה

מערכת קבצים

השיעור נלמד כיצד להתעסק עם קבצים ולנווט בין תיקיות.
- הפקודה pwd - מדפיסה את התקייה הנוכחית שהShell שלי נמצא בה
צילום מסך: הרצת pwd בטרמינל, מחזירה /home/ubuntu
כלומר, כרגע אנחנו בתקייה ubuntu שנמצאת בתקייה home.
- הפקודה cd - משנה תקייה - משנה את התקייה הנוכחית

pwd
cd /home
pwd

צילום מסך: cd /home ואז pwd, הפרומפט והנתיב עוברים ל-/home
ניתן לראות שעכשיו אנחנו בתקייה home.

pwd
cd /home/ubuntu/Downloads
pwd

צילום מסך: cd /home/ubuntu/Downloads/ ואז pwd, הנתיב עובר ל-/home/ubuntu/Downloads
הנתיב ".." מחזיר נתיב של תקייה אחורה. כלומר אם נעשה cd .. נחזור תקייה אחורה.
cd ..
pwd

צילום מסך: cd .. חוזר תיקייה אחורה מ-Downloads ל-/home/ubuntu
הנתיב "." מחזיר לנו את התקייה הנוכחית. כלומר אם נעשה cd ./some_folder הנתיב שיתקבל הוא הנתיב שאנחנו נמצאים בו כרגע + התקייה some_folder

cd ./Downloads
pwd

צילום מסך: cd ./Downloads/ עם נקודה יחידה, ואז pwd מציג /home/ubuntu/Downloads
בתחתית עץ התיקיות יש את תקיית השורש, תקיית "root"- אשר נתיב שלה הוא "/"
cd /
pwd

צילום מסך: cd / חוזר לתיקיית השורש, pwd מחזירה /

כדי לחזור לתקייה הקודמת שהיינו בה, נכתוב את הפקודה cd -

cd -
pwd

צילום מסך: cd - חוזר לתיקייה הקודמת (Downloads), מדפיס את הנתיב ואז pwd מאשר
- בדרך כלל למשתמשים בלינוקס יש תקיית בית, השם של המשתמש שלי הוא "ubuntu". כל תקיות הבית נמצאות בhome/, כלומר תקיית הבית של המשתמש שלי תהיה בhome/ubuntu/. כדי להיכנס לתקיית הבית של המשתמש שאילו אני מחובר (המשתמש ubuntu במקרה הזה) אפשר לעשות "cd ~"
צילום מסך: cd ~ מהתיקייה Downloads חוזר ישירות לתיקיית הבית /home/ubuntu
בדומה ל ".." ו- "." אפשר להשתמש גם ב "~" כדי לגשת לתקייה מסויימת:
צילום מסך: cd ~/Downloads/ מהתיקייה השורש קופץ ישירות לתיקיית Downloads בבית המשתמש
ובדומה לכך גם:
צילום מסך: cd ../Desktop/ עובר מ-Downloads לתיקיית Desktop (אח באותה רמה)
- הפקודה ls - מציגה את כל הקבצים בתקייה הנוכחית, ניתן לראות למשל את כל התיקיות והקבצים בתיקיית היוזר שלנו כך:
צילום מסך: ls בתיקיית הבית מציג תיקיות Desktop, Documents, Downloads, Music, Pictures, Public, snap, Templates, Videos
לא חייב להיות בתקייה מסויימת כדי לראות את הקבצים שלה, אפשר גם לכתוב את הפקודה ls ולהביא לה נתיב מסויים:
צילום מסך: ls / מציג את תוכן תיקיית השורש - bin, boot, dev, home, lib64, mnt, proc, root, sbin, tmp, usr, var ועוד
צילום מסך: ls /home מציג משתמש יחיד - ubuntu
צילום מסך: ls /home/ubuntu/Downloads/ ללא פלט - התיקייה ריקה
ניתן לראות שאין לי קבצים בתקיית הDownloads
כמובן שניתן להשתמש ב".", "..", "~" גם עם ls כמו כל פקודה.
צילום מסך: ls ./Downloads/ ללא פלט - התיקייה ריקה

  • הפקודה echo "hello" > my_file - תיצור קובץ חדש בשם my_file עם תוכן: "hello"
    צילום מסך: echo "hello" > my_file יוצר קובץ חדש, ls מציג אותו ברשימת הקבצים

הפקודה - cat - מחבר (concatenate) - מדפיסה את תוכן הקבצים למסך
צילום מסך: cat my_file מדפיס את תוכן הקובץ - hello
צילום מסך: echo "world" > my_file2 יוצר קובץ שני, cat my_file2 מציג world
ניתן להשתמש בcat גם כדי להדפיס כמה קבצים ביחד:
צילום מסך: cat my_file my_file2 מדפיס את שני הקבצים ברצף - hello ואז world
- נפרק את הפקודה echo "hello" > my_file - החלק הראשון הוא echo "hello" שאחראי להדפיס למסך "hello", לאחר מכן יש > my_file שאחראי להעביר את כל הפלט של הפקודה הקודמת לתוך הקובץ my_file.
- אפשר להשתמש באותו עקרון עם הפקודה cat, שמדפיסה תוכן של קובץ למסך.
צילום מסך: cat my_file my_file2 > ./the_final_file משרשר את שני הקבצים לקובץ חדש, cat the_final_file מציג hello ו-world
- אם נרצה להוסיף תוכן חדש אחרי תוכן קיים בקובץ (כלומר append) נשתמש באופרטור "<<":
צילום מסך: echo "helloooooooo" >> ./my_file מוסיף שורה לקובץ הקיים, cat my_file מציג hello ואז helloooooooo
- אם נרצה להשתמש באותיות מיוחדות, כמו \n כדי לרדת שורה נשתמש בדגל "-e" עם echo:
צילום מסך: echo -e עם 
 יוצר קובץ my_file עם כל מילה בשורה נפרדת - hello my name is amit pinchasi and i record courses

  • הפקודה head -n 2 - מציג את שתי השורות הראשונות של הקובץ - מציג את עשר השורות הראשונות אם לא מציינים הדגל -n.
    צילום מסך: head -n 2 ./my_file מציג רק שתי השורות הראשונות של הקובץ - hello ו-my

  • הפקודה tail -n 2 - מציג את שתי השורות האחרונות של הקובץ - מציג את עשר השורות האחרונות אם לא מציינים דגל
    צילום מסך: tail -n 2 ./my_file מציג רק שתי השורות האחרונות של הקובץ - record ו-courses
    נוריד את התמלול של "אליס בארץ הפלאות" בפקודה הבאה:
    צילום מסך: wget מוריד את הקובץ alice_in_the_wonderland.txt מאתר gutenberg.org עם פס התקדמות שמראה 100% והורדה מוצלחת
    נעשה head ו- tail לקובץ הארוך שקיבלנו.
    צילום מסך: head alice_in_the_wonderland.txt מציג את תחילת הקובץ, tail מציג את סופו

  • הפקודה less - מציג קבצים ארוכים בטרמינל

    less ./alice_in_the_wondeland.txt
    

    צילום מסך: less מציג את תוכן קובץ alice_in_the_wonderland.txt עם אפשרות גלילה - כותרת, מחבר Lewis Carroll ותחילת הספר
    עם החצים נוכל לרדת ולעלות, וכשנרצה לצאת נלחץ על q. אם נלחץ על / נוכל ממש לחפש תוכן.
    צילום מסך: חיפוש עם / בתוך less מסמן בצהוב את כל המופעים של המילה cat בטקסט הספר
    הנה התוצאה שקיבלתי שלחצתי על / בשביל חיפוש וכתבתי "cat" ואנטר.

  • הפקודה rm - מוחקת קובץ

    rm ./my_file
    ls 
    

    צילום מסך: ls מציג את הקובץ alice_in_the_wonderland.txt ברשימת הקבצים, rm מוחק אותו, ls נוסף מראה שהוא נעלם

  • הפקודה mkdir - יוצרת תקייה חדשה

  • הפקודה rmdir - מוחקת תקייה
    צילום מסך: mkdir hello יוצר תיקייה, rmdir hello/ מוחק אותה, ואז cd hello נכשל עם השגיאה No such file or directory

  • הדגל ls -l - מציג את כל הקבצים אבל עם יותר פרטים
    צילום מסך: ls -l מציג רשימה מפורטת של קבצים ותיקיות עם הרשאות, בעלים, גודל ותאריך שינוי אחרון

  • הפקודה touch - משנה את התאריך של קובץ מסויים שמופיע בls -l, או יוצרת קובץ אם הקובץ לא קיים:
    צילום מסך: ls -l my_file מציג תאריך ישן, touch my_file מעדכן את זמן השינוי, ls -l מציג תאריך ושעה מעודכנים
    ניתן לראות שהזמן שהשתנה.
    צילום מסך: touch my_file3 יוצר קובץ חדש וריק, ls -l מציג אותו ברשימה עם גודל 0 ותאריך יצירה נוכחי

  • הפקודה mv - מעבירה קובץ ממיקום אחד למיקום אחר
    ניצור קובץ חדש:
    צילום מסך: ls -l מציג את התיקייה ללא my_file, ואז echo "hello" > ./my_file יוצר אותו מחדש
    נעביר את הקובץ מ ./my_file ל- ./my_file2
    צילום מסך: mv ./my_file ./my_file2 משנה שם קובץ, ls -l מציג ש-my_file נעלם ובמקומו my_file2
    ניתו לחשוב על mv כמו שינוי שם של קובץ.

  • הפקודה cp - מעתיקה קובץ ממיקום אחד למיקום אחר
    צילום מסך: cp ./my_file2 ./my_file3 מעתיק קובץ, ls -l מציג ששני הקבצים my_file2 ו-my_file3 קיימים במקביל

  • הפקודה nano - עורך טקסט

    nano ./my_file
    

    יפתח לכם עורך טקסט:
    צילום מסך: עורך הטקסט nano נפתח על קובץ my_file חדש וריק, עם שורת התפריט התחתונה של פקודות nano
    צילום מסך: nano עם תוכן טקסט לדוגמה שהוקלד בקובץ my_file, כוכבית בכותרת מסמנת שינויים שלא נשמרו
    אחרי שנסיים להקליד את התוכן שלנו נוכל לשמור אותו עם מקש "ctrl + o" ולחיצה על אנטר
    צילום מסך: nano מציג את שורת השמירה File Name to Write עם הנתיב ./my_file לפני אישור השמירה
    כדי לצאת העורך טקסט נלחץ על "ctrl + x"

  • קבצים מוסתרים: .hidden-file - קבצים מוסתרים הם קבצים שמתחילים בנקודה .

  • הפקודה ls -a - מציגה את כל הקבצים במצב ארוך כולל קבצים מוסתרים
    צילום מסך: ls מציג קבצים רגילים בלבד, ls -a מציג גם קבצים מוסתרים שמתחילים בנקודה כמו .bashrc, .config ו-.ssh

  • הפקודה file: תציג לנו את סוג הקובץ לפי התוכן שלו
    צילום מסך: פקודת file מזהה סוגי קבצים שונים - my_file כטקסט ASCII, Downloads/ כתיקייה, ו-/bin/ls כקובץ הרצה בינארי ELF 64-bit

  • הפקודה find - מחפשת קבצים
    הפקודה הבאה מחפשת בתוך התקייה /home רקורסיבית האם יש קובץ בשם my_file
    צילום מסך: find /home -name my_file מאתר ומציג את הנתיב המלא לקובץ - /home/ubuntu/my_file
    יש המון דגלים לfind, מוזמנים לעשות man או --help