מבוא לתכנות של קבוצת בטא/המדריך המהיר של עופר לעבודה בלינוקס

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

שתי הנקודות של המדריך המהיר ללינוקס[עריכה]

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

אם אתם לא יודעים איך לפתור אותם, קראו את המדריך המהיר ללינוקס בהמשך הדף, ואת דף הפקודות הבסיסיות של אבירן עבאדי, ותדעו!


אתגר:

בצעו את התרגיל הבא בטרמינל על מנת לקבל את נקודה מהמדריך המהיר ללינוקס:
  1. צרו תיקיה בשם penguinity בתוך תיקיית הבית שלכם.
  2. צרו בתוכה קובץ בשם "test_output".
  3. הכניסו לתוכו בשורת פקודה אחת את רשימת כל הקבצים והתיקיות (גם הנסתרים!) שיש לכם בתיקית הבית.
  4. שנו בעזרת עורך טקסט את הקובץ עם רשימת התיקיות ככה שהשם של התיקיה בקובץ Desktop יהפוך לBesktop.
  5. הראו את הקובץ לעופר, אם עשיתם כל מה שצריך, תקבלו נקודת נסיון בתחום הלינוקס!


אתגר:

בצעו את התרגיל הבא בטרמינל על מנת לקבל עוד נקודה של המדריך המהיר ללינוקס:
  1. צרו עותק של הקובץ test_output מהמשימה הראשונה, שייקרא test_output_bkp.txt
  2. הוסיפו לקובץ המקורי תיאור קצר של הפקודות touch, apt-get, vi וemacs מתוך המדריכים שיש בלינוקס.
  3. הוסיפו לקובץ את הכתובת של קובץ ההגדרות של apache (אפאצ'י היא תוכנה מאוד ידועה שמאפשרת לכם להקים אתר אינטרנט על המחשב שלכם). הקובץ נקרא apache2.conf והוא נמצא איפשהו בתוך תיקיית ההגדרות של לינוקס.
  4. הוסיפו לקובץ תיאור קצר שאתם כתבתם של תפקיד תיקיית dev/.
  5. הגנו על הקובץ מפני האקרים: שנו את ההרשאת על הקובץ ככה שרק אתם והקבוצה שלכם תוכלו לקרוא אותו, ואף אחד לא יוכל לכתוב לתוכו (גם לא אתם!).
  6. הראו את הקובץ לעופר, אם עשיתם כל מה שצריך, תקבלו עוד נקודת נסיון בתחום הלינוקס!

לא מבינים כלום?
יופי. זה אומר שאתם צריכים לקרוא את המדריך המהיר ללינוקס שבהמשך הדף!
כשתסיימו אותו תבינו.



המדריך המהיר של עופר לעבודה בלינוקס[עריכה]

הבסיס של הבסיס[עריכה]

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

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

מה שאתם רואים על המסך נקרא prompt, והוא נראה ככה:

tux@betashekhi:~$

זה אומר ש:

  • קוראים לכם tux.
  • אתם עובדים על המחשב betashekhi (מחשב אמיתי, חפשו אותו בכיתה)
  • אתם נמצאים בתיקיית הבית שלכם. טילדה (~) זה הסימן המקובל ל"בית".
  • אתם משתמש רגיל. אם הייתם רואים # במקום $, זה אומר שאתם מנהל המערכת, שיכול בשניה להרוס את המערכת.

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

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

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

pwd[עריכה]

נגיד ששכחתם איפה אתם נמצאים. הקלידו את הפקודה:

pwd

ותראו איפה אתם נמצאים.

הפקודה היא קיצור לשם print working directory.

ניסיתם את הפקודה, נכון?

לא סתם ישבתם כמו בטטות והסתכלתם על מה שכתבתי כאן, נכון?

כי מי שמנסה יהיה בסוף נינג'ה. מי שבטטה יהיה בסוף פירה.

ls[עריכה]

אם אנחנו רוצים לראות איזה קבצים נמצאים בתיקיה שלנו, נקליד:

ls

ונראה את רשימת הקבצים.

לידיעתכם: ls היא קיצור למילה list. (שימו לב: הפקודה היא ls ולא is. לינוקס לא אוהב פקודות שלא קיימות.)


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

ls -a

רוצים לראות קבצים שאפשר להריץ? יש בתיקיה /bin:

ls /bin

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

cd[עריכה]

בשביל לטייל במערכת קבצים נשתמש בcd (קיצור לchange directory). לדוגמה, אם יש לנו בתיקיית הבית תיקיה בשם Desktop, נטייל אליה ככה:

cd Desktop

כשכותבים ככה רק את השם של התיקיה, ולא את הכתובת המלאה שלה, קוראים לזה Relative path.

הכתובת המלאה של התיקיה הזאת (במחשב של Tux) היא /home/tux/Desktop, לכתובת מלאה קוראים Absolute path.

אם נרצה לחזור תיקיה אחת למעלה (בחזרה הביתה במקרה שלנו):

cd ..

.. הוא הסימן המוסכם ל"תיקיה אחת למעלה". נקודה אחת היא הסימן המוסכם ל"התיקיה הנוכחית". כך שאם תכתבו:

cd .

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

ואם נרצה ללכת משם ישירות לתיקיה שבה נמצאות ההגדרות לרשת דינמית של המערכת (לא באמת מעניין מה זה אומר כרגע), אז נלך ל /etc/dhcp:

cd /etc/dhcp

השתמשנו כאן בabsolute path.

אם נרצה ללכת לשורש של עץ מערכת הקבצים, שנקרא root directory, נכתוב:

cd /

ואם נרצה לחזור הביתה:

cd ~

אז אנחנו יודעים איך מטיילים, אבל לאן אפשר לטייל?

זה הזמן להכיר את מבנה מערכת הקבצים.

מבנה מערכת הקבצים[עריכה]

בלינוקס יש מערכת קבצים אחת. אין דיסק C, אין דיסק D, לא מעניין את לינוקס אם יש לך שני הארד-דיסקים או אם יש לך רק USB. הכל נכנס לתוך העץ של הקבצים.

העץ מתחיל במה שקוראים תיקיית הroot - השורש. ניכנס אליה:

cd /

ונסתכל מה יש שם:

ls

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

נא לקרוא את הערך על מערכת הקבצים בויקיפדיה.


פקודות - המשך[עריכה]

which[עריכה]

אז איפה בעצם נמצאת הפקודה ls?

which ls

אנחנו מכירים את התיקיה הזאת.

וזה עובד לכל פקודה עצמאית. cd למשל היא לא פקודה עצמאית, היא חלק מן הshell.

whatis[עריכה]

ואם אנחנו שוכחים מה פקודה עושה?

whatis ls

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

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

man[עריכה]

ואם צריכים את המדריך המלא של הפקודה? קודם כל הרבה פקודות יכולות לעזור בעצמן בעזרת הארגומנט --help:

ls --help

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

man ls

בשביל לצאת מזה אפשר ללחוץ q.

ואם רוצים לדעת יותר על איך להשתמש בman?

man man

info[עריכה]

אם רוצים ישנו גם סוג משוכלל יותר של מדריך:

info ls

גם ממנו אפשר לצאת בעזרת לחיצה על q.

touch[עריכה]

הפקודה touch משנה את התאריך שבו נגעו פעם אחרונה בקובץ. אם הקובץ לא קיים היא מייצרת אותו, שזה כבר מעניין.

אז נייצר קובץ בשם test file:

touch test_file

אין רווח בתוך שמות של קבצים! זאת המצאה בעייתית של windows שלא קיימת במקומות אחרים!

לינוקס לא אמר לכם כלום? כנראה הוא הצליח ליצור את הקובץ.
לינוקס ענה לכם את השורה הזאת?:

touch: cannot touch `test': Permission denied

זה אומר שאסור לכם ליצור שם קובץ. לכו למקום שמותר לכם, נגיד בתיקיית הבית שלכם (רמז: השתמשו בפקודה cd).

שימו לב שבלינוקס לא צריך סיומת כמו .txt או .exe. אפשר לשים אותן אם ממש רוצים, ללינוקס זה לא משנה גם אם תשימו שלוש מאות נקודות בשם של הקובץ. אבל אם תשימו נקודה בתחילת שם הקובץ, זה יהיה קובץ נסתר.

הצלחתם ליצור קובץ? תבדקו עם הפקודה ls שהוא באמת נוצר.

mkdir[עריכה]

אפשר לייצר גם תיקיות, לדוגמה, נייצר תיקיה בשם new_library:

mkdir new_library

file[עריכה]

אז מה אפשר לדעת על הקובץ החדש שיצרנו?

הפקודה file מזהה סוגי קבצים ומספרת לך מה היא גילתה:

file test_file

ls -l[עריכה]

ואם רוצים לדעת נתונים כמו מי הבעלים של הקובץ, ומה הגודל שלו?

מסתבר שls יודעת לעשות את זה, אם אומרים לה להראות את זה:

ls -l test_file

וזה מה שמקבלים כתשובה (לדוגמה):

-rw-r--r-- 1 tux penguins 0 Feb 15 06:23 test_file

מה זה כל האותיות והמספרים והמקפים האלה? איך יודעים מזה מי הבעלים של הקובץ? התשובה בתקציר באנגלית ובהסבר על chmod של אבירן עבאדי מהאתר של נחום דנציג. בהסבר על הפקודה chmod תוכלו ללמוד גם איך להגן על הקובץ שלכם מהאקרים, ואיך לתת הרשאות קריאה או כתיבה.

מחיקה, העתקה והעברה של קבצים, וכל הפקודות שצריך לדעת[עריכה]

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



apt-get[עריכה]

apt היא תוכנת ניהול החבילות של הפצת דביאן, ועם הכלי apt-get שכלול בה אפשר להשיג ולהתקין כל תוכנה שרוצים, וגם להשיג מידע על מה שכבר מותקן. אמנם בסביבה גרפית נשתמש הרבה פעמים בממשק synaptic, שהוא מאוד נוח. אבל לפעמים צריך גם לעשות התקנות דרך הטרמינל.

לדוגמה, על מנת להתקין את תוכנת הטרמינל konsole, נכתוב:

apt-get install konsole

וapt כבר תבדוק לבד איזה חבילות נדרשות להתקנה (נגיד, המון חבילות של שולחן העבודה KDE), ותשאל אם אנחנו רוצים להתקין את כל זה. כמובן שכן, יש לנו דיסק גדול.

עורכי טקסט[עריכה]

pico[עריכה]

pico בכלל נוצר בתור תוכנה לכתיבת מיילים בשביל תוכנת הדואר pine, אבל כל כך קל להשתמש בה, שהיא נשארה כוכבת בפני עצמה:

pico test_file

נכתוב בקובץ שלנו את המילים hello world. ונשמור.

איך שומרים שם? CTRL-O
(הוא ישאל האם הוא הבין נכון את שם הקובץ. לחצו enter אם זה אכן שם הקובץ). איך יוצאים? CTRL-X
הכל כתוב במסך בשורה התחתונה. קל, קל, קל.

אבל pico נועדה לכתיבת מיילים. מתכנתים היו צריכים משהו יותר רציני.

vi[עריכה]

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

vi test_file

למשל, נסו לכתוב משהו. מבינים את הבעיה?

צריך ללחוץ i כדי שיהיה אפשר להכניס טקסט (insert).

עכשיו נסו למחוק אות. הופ, בלגאן. צריך ללחוץ Esc כדי שהוא יתן לנו לזוז.

למעשה צריך ללחוץ על Esc בכל פעם שהוא קצת משתגע ולא עושה מה שאנחנו רוצים. זה מאפס אותו קצת.

עכשיו נסו לצאת ממנו. זה בכלל משעשע. אם תכתבו :q (עם הנקודותיים!) הוא עקרונית היה נותן לכם לצאת, אבל כתבתם דברים ולא שמרתם. אז לא תצאו.

אלא אם אתם ממש רוצים, ואז תכתבו :q! ואז סוף סוף תצליחו להשתחרר.

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

emacs[עריכה]

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

בשביל לערוך איתו מריצים:

emacs test_file

קיבלתם הודעת שגיאה?
זה בגלל שבדביאן צריך להוריד אותו בנפרד.


הרצתם emacs ולא קיבלתם הודעת שגיאה? זה סימן שהוא כבר מותקן, ושנפתח לכם חלון emacs ואפשר להתחיל לעבוד!

כיום emacs מכיר את המקשים שמשמשים ברוב עורכי הטקסט, אז אפשר להשתמש בהם. אבל בכל מה שנוגע לשימוש במקשי CTRL וALT, יש לו פקודות משלו שנוצרו לפני שהמציאו את הצירופים שמקובלים כיום.

לדוגמה:
CTRL-X 1 סוגר את כל התת-מסכים מלבד זה שנמצאים בו. תנסו, זה יסגור את חלון העזרה הקטן שemacs אוהב להראות.


עוד צירופים מעניינים: CTRL-s משמש לחפש בקובץ
ALT-w עושה copy
CTRL-w עושה cut
CTRL-Y עושה paste

והכי חשוב:
CTRL-x CTRL-s שומר את המסמך
CTRL-x CTRL-c סוגר את emacs


אפשר למצוא מדריך מתומצת וטוב למתחילים בemacs אצל ג'סיקה האמריק, ויש אפילו מדריך מצוייר של סשה צ'ווה. והכי טוב, יש tutorial בתוך emacs עצמו שמלמד אותך עם דוגמאות.

emacs נגד vi[עריכה]

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

חובבי emacs אומרים שvi הוא מוזר ופרמיטיבי (שמתם לב שאני חובב emacs?)
חובבי vi אומרים שemacs הוא מערכת הפעלה שלמה שכל מה שחסר בה זה עורך טקסט טוב.

הכי טוב להכיר את שניהם אם כי בבטא emacs הוא העורך העיקרי שעובדים איתו.

ed[עריכה]

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

apt-get install ed

יש משהו שצריך להבין לגבי אד - הוא הומצא לפני שהמציאו את המסך. כן, בתקופה שדינוזאורים ראו מה יוצא מהמחשב בעזרת מדפסת בלבד. לכן אד שונה מכל עורך טקסט שאתם מכירים. הוא כמו הקוף שממנו התפתח vi. אבל הוא מגניב אש לנינג'ות, בין השאר בגלל שהתאום שלו, sed עובד בדיוק עם אותן פקודות, אבל בצורה אוטומטית. וגם בשביל להגיד לאנשי לינוקס ותיקים "כן, אני עובד עם אד" ולראות איך הצעירים יותר מגלים שיש להם חור בהשכלה, והזקנים יותר אומרים "וואו".

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

ed test_file

חוץ מלהגיד לך כמה שורות יש בקובץ, אד לא הולך להגיד לך כלום.

את שאר טכניקת העבודה ניתן ללמוד בבלוג של טום ריידר, או ישירות מהמדריך הרשמי לed.

אם רוצים לצאת, כותבים q. אם שיניתם את הקובץ, בדיוק כמו vi הוא יסרב לצאת (אבל בניגוד לvi הוא ינפנף לך בסימן שאלה שלו). אז כותבים Q, והוא יוצא בלי להתווכח.

כי אד הוא עורך הטקסט הסטנדרטי.

עבודה במקביל ושליטה בתהליכים[עריכה]

CTRL-C[עריכה]

נניח שתוכנה כלשהי עובדת בטרמינל וצריך לעצור אותה כי היא רצה כבר יותר מדי זמן. בשביל זה לוחצים CTRL-C. זה הורג את התוכנה שכרגע פועלת.

CTRL-Z, bg[עריכה]

נניח שפתחנו emacs ועכשיו אנחנו רוצים להשתמש בטרמינל מבלי לסגור את emacs. בעיה, הטרמינל מחכה שemacs יסיים.

במקרה כזה לוחצים CTRL-Z בטרמינל, והתוכנה שרצה "נרדמת", ומאפשרת לנו להשתמש בטרמינל.

אם נריץ את הפקודה

fg

התוכנה שנרדמה תתעורר (תעבור לforeground) ותחזור לפעולה. ותחסום שוב את הטרמינל.

אבל אם במקום זה נריץ את הפקודה:

bg

התוכנה שנרדמה תחזור לפעול ברקע (background). אז יהיה אפשר לעבוד איתה ועם הטרמינל במקביל.

&[עריכה]

ואת כל זה היה אפשר למנוע אם מראש היינו מריצים את emacs ברקע, ככה:

emacs &

shell scripting[עריכה]

shell script זה סוג של תוכנה שכתובה בשפה מיוחדת ובנויה כמו לגו - זה למעשה תסריט שאומר להרבה תוכנות אחרות מה לעשות בצורה אוטומטית.

הshell הרבה יותר חזקה ממה שאתם חושבים. אפשר ממש לבנות שם תוכנות שמדביקות המון כלים ועושות דברים כמו עריכה אוטומטית של טקסט, עריכת וידאו, הורדה אוטומטית של דברים מהאינטרנט, וכל דבר שבא לכם. קוראים לזה scripting, כתיבת "תסריטים". אמנם יש כיום שפות סקריפט טובות יותר, כמו python או PHP, אבל עדיין כדאי לדעת את הבסיס של bash scripting, כי זה יאפשר לכם לעשות דברים מאוד במהירות וביעילות, ולהכיר כלים מאוד מועילים.

יש מדריך טוב בעברית על bash scripting באתר הפינגוין.

דוגמה לסקריפט: איך זורקים את רשימת כל הקבצים שבתיקיית הבית אל תוך קובץ[עריכה]

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

אז נכתוב סקריפט של שורה אחת, שמייצר את רשימת כל הקבצים בתיקיית הבית שלנו, וכותב אותה לתוך קובץ.

אנחנו כבר יודעים לראות את כל הקבצים בתיקיית הבית:

ls ~

אבל איך מכניסים את זה לתוך קובץ?
התשובה:

ls ~ > foo.txt

החץ המשולש לוקח את מה שיצא מהפקודה (ls במקרה שלנו) ושופך את זה ישר לתוך קובץ (שבמקרה שלנו קראנו לו foo.txt). הוא אפילו מייצר את הקובץ אם הוא לא קיים.

אם נסתכל עכשיו בקובץ foo.txt:

cat foo.txt

נראה שם את כל מה שיש בתוך הקובץ!

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

וזהו[עריכה]

קראתם את כל המדריכים שהוזכרו כאן? אתם נינג'ות לינוקס.
קפצתם על כל המדריכים שהוזכרו ועברתם רק על המדריך המהיר ועל המדריך של נחום דנציג? זה יספיק כדי להתחיל לעבוד.

זה הזמן לבצע את שתי המשימות שבתחילת המדריך המהיר, ולקבל את שתי נקודות הנסיון שהוא יכול לתת!

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