23/05/2024

מדריך לינוקס למתחילים בעברית חלק 10 - הפקודה ls בלינוקס - בהרחבה.


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

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

¿? שימו לב - מאחר ולפקודה הזאת יש המון פרמטרים, עברתי כאן על אלו שהן לדעתי הכי חשובות ומעניינות¿?

1) איך להציג "רשימה ארוכה" (מפורטת): l- 
2) איך להציג קבצים מוסתרים : a-
3) איך לסדר קבצים ותיקיות לפי זמן?: t-
4) איך לסדר את הקבצים בסדר הפוך (נגיד מ 9 ל 0, כש 9 יהיה ראשון): r-
5)איך לסדר את הקבצים לפי הגודל: S-
6)איך לסדר את הקבצים ותיקיות רקורסיבית כולל תתי תיקיות: R-
7) איך להציג את הקבוצה האחראית על הקובץ (שם של הקבוצה שבה נמצא המשתמש שאחראי על הקובץ\תיקייה): g- 
8) איך להציג את פרטי קובץ\תיקייה בצורה ברורה יותר: h-
9) איך להציג את יוצר הקובץ  ה "Owner" של הקובץ\תיקייה: author--
10) הצגת הזמן המלא שבוא נוצר הקובץ\תיקייה?: full-time--
11) איך "לכבות" את תצוגת הצבעים לפי סוגי האובייטק (הכל יהיה אותו צבע): f-
12) איך להציג סימונים ליד תיקיות שיהיה ברור שזאת תיקיה? "/": F-
13) איך להציג את התוכן של התיקייה בתור רשימה מופרדת עם "פסיק"?: m-
14) איך לסדר את התצוגה לפי זמן עריכה אחרון?: u-
15) איך לשנות את התצוגה של הפלט: format--

1. איך להציג רשימה מלאה (מפורטת) של קבצים ותיקיות -  ls -l

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



לכן בשביל שנוכל לקבל מידע רב יותר בצורה נוחה לנו, ניתן לבצע סינון בשלל צורות, נתחיל עם הדבר הכי פשוט, להציג את הקבצים והתיקיות עם יותר מידע, נקיש את ls עם הפרמטר l- (האות L רק בקטן.) ls -l


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

מקרא - פירוש העמודות:

* העמודה הראשונה מצד שמאל: מסמנת את ההרשאות על הקובץ\תיקייה משמאל מסמנת את ההרשאות שיש על הקובץ הזה, הרשאות מתחלקות לשלושה קבוצות, בנוסף יש שלוש רמות של הרשאות:
    * R - קריאה READ
    * W - כתיבה WRITE
    * X - הפעלה EXECUTE.

    השלישיה הראשונה - מדברת על הרשאות של המשתמש שלנו על הקובץ\תיקיה
    השלישיה השניה - מדברת על הרשאות של הקבוצה שבה אנחנו נמצאים על הקובץ\תיקייה
    השלישיה השלישית - מדברת על הרשאות של מישהו שהוא לא המשתמש עצמו ולא נמצא בקבוצה שלנו.

העמודה השניה - שם המשתמש שהוא בעל הקובץ (במקרה שלי זה lev)

* העמודה השלישית - שם הקבוצה שאליה המשתמש שייך (במקרה שלי אני בקבוצת lev).

* עמודה רביעית - גודל הקובץ\תיקייה, הגודל מופיע ב"בייט" כל אות היא בייט אחד, התיקיות לא סתם אותו גודל כולן           4096 (מי שרוצה להבין יותר, יכול לקרוא על "מבנה נתונים" במערכת UNIX שנקרא inode).

* עמודה חמישית - תאריך, מה שרואים כאן, הוא "מתי בוצע שינוי אחרון לקובץ" (ככה זה בברירת מחדל), אם לא כתוב את     שנת השינוי, זה אומר שהשינוי בוצע רק בחצי שנה האחרונה.

2. איך להציג קבצים מוסתרים בלינוקס - הפקודה ls -a:

 קבצים מוסתרים בלינוקס מסומנים בעזרת "נקודה" בתחלת הקובץ לדוגמא: lev1.txt.
נריץ את הפקודה ls -l ונראה שאנו לא רואים קבצים עם "נקודה" בהתחלה:


עכשיו נריץ את ls -a ונראה שפתאום התווספו לנו קבצים חדשים עם "נקודה" בהתחלה:


