UNIX course

מתוך OdedWiki

קפיצה אל: ניווט, חיפוש

תוכן עניינים

[עריכה] שיעור I

[עריכה] שורשי UNIX

  • BELL
    • BSD (חינמי של אוניברסיטת ברקלי)
      • IBM
      • SUN
        • SOLARIS
      • DEC-DSF
    • XENIX (מסחרי)
      • SCO
      • SYS III
        • SYS IV
          • HPUX
            • לינוקס: לינוס טרובלדס פיתח KERNEL דומה ל-UNIX ו-GNU GNU IS NOT UNIX

[עריכה] היררכיה

  1. חומרה -> (דרייברים DRIVERS מקשרים)
    1. kernel
      • אחראי לקלט/פלט
      • כתוב ב-assembler ו-C
      • כולל ניהול משימות -scheduling
      • ניהול file system
      • ניהול משתמשים
      • ניהול משאבים
        1. קריאות מערכת (SYS CALLS) קוראות ל:
          1. אפליקציות שכוללות:
            • כלים utilities
            • shell
            • משתמש/תוכנות user/programs

[עריכה] file system

  • מערכת היררכית:
    • ה-ROOT הוא ה- "/" (בניגוד ל-"\") ותחתיו:
      • ETC
      • HOME
      • BIN
      • DEV
  • קובץ הוא זרם בתים, אין הבדל בין קובץ לספריה
  • הכל זה קובץ, מקלדת, תקשורת, טרמינל, מדפסת
  • אין צורך בניהול מיוחד של התקני input/output

טבלאות:

  • טבלת inode: האינדקס שמחזיק את כל הנתונים על ה"קבצים" (לכל קובץ יש inode משלו) במערכת:
    • file type
    • number of hard links
    • size ועוד...
  • data blocks: מכילים את המידע עצמו של הקבצים (הביטים של התמונות והקבצים).
  • PROCESS: כל PROCESS הוא ריצה של אפליקציה, לכל PROCESS יש PID (שזה PROCESS IDENTIFIER) דרכו פונים אליו.
    • כל פקודה ב-UNIX יולדת/יוצרת process
    • לכל process יש process אב חוץ מה-process הראשון, process יוצרים process בנים.
    • ה-KERNEL כולל מנגנונים לניהול ותיזמון PROCESS
    • daemon הוא process שרץ כל הזמן ומספק שירותים (services)

[עריכה] LOGIN

  • init(): הוא ה-process הראשון, הוא בודק טרמינלים זמינים ומחכה לניסיונות login
  • fork(): הוא יוצר process של התחברות
  • process ה-logger בודק שם משתמש וסיסמה עפ"י קובץ הסיסמות.
  • קובץ הסיסמות נמצא ב: /etc/passwd הוא כולל את הנתונים על המשתמש, כולל ספריית התחלה (HOME) וshell להרצה בהתחברות
  • בכל מערכת יש שם משתמש root שהוא משתמש העל, ה-USER ID שלו הוא 0
  • הסיסמה לא מוצגת בקובץ passwd אלא מוצגת כ-"X"
  • משתמש שמוגדר כ-ADMIN יכול לראות את הסיסמות של כל היוזרים בקובץ shadow

[עריכה] shell

ממשק משתמש שהוא סוג של command line interpenter

  • מריץ פקודות פנימיות ואפליקציות, לדוג':
    • cc: compiliation
    • ls: listing of files
    • mail: electronic mail
    • vi: file editing
    • history: list of commands executed
  • מבנה פקודות ב-shell:
    COMMAND OPTION EXPRESSION FILENAME
    • פקודה command: הפקודה עצמה, אם אין פקודה כזו הוא מחפש אפליקציות בפרמטר path (לכל משתמש יש parameter כזה).
    • רווח
    • אופציות option: אות אחת או יותר שמשנה את הפעולה של התוכנה.
    • רווח
    • ביטוי expression: תוכן שאפשר להשתמש בו לפקודה, לדוג': מילת חיפוש
    • רווח
    • קובץ filename: הקובץ עליו להריץ את הפקודה

דוגמות:

  • ls -l אופציה אחת
  • ls -lr או ls -l -r מס' אופציות
  • sort -t: file1 file2 מס' אופציות (מציג מיון של התוכן של שני הקבצים ביחד)
  • grep "hello world" file : חיפוש hello world בקובץ בשם file
  • grep -v -n hello file : מציג את כל השורות בקובץ בשם file שלא (-v) מכילות את הסטרינג hello יחד עם מספור (-n).
  • cp /etc/passwd passwd מעתיק את קובץ הסיסמות של המערכת לקובץ בשם passwd בספרייה הנוכחית
  • cp passwd /etc/passwd מעתיק את קובץ passwd שנמצא בנתיב הנוכחי לקובץ סיסמות המערכת
  • pwd - הדפס את ספריית העבודה : print working directory
  • man tail: הצג את המדריך של פקודה tail
  • tail -f: מציג את הקובץ בשידור חי
  • שירשור (חיבור) קבצים: cat file1 file2 > newfile

.

  • man המדריך של המערכת
    • man ls : מציג את המדריך של פקודה ls
    • man -k keyword: מחפש את המילה keyword במדריך
    • man 2 keyword: מחפש את המילה keyword בחלק 2 של המדריך, להלן החלקים:
      1. פקודות משתמש user commands
      2. system calls
      3. library functions
      4. special files
      5. file firmats
      6. games
      7. misc section
      8. admin n' privilged commands
    • מקשים שימושיים:
      • "רווח": הדף הבא
      • d או ctrl+d: חצי הדף הבא
      • enter: השורה הבאה
      • q: יציאה
      • b או ctrl+b: דף אחורה
      • pattern/: מחפש את הסטרינג pattern
      • h או ?: הצג את העזרה של המדריך

[עריכה] vi

מסך המחשב הוא בעצם סרבר שנותן שירותי תצוגה.

  • ל-vi יש שלושה מצבים:
    1. esc: מצב פקודה, מבצעים פקודות ולא רושמים טקסט, נכנסים אליו ע"י מקש Esc
    2. ed: ניהול קובץ הטקסט, עוברים אליו ממצב esc ע"י ":"
    3. insert מצב כתיבה, נכנסים אליו ע"י לחיצה על a
  • פקודות שימושיות ב-esc:
    • a: הכנס טקסט אחרי הסמן
    • i: הכנס טקסט לפני הסמן
    • A: הכנס טקסט בסוף השורה
    • I: הכנס טקסט בתחילת השורה
    • o: הכנס שורה חדשה אחרי הסמן
    • O: הכנס שורה לפני השורה הנוכחית
    • u: בטל פעולה אחרונה
    • U: בטל בטל
    • D: מחק את שארית השורה
    • yy: העתק את השורה הנוכחית
    • 6yy: העתק את השורה הנוכחית וחמש שורות קדימה
    • p: הדבק את מה שהעתקת ל-buffer
    • <<: אינדנטציה ימינה
    • 5<<: אינדנטציה ימינה ל5 שורות
    • תנועה במסך: f מסך אחד קדימה, b מסך אחד למעלה, j שורה 1 למטה, k שורה אחת למעלה
  • פקודות ב- ed:
    • w: שמירה
    • חיפוש למטה: /:
    • חיפוש למעלה: ?:
    • הגדרת קיצור: ab short_string very long string:
    • w file name: שמירה לקובץ חדש

[עריכה] שיעור II

[עריכה] File system

  • סוגי קבצים
    • כאשר עושים ls -l מקבלים תיאור של הקובץ, האות הראשונה משמאל מציגה את סוג הקובץ
      • - קובץ רגיל
      • d ספרייה
      • b התקנים שיש עליהם קבצים (כוננים)
      • c התקני אותיות (מקלדת, מסך)
      • l לינק סימבולי
      • p הפנייה, צינור
        pipe הוא צינור, "|" יצירת צינור בין תהליכים, דוג': ls | wc עושה ספירת מילים (wc) של הפלט של ls.
        • ישנו סוג נוסף של Pipe הנקרא namepipe והוא pipe קבוע שמוגדר לו מיקום מסוים והוא מקשיב במיקום הזה.
      • s: סוקט, מכניזם לתקשורת בין תהליכים, דומה ל-namepipe.

מבנה הקבצים

  • /
    • bin
    • dev
    • etc
    • usr
      • bin
      • dict
      • games
      • include
      • lib
      • pub
    • tmp
    • home

---להוסיף פה ת'תרשים

  • mount: ניתן לשלב עצי קבצים בתוך עצי קבצים אחרים באמצעות פקודת mount, דוג' mount /dev/abc /usr , נתיב dev/abc מקושר ל-usr. ניתן לבטל ע"י umount
    • df פקודה שמציגה את ה-mountים במערכת.
      • df -i מציגה את השימוש ב- inode
      • df -H מציגה את המידע במגה-בייטים

[עריכה] פקודות

[עריכה] פקודות קובץ

  • ls מציגה רשימות קבצים
    • ls -l מציגה רשימה מפורטת (long)
    • ls /usr מציגה את רשימת הקבצים בספריה usr
    • ls file.jpg מציגה את הנתונים על הקובץ file.jpg בלבד
    • אופציות חשובות:
      • a הצג את כל הקבצים
      • d הצג נתונים על ספרייה ספציפית
      • F הצג סוגי קבצים מסוימים
      • i הצג מס' inode
      • r הצג בסדר הפוך
      • R הצג רקורסיבית, לדוג', גם את כל תת הספריות
      • s הצג גודל קבצים
      • t סדר עפ"י זמן שינוי
  • du מציג רקורסיבית את הגודל ב KB של כל הספריות מתחת לספרייה הנוכחית
    • אופציות
      • s מציג סיכום של הספרייה הנוכחית בלבד
      • a מציג גם גדלים של הקבצים הרגילים
    • פקודות ספריות
      • pwd הצג את ספריית העבודה
      • mkdir צור ספרייה
      • rmdir הסר ספרייה
      • cd לך לספריית הבית
      • cd ~ לך לספריית הבית
      • cd ~/dirname לך לספרייה dirname מתחת לספריית הבית
      • cd dirname לך לספרייה dirname שמתחת לספרייה הנוכחית
      • cd .. עלה ספרייה אחת
      • cd ~username לך לספרייה של משתמש username, לדוג': cd ~wrk403
      • echo מדפיסה את מה שאחריה, לדוג' echo ~username
  • עבודה עם קבצים
    • cp העתק
      • cp f1 f2 העתק קובץ f1 לקובץ f2 או העתק קובץ f1 לספרייה f2 אם קיימת ספרייה בשם כזה
      • cp f1 f2 f3 d1 העתק את קבצים f1,f2,f3 לספרייה d1
      • cp -r d1 d2 מעתיק ספרייה ותוכנה לספרייה אחרת (הדרך היחידה להעתיק ספרייה)
      • mv f* d2 מעתיק את כל הקבצים שמתחילים בf ל-d2
    • mv שינוי שם או מקום
      • mv f1 f2 משנה את שם הקובץ f1 ל f2
      • mv d1/f1 d2/f1 מעביר את הקובץ
      • mv d1 d2 שינוי שם ספרייה
      • mv f1 f2 f3 d1 מעביר את הקבצים f1,f2,f3 לספרייה d1
    • mv f* d2 מעביר את כל הקבצים שמתחילים בf ל-d2
    • rm מחיקת קבצים
      • rm f1 f2 f3 מוחק את שלושת הקבצים
      • rm -r d1 מוחק רקורסיבית את כל מה שמתחת לספרייה d1 (לפרט)
      • rm * מוחק הכל בספריה הנוכחית (לבדוק)
  • ln
    • hard links הם שמות לאותו קובץ שיוצרים קישור קבוע למידע ב-datablocks ובטבלת ה-inode
      • ההרשאות לקריאה נמצאות ב-inode
      • הקובץ נמחק כאשר מוחקים את הלינק האחרון
      • לא ניתן לעשות HARDLINK לקובץ ב-FILE SYSTEM אחר
      • רק root יכול ליצור hardlinks לספרייה מכיוון שזה יכול ליצור loop אינסופי
      • ln f1 f2 צור הרדלינק f2 מ-f1
      • הוא לא קובץ מסוג l
    • symbolic link קישור קלאסי לקובץ אחר
      • קובץ מסוג l
      • ln -s f1 f2 צור סימבוליק לינק בשם f2 שייקשר ל-f1
      • יכול ליצור קישור לספרייה
  • chmod (ראה הרשאות)
  • chgrp
  • chown
  • which מציגה את מיקום הפקודה, לדוג' which less תתן את מיקום הפקודה less
  • touch נוגעת בקובץ, אם הקובץ לא קיים הוא נוצר ריק, אם הוא קיים אז הוא משנה את זמן הכניסה והגישה האחרונים לעכשיו.
  • הרץ תוכנית: ./start מריץ תוכנית בשם start, נקודה סלאש ואז שם הקובץ

[עריכה] פקודות תוכן

  • cat
  • more מציג תוכן קובץ
  • less מציג תוכן קובץ בצורה מתוחכמת עם יוכלת שיטוט
  • pr
  • tail מציג את סוף הקובץ
    • tail -f מציג את הסוף של הקובץ בצורה חיה
  • head מציג את ההתחלה של הקובץ
  • compress: מכווצת את הקובץ ויוצרת אותו עם סיומת z ומוחקת את הישן compress file1
  • uncompress: מבטלת כיווץ
  • zcat: כמו cat לקבצים מכווצים
  • wc: ספירת מילים
    • wc -c סופר אותיות בלבד
    • wc -w סופר מילים בלבד
    • wc -l סופר שורות

[עריכה] הרשאות

  • סוגי הרשאות:
    • read
      • לקובץ: מאפשר קריאה
      • לספרייה: ניתן לחפש בספרייה ולבצע ls על הספרייה.
    • write
      • לקובץ: ניתן לכתוב לקובץ
      • לספרייה: ניתן ליצור ולמחוק קבצים בספרייה
    • execute
      • לקובץ: ניתן להפעיל אותו
      • לספרייה: ניתן לגשת לספריות ותת ספריות
  • שינוי הרשאות
    • chmod a-r,u+x file
    • כאשר:
u - user
g - group
o - other
a - all
+ הוסף הרשאה
- הסר הרשאה
= הרשאה מוחלטת
r - read
w - write
e - execute
  • קידוד הרשאות
    • 4=r
    • w=2
    • x=1
ואז לדוג' 5= r וx, ו 7= xוwוr
וניתן להגדיר הרשאות כך: chmod 657 file (הספרות הן לפי הסדר: user,group,all)
  • unmask: קובע הרשאות מחדל, לדוג' unmask 077 גורמת לכל הקבצים שאני היוזר יוצר להיווצר עם הרשאה מלאה שלי וללא הרשאה לאחרים
  • שינוי סיסמה: passwd

[עריכה] שיעור III

[עריכה] csh

[עריכה] regular expressions

  • לcshell אותיות מיוחדות שהוא מתרגם למשמעויות אחרות, לדוג' c.* מתייחס לכל הקבצים שמסתיימים ב-c. בשביל להתחמק מהפירוש של * לכל הקבצים, שמים גרשיים מסביב לביטוי, לדוג' "c.*"
  • להלן התוים:
    • הסימן * מתייחס לתו נעלם אחד או יותר (או אפס תוים), לדוג': k*u מתייחס גם ל-kukuriku וגם ל-kru
    • הסימן ? מתייחס לתו נעלם אחד בלבד, לדוג': k?u מתייחס רק ל-kru
    • הסימן [] מתייחס למס' תוים מוגדרים, לדוג' ls test.[cos] ישלוף test.c test.o ו-test.s, ניתן להשתמש בו פעמיים לשני תוים: ls test.[cos][cos] וגם בטווח a-z.
    • הסימן {} מתייחס לסטרינג מסוים, לדוג': ls {test1,x,y}.c יציג את קבצים test1.c x.c ו-y.c.
    • ניתן להשתמש ב-/ בשביל להכנס לספריות לדוג': lst/*.cp
    • דוגמאות נוספות:
      • כל הקבצים שמתחילים במספר [0-9]*
  • כל הקבצים שמכילים לפחות אחת אות קטנה ואות גדולה {[a-z]*[A-Z],[A-Z]*[a-z]}
  • כל הקבצים שבתת ספריות /*/

[עריכה] I/O Management

  • הפניית input ו-output או redirection
    • cat < file1 > file2 מעתיקה(ודורסת) את התוכן מ-file1 ל-file2
    • cat < file1 >> file2 מוסיפה את התוכן של-file1 ל-file2
    • cat < file1 >& file2 מעתיקה(ודורסת) את התוכן ואת הודעות השגיאה של-file1 ל-file2
  • ctrl+d סוף קובץ
  • למניעת דריסת קובץ בטעות משתמשים בפקודה : set noclobber ולביטול: unset noclobber
    • ניתן לעקוף את noclobber ע"י: command >! file

[עריכה] pipe

  • pipe מקשר בין standart output של פקודה אחת ל-standart input של פקודה אחרת, והוא גם בעצם redirection, לדוג': ls -t project | grep cc | sort
  • הבדל בין rdirection ל-pipe:
    • ls > lpr יותר קובץ lpr ושם בו את תוכן של ls
    • ls | lpr מדפיס את תוצאת ls
    • ב-pipe, תמיד מקשרים בין שתי פקודות, בהפנייה מעבירים את התוכן לקובץ
  • ניתן להעביר גם את הstderr ל-pipe ע"י &: cat file1 |& wc
  • ניתן להעביר את תוכן ה-pipe לקובץ: ls | sort | tee file1

[עריכה] jobs

  • הרצת jobים ברקע: באמצעות הסימן & בסוף הפקודה, לדוג': & cat -n long | lpr
  • ps: מציגה את רשימת ה-processes שרצים במערכת.
  • jobs: מציגה את רשימת ה-processes שרצים ב-shell הנוכחי.
    • jobs -l: מציג גם את ה-pid של כל job.
    • ps -lf מציגה את הפרוססים שרצים עם pid והאבות שלהם
  • kill: שולחת אותות ל-processים: kill [-signal] [pid] [%job],מס' סיגנלים (אותות):
    • kill -9: הורג לא משנה מה.
    • kill -15: מפסיק את הפרוסס בצורה פחות אלימה.

[עריכה] filter and process text

[עריכה] ביטויים רגולרים

  • A^ שורה שמתחילה ב-A
  • $A שורה שמסתיימת ב-A
  • . תו כלשהו, פעם אחת
  • "*" אפס או יותר פעמים האות שלפני הכוכבית, לדוגמה, a* אפס או יותר פעמים a
  • "*." תו כלשהו, מס' פעמים
  • \ מבטל את הביטוי המיוחד
  • [abg] ש"ע ל-a b או c
  • [abc^] כל מה שהוא לא a b או c
  • {2,4}A שתיים עד ארבע חזרות של A, כלומר: AA או AAA או AAAA
  • () מחבר מילים כך שאפשר יהיה להפעיל עליהן * או ? לדוג': *(abc) ש"ע ל- abc או abcabc או כלום.
  • + פעם אחת או יותר של האות שבאה לפניו
  • ? פעם אחת או אפס חזרות של האות שבאה לפניו
  • | ש"ע ל-OR, מאפשר הגדרת "או" בין שני ביטויים רגולרים

[עריכה] תוכניות חשובות

  • grep
    • סוגי grep:
      • grep: מקבל ביטוי רגולרי יחיד
      • egrep או grep -E: יותר מתקדם, משתמש בהרבה זכרון
      • fgrep: פשוט אך מהיר
    • אופציות של grep:
      • v- כל השורות שלא כוללות את המחרוזת
      • c- סופר את השורות המתאימות
      • n- מציג את השורות עם מספרן
      • l- הצג רק את שמות הקבצים שכוללים מחרוזות מתאימות
      • i- התעלם מכתב גדול/קטן
  • cut: חותכת עמודות, cut -dC file1 האות C היא המפריד
  • tr: מחליפה אותיות מסוימות
  • sort: מסדרת את תוכן הקובץ בסדר לקסוגרפי, לדוג': sort file, בכדי לסדר נומרית מוסיפים n-
    • סידור לפי שדות (עמודות בטבלאות): sort +3 -4 +0 -1 מסדר קודם לפי השדה הרביעי (+3 -4) ואח"כ השדה הראשון (+0 -1)
  • uniq: מציגה רק שורות ייחודיות
  • find:
    • find / -atime +30 -print חפש את כל הקבצים שלא ניגשו אליהם ב-30 הימים האחרונים
    • find . -name "*.O" -exec rm "{}" \; מחק את כל הקבצים שמסתיימים ב-"o."
    • find /u \( -type f -o -user caro \) -ls מצא קבצים ב-u/ שהם קבצים רגילים או קבצים של caro גם אם הם לא קבצים רגילים והפעל עליהם ls.
  • tar: יוצר ארכיונים, ביחד עם compress או gzip או מחקה פונקציונליות של winzip.
  • alias - קיצורים
    • alias h history
    • \ מתעלם מ-alias לדוג': h/
    • הקיצורים נשמרים ב- cshrc.
    • הבאת קיצורים מהיוזר האישי ליוזר הנוכחי: source ~user/.cshrc או "." במקום "source ב-shellים מסוימים.
    • אם רוצים לכלול בקיצור תוים מיוחדים יש להשתמש ב=""
    • unalias h מבטל קיצור
  • history - היסטוריה
    • set hitory=100 מגדיר לזכור 100 פעולות אחרונות
    • מפעילים באמצעות !, לדוג':
      • הפעולה החמישית האחרונה: 5!
      • הפעולה האחרונה שמתחילה ב-u תשוחזר כך: u!
  • top: מציג את הפרוססים שרצים במערכת ותופסים הכי הרבה משאבי מעבד, ניתן ללחוץ על k בזמן הריצה ולהפיל פרוססים (kill).
  • ps:
    • ps מציג פרוססים בSHELL הנוכחי
    • ps g מציג פרוססים של היוזר
    • ps a מציג ת כל הפרוססים

[עריכה] רשת

  • samba: מאפשרת לשרתי unix להתחזות לשרתי win
  • roomba: מאפשרת לשרתי win להתחזות לשרתי unixד

אימייל של המדריך

כלים אישיים