[השמעת מוסיקה] 

דאג LLOYD: אישור. אז בואו נדבר על איך להשתמש בשורת הפקודה של לינוקס. עכשיו, IDE CS50, או ב למעשה, אפילו מכשיר CS50, אם אתה מכיר את זה, או אתה לוקח בגרסה ישנה יותר של CS50, הוא מכונה מבוסס ענן אשר פועל אובונטו, שהוא אחד מטעמים הרבים של מערכת ההפעלה לינוקס. מערכת ההפעלה לינוקס היא מועדף על ידי מתכנתים, כי זה פשוט קריר, נכון? 

הפצות לינוקס מודרניות רבות יש ממשק משתמש גרפי, שבו אנו קוראים גם GUIs, G-U-אני, ל לאפשר ניווט מבוסס עכבר קל, שאתה בוודאי מכיר, אם אתה משתמש ב- Windows או Mac, נע סביב העכבר, לחיצה כפולה על סמלים, וכן הלאה. עדיין אף, כמתכנת, ואף על פי שIDE מכיל את היכולת לעשות קצת משתמש גרפי דברים, לחיצה, ו גרירה, וכל זה, יהיה לך להיות עדיין משתמש חלון מסוף די לעתים קרובות. ואתה יכול לעשות הרבה של אותן משימות שאתה יכול לעשות עם עכבר עם פקודות מקלדת. ואנחנו הולכים לדבר קצת על מה חלק מהפקודות האלה הם עכשיו. 

עכשיו, ניתן להשתמש בפקודות אלה בכל הפעלה מבוססת יוניקס מערכת, הכוללת לינוקס, אבל כוללת גם מערכת ההפעלה Mac OS. אם אתה פותח את המסוף ב- Mac שלך, אתה יכול להשתמש בפקודות אלה מדויקים. Windows יש גם פיקוד שורת, אבל חלק מהפקודות הם מעט שונים, כך זה לא באמת עובד, מכיוון ש- Windows לא מערכת מבוססת יוניקס. 

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

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

אני הולך להתמקד-ב ומעל הראש כאן, רק כדי להראות לך את זה, למעשה, אני יכול לחץ על קבצים ותיקיות אלה. אז ברור, שבו אני נמצא כרגע, יש לי שתי תיקיות, שנקראו pset0 וpset1, ושלושה קבצים, אחד בשם שלום, אחד בשם hello.c, ואחד בשם hello.txt. 

אז בואו נעבור אל המסוף חלון ולקבל מבט מקרוב. אז אנחנו פשוט דיברנו, שוב, על עובדה שיש לנו שלושה קבצים ושני תיקיות בספרייה הנוכחית. אם אני מקליד LS, ששוב היא את הפקודה לרשימה התוכן הנוכחי ספרייה, ולאחר מכן אני מכה על Enter, תראה מה אני רואה, שלום, hello.c, hello.txt, pset0 וpset1. 

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

במאמר מוסגר, יודע ששם של הספרייה הנוכחית היא תמיד נקודה, ואת שמו של המדריך רמה אחת מעל שבו אנו נמצאים כעת, שהוא השם של התיקייה ב שהתיקייה שלנו היא, נקודה, dot-- או שבתיקייה שלנו היא, הוא נקודה, נקודה. ואם אתה אי פעם סקרן לגבי שמו של המדריך שלך, ניתן להקליד מע"צ, העומד לספריית עבודה הנוכחית. אנחנו נסתכל על כל אלה עכשיו, על ידי בדרך חזרה לIDE CS50. אז אני שוב בסביבת העבודה שלי עכשיו. ואני זום-בשוב על מסוף, כדי שנוכל להעיף מבט במסתובב בתוך IDE. אז אני הולך לרשימה תוכן של הספרייה שלי שוב, רק כדי reground שלנו באיפה אנחנו נמצאים. אז אם אני מקליד LS, ש הוא לרשימה שוב, אני רואה שאני יכול להגיע לpset0 וpset1. אלה הם הספריות אני יכול להגיע לכאן. אני יודע את זה, כי IDE נותן שלי מושג על ידי צביעתם כחולה. 

נניח שאני רוצה להיכנס לספריית pset1, בגלל שאני עובד על בעיה להגדיר 1. אני יכול להקליד cd-- שוב, קצר ל לשנות directory-- חלל, pset1. ואם אני Enter, שם לב מה קורה. זה לא נראה כמו הרבה קרה. אבל אם אתה מסתכל על הפקודה, זה עכשיו אומר לי שאני ב~ / סביבת עבודה / pset1. אני מנווט לpset1 תיקייה שהיה בתוך סביבת העבודה שלי. 

ואם אני מקליד LS, אני רואה כמה דברים שונים כאן, נכון? זה לא אותו הדבר רשימה שראיתי לפני. אני מנווט לpset1. אז עכשיו, כשאני מקליד LS, אני מקבל את ההקשר של מה אני יכול לראות מתוך תיקיית pset1. 

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

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