בשביל שהתצוגה תהיה יותר נוחה, נוסיף את הפרמטר l- (האות L בקטן) בנוסף ל a ונקבל ls -al ועכשיו אפשר לראות קבצים עם "נקודה" בהתחלה:



בנוסף אנחנו יכולים לראות עוד שתי דברים "נקודה" אחת ו "שתי נקודות" הכי למעלה בטבלה:


* נקודה אחת - מייצגת את התיקייה הנוכחית שאנחנו נמצאים בה
* שתי נקודות - אומר שיש תיקייה אחת לפני התיקייה הנוכחית - תשימו לב שבשביל לחזור לתיקייה אחת אחורה, אתם           מקלידים" .. cd"

3. איך לסדר קבצים ותיקיות לפי זמן, הפקודה ls -t

כמו בדוגמא הנ"ל אם אני אריץ רק ls -t לא אקבל את המידע שאני צריך ,לכן אני מבצע צירוף של פרמטרים ומשתמש פקודה עם הפרמטר t, ונקבל ls -lt



4. איך סדר את הקבצים בסדר הפוך (נגיד מ 9 ל 0, כש 9 יהיה ראשון): ls -r?

במקרה הזה נוכל להציג את המידע בסדר הפוך במידה ונריץ ls -r ואכן נקבל סדר הפוך של הקבצים:


אך הרבה יותר ברור ונוח יהיה להשתמש בפרמטר בשילוב עם l- (האות L בקטן) ls -lr:


5.איך לסדר את הקבצים לפי הגודל הפקודה ls -S?

גם הפעם אשלב את הפרמטר S- עם L (בקטן) בשביל לקבל תוצאה יותר טובה ls -lS


6 איך לסדר את הקבצים ותיקיות רקורסיבית כולל תתי תיקיות: ls -R?

במקרה הזה, אני אקבל את התוצאה שאני רוצה (אנחנו נקבל רשימה של תיקיות וקבצים עם הנתיב של כל קובץ ותיקייה) אך אני בכל מקרה מעדיף לשלב עם L (בקטן) בשביל לקבל תוצאה יותר ברורה ls -lR:




7. איך להציג רק את המשתמש האחראי על הקובץ\תיקייה? הפקודה ls -g

בצורה הזאת אנחנו לא נציג את הקבוצה שאחראית על הקובץ אלה רק את המשתמש שאחראיעל הקובץ, זה נראה כמט זהה, לפקודה ls -l, לכן אבצע קודם כל את הפקודה בלי הפרמטר L (בקטן) ולאחר מכן עם, תשימו לב שיש כאן שתי עמודות, שם קבוצה ושם משתמש (דיברנו על זה למעל):



כעת אריץ את הפקודה עם הפרמטר g- ונוכל לראות שעמודה אחת תיעלם:


וככה זה נראה כשאר מריצים את הפקודה הזאת אחת אחרי השניה:


8. איך להציג את  פרטים על תיקיות וקבצים בצורה יותר ברורה הפקודה ls -h

כאשר אנחנו מבצעים ls -l אנחנו מקבלים הכל בביטים ולך תתחיל לתרגם את זה למגה בייט וגיגה בית וכד', אז כנראה הממציא של לינוקס הבין את זה (אני לא זוכר את שמו האמת..יש בויקי) ויצר פרמטר שנקרא h- הכוונה "human" שיהיה לנו יותר קל להבין את כל המידע שיש, אז אנחנו נשלב אותו עם ls-l ונקבל ls -lh :



לצורך הבדל, הינה פעם אחת בלי h ופעם אחת עם:


9. איך להציג את יוצר הקובץ\תיקייה הפקודה ls -l --author

במידה ואנחנו נרצה להבין מי יצר את תיקייה, נוכל להוסיף את הפרמטר author-- (עם שתי "-") ונקבל עמודה שלישית שבה נראה את מי שיצר את התיקייה או הקובץ:


10 איך להציג את הזמן המלא שבו נוצר אובייקט הפקודה ls --full-time

במידה ותרצו לדעת מתי ממש במדויק נוצר קובץ כלשהו, ניתן להריץ את הפקודה ls --full-time




11 איך להפסיק את סימון הצבעים של תיקיות וקבצים הפקודה ls -f

אז אם מסיבה כלשהיא החלטתם שאתם לא רוצים לראות הבדלים של תיקיות וקבצים ואתם רוצים לראות את הכל באותם צבעים (לא ממש יודע למה לכם) אז ניתן להריץ ls -f:



12. איך להציג את סוג אובייקט? "/"  הפקודה ls -F

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



כמובן שניתן לשלם עם האות L (בקטן):



13. איך להציג את התוכן של התיקייה בתור רשימה מופרדת עם "פסיק" הפקודה ls -m

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


14 איך להציג את הקבצים\תיקיות לפי זמן עריכה אחרון הפקודה ls -u


15 איך לשנות את התצוגה של הפלט הפקודה  ls --format=[parameter]

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

ls –-format=across
פורס את התצוגה על גבי כל המסך שלכם:


ls --format=comma
יפריד את כל הקבצים עם "פסיק":


ls --format=horizontal
יסדר את כל הקבצים בצורה אנכית:



ls --format=long
יתן מידע מפורט:



ls --format=single-column
יסדר את כל הפלט לעמודה אחת:



ls --format=vertical
מסדר את הכל בצורה אנכית :



ls --format=verbose
נותן הרבה מאוד מידע מפורט - נוסף לכל שם קובץ, מוצגים סוג הקובץ, הרשאות הקובץ, מספר הקישורים לקובץ, שם הבעלים, שם הקבוצה, גודל הקובץ בבתים וחותמת זמן:




זה הכל להפעם, כמו תמיד המייל שלי לכל שאלה levl@leidertech.co.il.

כמו תמיד, מצורף סרטון של המדריך:


20/05/2024

מדריך לינוקס למתחילים בעברית חלק 9 - סינון וחיפוש עם grep


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

במדריך זה נלמד:
1) מה זה grep בלינוקס?
2) מתי משתמשים ב grep?
3) איך לסנן תוצאות עם grep בלינוקס?
4)איך לבצע חיפוש תוכן של קבצים עם grep בלינוקס?



1.אז מה זה בעצם grep?
הפקודה grep היא ראשי תיבות של "Global Regular Expression Print", שבגדול זה רצף תווים שמגדיר תבנית חיפוש - וזה ממש ממש ממש ממש בקצרה..

2.מתי משתמשים ב grep בלינוקס?
בעצם השימוש בפקודה הזאת מתבצע כמה מקרים, פעם אחת כאשר אנחנו רוצים לבצע נגיד חיפוש בתוך תצוגה כלשהי, לדוגמא אם יש לי רשימה ענקית של תהליכים ואני רוצה תהליך מסוים, אז אני יכול להגיד ללינוקס שיראה לי רק תהליך מסוים בפלט שלו, או לחלופין, ברגע שאני מחפש נגיד מילה בתוך קובץ, זאת אומרת אפשר להשתמש ב grep בתור פקודה לאחר שהוא מקבל מידע ב"צינור" (Pipeline) או בתור פקודה עצמאית לגמרי שמבצעת חיפוש כזה או אחר בתוך קבצים\תיקיות במחשב שלנו.

3.איך לסנן תוצאות עם grep בלינוקס?

נתחיל מהדבר הכי פשוט שאפשר, איך למצוא כתובת IP במחשב שלכם? בווינדוס, הדברים יחסית פשוטים, בלינוקס אם אנחנו נשתמש בפקודה ifconfig (המקבילה של ipcoinfig) בווינדוס, נקבל מידע קצת שונה, בעיקרון בלינוקס זה יותר דומה לפקודה ipconfig /all לפי כמות המידע שמקבלים.
על מערכות חדשות אין את הפקודה ifconfig, אז צריך להתקין "כלי תקשורת",לצורך כך,
נריץ את הפקודה sudo apt install net-tools



במידה והכל עבד אצלכם תקין, זה יראה ככה:



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


אנחנו יכולים לראות כאן שקיבלנו המון המון מידע, ודיי צריך לנחש מי פה כתובת ה IP, עכשיו תתארו לכם שאתם על שרת עם 4 כרטיסי רשת? אז בדיוק במקרה הזה מגיעה הפקודה grep שעובדת גם על MAC באותה הצורה, לצורך הסינון אני יכול לבחור לחפש לפי inet או לפי כתובת ה IP לדוגמא: ifconfig |grep inet:


נראה קצת יותר קריא לא?, עכשיו בוא ננסה לפי "172": ifconfig |grep 172


לדוגמא, אם אני רוצה לחפש את הפרוסס SSH ולבדוק מה המצב שלו אני ארשום ps aux |grep ssh


נגיד ואני רוצה לקבל מידע אודות פעולות עם קבצים מתוך העזרה של הפקודה "cp" אני ארשום "man cp|grep "file