נניח שאני רוצה כדי לעלות רמה אחת. אני רוצה לחזור ל ספריית סביבת העבודה שלי. אני לא יכול להקליד סביבת עבודה CD, אין כזה קובץ או ספרייה. והסיבה ללראות-- אם אני מקליד LS time-- אחד יותר הוא שאין ספרייה בשם סביבת עבודה פנימית של ספריית pset1. אני הולך לנקות אותי מסך שוב עם L שליטה. זכור מה שאמרתי מוקדם יותר, אם כי, אנו ש יכול לנווט חזרה עם נקודה, נקודה. זה השם של ספריית האב. אז אם אני מקליד CD, חלל, נקודה, נקודה, ולאחר מכן לוחצת על Enter, עכשיו להסתכל על מה שקרה. הפקודה שלי אומרת לי שאני חזרה בספרייה ~ / סביבת העבודה שלי. עברתי רמה אחת למעלה, הודות לנקודה, נקודה. 

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

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

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

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

אז אם אני אי פעם רוצה לחזור ל רק שלי ספריית הבית, טילדה, אני יכול להקליד CD עם שום דבר אחרי זה. CD, Enter. ועכשיו, אני בטילדה. ואם אני רוצה להגיע לסביבת עבודה, אני רק יכול להקליד סביבת עבודה CD. וככה אתה עובד ספריות שינוי בתוך IDE CS50 או כל ינוקס מערכת הפעלה בשורת הפקודה. בסדר. הבא שאולי שימושי הוא mkdir, שהוא קצר עבור להפוך ספרייה, אם אני צריך ליצור תיקייה חדשה. אם אתה מכיר מערכת ההפעלה GUI, אתה לחץ לחיצה ימנית עשוי. ולאחר מכן, כאשר תפריט ההקשר צץ, לבחור תיקייה חדשה. זה כנראה איך עשית את זה לפני. אבל אנחנו יכולים גם ליצור ספריות בשורת הפקודה. אז אנחנו שוב בIDE. אני זום-אין במסוף ו רשימה של תוכן הספרייה שלי שוב, רק כדי לתת לנו מסגרת התייחסות. נניח ש, עכשיו, יש לי סיימתי לעבוד על בעיה להגדיר 0 והבעיה להגדיר 1. אז אני רוצה ליצור ספרייה חדשה לעבוד על לבעיה להגדיר 2. איך אני עושה את זה? 

ובכן שוב, אני יכול-לחץ לחיצה ימנית, ב בצד שמאל יש ולבחור תיקייה חדשה וליצור ספריית pset2. שיעבוד מדי. אבל אז אני גם עושה את זה ב שורת הפקודה די מהר, על ידי ההקלדה אני mkdir, space-- הקליד n, but-- pset2 החלל. אם אני על Enter ולאחר מכן אני ברשימה תוכן של הספרייה שלי שוב, אני רואה את זה, נראה, עכשיו יש לי תיקיית pset2. ואני יכול לנווט ל שבאמצעות CD ולעשות כל העבודה שאני צריך לעשות לpset2. אגב, אני פשוט אקפוץ כאן באמת במהירות לעץ הקובץ. ואתה יכול לראות את זה, גם, ב סייר קבצים הגרפי, אנו יכולים לראות כי ספריית pset2 גם נוצר שם. ואני יכול לנווט אליו, באמצעות GUI גם כן. בפעם הבאה, וזה כנראה הולך להיות שימושי הוא cp, שהוא קיצור של עותק. העתק, בניגוד לכל אחר פקודות שראינו בעבר, לוקח שני טיעונים, מקור, שמו של הקובץ שברצונך להעתיק, ויעד, שבו אתה רוצה להעתיק את הקובץ ל. זה די קל להעתיק קובץ, אז בואו נעשה את זה. 

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

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

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

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

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

אם אני רוצה לעשות את זה, מה אני יכול לעשות הוא CP-R, לpset3 רקורסיבית, pset0. לחץ על Enter. עכשיו, אם אני ברשימה תוכן של הספרייה שלי, אני רואה שיש pset3 ספרייה שאני יכול לעבוד איתו. ואם אני cd לpset3 עכשיו ו אז רשימה של התוכן, להסתכל, יש מדגם וscratch.sb2 שוב. אז זה די מגניב. אז ככה אתה יכול להעתיק כל ספרייה, ולא רק קובץ יחיד. אז אם אתה רוצה להעתיק ספרייה, רק לזכור להשתמש בדגל -r כשאתה עבודה עם פקודת cp. בסדר. אז אני כבר העתקתי קובץ, אבל אני כבר עשיתי את זה בטעות. ועכשיו, אני רוצה להיפטר ממנו. איך אני עושה את זה? שוב, אם אתה מכיר עם ממשק GUI, יכול לחץ לחיצה ימנית עליך ורק לבחור מחק. וזה ישלח אותו ל אשפה או את סל המיחזור. אבל בשורת הפקודה, אנחנו יכול פשוט להקליד rm, להסרה, ולאחר מכן את שמו של קובץ שאנחנו רוצים להיפטר ממנו. 

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

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

שוב, רק RM. אז אני יכול להקליד hi.txt rm ולחץ על Enter. ויש ישות RM באמת זהיר עבורנו ולוודא שאנחנו באמת רוצה למחוק קובץ זה. האם אתה באמת רוצה להסיר hi.txt קובץ הריק רגיל? זה בדיוק כמו הפעלה מערכת, כמו Windows או Mac, שאתה יכול להיות מכיר צץ תיבה שאומרת שאתה באמת בטוח שאתה רוצה לעשות את זה. 

אני די בטוח שאני רוצה זה, אז אני הולך להקליד, yes-- או שאני יכול גם פשוט הקלד y-- ולחץ על Enter. ואם אני ברשימת התוכן שלי ספרייה שוב, hi.txt נעלמה. לא רע, נכון? בואו L בקרת העיתונות, רק להיפטר מכל הדברים האלה ולקבל אותנו בחזרה ב החלק העליון של המסך. 

עכשיו, יש דרך ל rm הקצר, כך שזה לא שואל אותנו את שאלה הזאת. אנחנו באמת יודעים שאנחנו רוצים להיפטר מקובץ ש, ואנחנו אפילו לא רוצים להישאל השאלה. איך אנחנו עושים את זה? ובכן, אנחנו יכולים לציין דגל נוסף, בדיוק כמונו עשיתי עם cp בנו יכול להוסיף דגל -r, כדי להעתיק באופן רקורסיבי לספרייה. יש דגל נוסף לrm, שהוא -f, אשר הוא להכריח rm לעשות בדיוק מה שאנחנו אומרים לו לעשות. 

אז בואו נגיד ש, עכשיו, אני רוצה להיפטר מקובץ hello.txt. גם אני לא רוצה שאחד. מה אני יכול לעשות? ובכן, אני יכול RM hello.txt -f. מה אתה חושב הוא הולך לקרות כאן? זה נעלם. אפילו לא שאל אותי את השאלה. ולמעשה, אם אני ברשימת התוכן של הספרייה שלי שוב, הוא נעלם. אין לבטל כאן. hello.txt נעלם, ואני לא היה אפילו שאל אם אני רוצה למחוק אותו. מה אם אני רוצה להיפטר של כל ספרייה? הדרך בה אתה עושה את זה היא דומה מאוד להעתקה. אם ברצונך למחוק ספרייה, שאתה עושה לא רק רוצה למחוק את הספרייה, אתה רוצה כדי למחוק את כל מה שבתוכה. ואז אתה משתמש ב-r, ל באופן רקורסיבי למחוק ספרייה. 

אז בואו RM pset2 -r. אני לא ממש עובד על pset2, אז אני יכול להיפטר מספרייה ש. אני מכה על Enter. האם אני רוצה להסיר הספרייה, pset2? כן אני כן. ואם אני רשימה של התוכן הספרייה שלי שוב, הוא נעלם. בסדר? 

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

עכשיו, אתה הולך להיות ממש היזהר כאשר אתה משתמש ב-rf rm. כפי שאתה לתכנת יותר, זה יהיה משהו שאתה פשוט עושה ממש במהירות. ולמעשה, אני עושה את זה כל הזמן. אבל זה יכול להוביל לכמה תוצאות הרות אסון, אם אתה בטעות להסיר את הדבר הלא נכון. אז אני רוצה שתהיו מודע לכך ש זו אופציה זמינה לך, אבל להשתמש בו במשורה, ולהשתמש בו בזהירות. 

אני יודע בוודאות שאני לא עובד על הבעיה שלי להגדיר 3 יותר, ולכן אני הולך להיפטר מכל אותם הקבצים. ואני יודע שאני לא רוצה להישאל בכל פעם אם אני רוצה למחוק קובץ, אז אני הולך ל RM pset3 -rf. אפילו לא שאל אותי אם אני רציתי להיפטר ממנו. אני מכה LS. pset3 נעלם. אז זה בכל הווריאציות ש יכול להשתמש בו כדי להיפטר מקבצים עם rm. 

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

אז אני בpset1 ספרייה, ושמתי לב משהו הלך קצת לא בסדר. אני עובד על הבעיה שלי חמדן, אבל אני שם את זה בטעות greddy. לכן, כאשר אני מנסה להפעיל אותו ודרך check50, זה לא ממש עובד. יש לי כמה אפשרויות. אנחנו יכולים לעשות את מה שעשינו לפני, אשר הוא ליצור עותק של הקובץ. אני יכול להעתיק greddy.c לgreedy.c, נכון? לחץ על Enter. אני רואה ששני הקבצים נמצאים שם. ואז אני יכול RM, כדי להסיר, greddy.c. שמקבל להיפטר ממנו. אז זה יעבוד, אחרי שאאשר שאני רוצה להיפטר ממנו. ואני באופן יעיל יש לי greddy.c שם לgreedy.c. אני העתקתי אותו, ולאחר מכן הוסר המקורי. 

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

אז בואו נגיד, הו, עשיתי טעות. אני באמת באמת רוצה לקרוא שgreddy.c קובץ. במחי יד, אני יכול להקליד להעביר greedy.c לgreddy.c. לחץ על Enter. ועכשיו, לא היה לי להעתיק ולהסיר אותו, אני רק יכול היה לשנות את זה. one-stop shopping. 

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

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