בנוסף עם הפקודה grep אפשר לבצע "פילטר" לקבלת פלט הרבה יותר מדויק, לדוגמא אם אני רוצה להציג רק קבצים מסוג מסוים, אני אשתמש בפקודה ls ואעביר ל grep את הפלט עם ההגדרות שאני רוצה "ls -l |grep "doc



ניתן לעשות גם "פילטר" הפוך, להציג את כל מה שלא כולל את הסיומת doc בערת הפרמטר v-,
בצורה הזאת: "ls -l |grep -v "doc




4. איך לבצע חיפוש תוכן של קבצים עם grep בלינוקס?

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

לדוגמא, נגיד ואני רוצה למצוא את כל כתובות ה IP שמתחילות ב 10.20, בקובץ שיש לי, אני אכתוב את הפקודה, לאחר מכן מה אני מחפש ואז את שם הקובץ grep 10.20 pc_list.txt


אם אני רוצה להציג לדוגמא את כמות השורות שיש בקובץ הזה, אני אוסיף את הפרמטר n-
grep -n 10.20 pc_list.txt


נגיד ואני רוצה למצוא את כל הקבצים שיש בהם את כתובות IP מסוימות ואני לא זוכר באיזה קובץ רשמתי את זה אשתמש בפרמטר r- (רקורסיבי):
/grep -r "10.20.28" ~/Desktop



אותו דבר לגבי כל דבר אחר כמובן, לדוגמא נחפש את המילה "linux" בתוך הקבצים שיש בשולחן העבודה, בכוונה יצרתי הרבה קבצים (אני אתן לכם להוריד אותם בסוף המדריך) אם אני ארשום לו לחפש רקורסיבית הוא יראה לי באיזה קבצים יש את המילה, אבל אם אני אוסיף לו גם את הפרמטר i- (הכוונה "Ignore") שהוא מתעלם מאותיות גדולות וקטנות, אני אקבל תוצאה עם הקבצים שבהם יש את המילים שאני מחפש במקרה הזה "linux", אז ראשית נראה את הדוגמא בלי i-:

הפקודה: grep -r ["what_to_search"] [path]



ועכשיו עם הפרמטר i-:
 /grep -ri "linux" ~/Desktop
הרישום "ri-" הוא לא טעות, ניתן לרשום בלינוקס בשתי דרכים, או כל פרמטר בנפרד עם "-" או פשוט לשלב אותם ביחד:

הפקודה הזאת : grep -r ["what_to_search"] [path]
והפקודה הזאת:  /grep -ri "linux" ~/Desktop

יעבדו באותה הצורה, זה אחד הדברים היפים בלינוקס.



אם אני רוצה לבדוק כמה פעמים המילה linux מופיע בקבצים האלה, אני אשתמש בפרמטר c-, עשיתי בדיקה בכוונה בשביל להראות לכם את זה שלינוקס מבדיל במילים עם אותיות גודלות לבין מילים עם אותיות קטנות, לכן הרצתי את אותה הפקודה פעמיים, אחת עם הפרמטר c- והשניה בלי הפרמטר: /grep -rc "linux" ~/Desktop




נגיד ואני רוצה להציג את כל הקבצים שבהם אין את המילה linux - כן יש דבר כזה "סינון הפוך" אני אשתמש בפרמטר v-
ואוסיף אותו לפרמטרים האחרים נשתמש בפרמטר r- (רקורסיבי) i- (התעלם מאותיות גדולות קטנות) ו v- ובעצם נקבל פקודה כזאת: /grep -riv "linux" ~/Desktop



נגיד ואני נמצא בתיקייה מסוימת ואני רוצה למצוא את כל הקבצים שיש בהם את המילה linux, אני אשתמש כמובן בפרמטר i- ואז אשתמש ב "*" עם המילה שאני רוצה למצוא:* grep -i linux 


אם אני רוצה להציג נגיד את כל הקבצים שבהם מופיעה המילה linux בלי התוכן עצמו אשתמש בפרמטר l- (רשימה "List") והפקודה תראה ככה:  * grep -irl linux 



זה הכל להפעם.

המייל שלי לכל שאלה :levl@leidertech.co.il

קבצי הטקסט שיהיה לכם עם מה "לשחק" - כאן

ההורדה מתבצעת מהאיחסון Google Drive


כמו תמיד, סרטון מצולם של המדריך: