כיצד להשתמש בפקודות החתול וה-Tac של Linux

אמנות חלון מסוף בשולחן העבודה של לינוקס

Fatmawati Achmad Zaenuri/Shutterstock.com



ה- |_+_| וכן |_+_| פקודות מציגות את התוכן של קבצי טקסט, אבל יש בהן יותר ממה שנראה לעין. צלול קצת יותר לעומק ולמד כמה טריקים פרודוקטיביים של שורת הפקודה של לינוקס.

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





פיקוד החתול

|_+_| רגיל ל לבחון את התוכן של קבצי טקסט , וכדי לחבר חלקים של קבצים יחד כדי ליצור קובץ גדול יותר.

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



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

פרסומת

חיבורי פס רחב וסיבים גרמו לצורך המסוים הזה לדעוך - בדומה לצלילי חיוג צווחניים - אז מה נשאר |_+_| לעשות היום? די הרבה בעצם.

הצגת קובץ טקסט

יש |_+_| רשום את התוכן של קובץ טקסט לחלון מסוף, השתמש בפקודה הבאה.



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

cat

התוכן של הקובץ poem1.txt מוצג בחלון הטרמינל.

זה רק חצי מהשיר המפורסם. איפה השאר? יש כאן קובץ נוסף בשם poem2.txt. אנחנו יכולים לעשות |_+_| רשום את התוכן של מספר קבצים בפקודה אחת. כל שעלינו לעשות הוא לרשום את הקבצים לפי סדר בשורת הפקודה.

tac

זה נראה טוב יותר; יש לנו את כל השיר עכשיו.

שימוש בחתול עם פחות

השיר כולו שם, אבל הוא עבר את החלון מהר מדי מכדי לקרוא את הפסוקים הראשונים. אנחנו יכולים לצרף את הפלט מ-|_+_| לתוך |_+_| וגלול מטה בטקסט בקצב שלנו.

cat

פרסומת

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

מספור השורות בקובץ

אנחנו יכולים לאפשר לחתול למספר את השורות בקובץ כפי שהוא מוצג. לשם כך, אנו משתמשים ב- |_+_| אפשרות (מספר).

cat

הקווים ממוספרים כפי שהם מוצגים בחלון הטרמינל.

אל תספר שורות ריקות

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

cat

כעת שורות הטקסט ממוספרות, והשורות הריקות מדולגות.

אל תראה קווים ריקים מרובים

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

פרסומת

הפקודה הבאה תגרום |_+_| כדי להציג רק שורה ריקה אחת מכל חבורה של שורות ריקות. האפשרות שאנו צריכים כדי להשיג זאת היא |_+_| אפשרות (לחיצה-ריק).

cat

זה לא משפיע על תוכן הקובץ בשום אופן; זה רק משנה את הדרך |_+_| מציג את הקובץ.

הצג כרטיסיות

אם אתה רוצה לדעת אם רווח לבן נגרם על ידי רווחים או טאבים, אתה יכול לברר באמצעות |_+_| אפשרות (הצג כרטיסיות).

cat

הכרטיסיות מיוצגות על ידי התווים ^I.

הצגת קצוות השורות

אתה יכול לבדוק אם יש רווח לבן נגרר על ידי שימוש ב-|_+_| אפשרות (הצג קצוות).

cat

קצוות השורות מיוצגים על ידי התו $.

שרשור קבצים

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

less

בואו נשתמש ב-|_+_| כדי לבדוק את הקובץ החדש שלנו:

-n

פרסומת

הקובץ החדש שלנו מכיל את התוכן של שני הקבצים האחרים.

הוספת טקסט לקובץ קיים

זה עדיף, אבל למעשה, זה לא השיר כולו. הבית האחרון חסר. הבית האחרון ב-Jabberwocky זהה לבית הראשון.

אם יש לנו את הבית הראשון בקובץ, נוכל להוסיף את זה לתחתית הקובץ jabberwocky.txt, ונקבל את השיר המלא.

בפקודה הבאה, עלינו להשתמש ב-|_+_|, לא רק ב-|_+_|. אם נשתמש ביחיד |_+_| נו להחליף jabberwocky.txt. אנחנו לא רוצים לעשות את זה. אנחנו רוצים ל לְצַרֵף טקסט לתחתיתו.

cat

בואו נבדוק את התוכן של קובץ jabberwocky.txt:

-b

ולבסוף, כל חלקי השיר ביחד.

מפנה מחדש את הסטדין

אתה יכול להפנות קלט מהמקלדת לקובץ באמצעות |_+_|. כל מה שאתה מקליד מנותב לקובץ עד שתלחץ על Ctrl+D. שים לב שאנו משתמשים ביחיד |_+_| כי אנחנו רוצים ליצור את הקובץ (או להחליף אותו, אם הוא קיים).

cat

פרסומת

נוכל להתחיל להקליד ברגע שנוציא את הפקודה. נלחץ על Ctrl+D כשסיימנו. לאחר מכן נוכל לבדוק את תוכן הקובץ החדש באמצעות:

cat

זה נשמע כמו טורבינה רחוקה כנראה לואיס קרול מסתובב בקברו במהירות גבוהה.

פיקוד הטאק

|_+_| דומה ל-|_+_|, אך הוא מפרט את תוכן הקבצים בסדר הפוך .

בוא נראה את זה:

-s

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

שימוש ב-tac עם stdin

באמצעות |_+_| ללא שם קובץ יגרום לו לפעול על הקלט מהמקלדת. לחיצה על Ctrl+D תפסיק את שלב הקלט, ו-tac יפרט בסדר הפוך את כל מה שהקלדת.

cat

כאשר לוחצים על Ctrl+D, הקלט מתהפך ומופיע בחלון הטרמינל.

שימוש ב-Tac עם קבצי יומן

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

פרסומת

אנו משתמשים ב-|_+_| כדי לרשום את קובץ ה-syslog הפוך, ולהעביר אותו אל |_+_|. על ידי מספר |_+_| כדי להדפיס רק את השורה הראשונה שהוא מקבל (שבזכות |_+_| היא השורה האחרונה בקובץ), אנו רואים את הערך האחרון בקובץ syslog.

-T

|_+_| מדפיס את הערך האחרון מקובץ syslog ולאחר מכן יוצא.

שים לב ש |_+_| מדפיס רק שורה אחת - כפי שביקשנו - אבל השורה כל כך ארוכה שהיא עוטפת פעמיים. לכן זה נראה כמו שלוש שורות פלט בחלון הטרמינל.

שימוש ב-Tac עם רשומות טקסט

הטריק האחרון |_+_| יש בשרוול זה יופי.

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

נניח שיש לנו קובץ יומן מתוכנית כלשהי שעלינו לסקור או לנתח. בואו נסתכל על הפורמט שלו עם |_+_|.

-E

פרסומת

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

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

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

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

בואו נשתמש ב-|_+_| כדי להפוך את הקובץ. זה קובץ ארוך מאוד אז נעביר אותו אל |_+_|.

cat

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

פרסומת

רשמנו קודם לכן ששלוש השורות האחרונות בקובץ מתחילות בערכים הקסדצימליים 93, E7 ו-B8, בסדר הזה. הסדר של שורות אלה התהפך. כמו כן, הקווים =SEQ נמצאים כעת לְהַלָן כל קבוצה של שלושה קווים הקסדצימליים.

|_+_| להצלה.

>>

בואו נפרק את זה.

ה- |_+_| אפשרות (מפריד) מודיעה |_+_| במה אנו רוצים להשתמש כמפריד בין הרשומות שלנו. זה אומר |_+_| לא להשתמש באופי החדש הרגיל שלו, אלא להשתמש במפריד שלנו במקום זאת.

ה- |_+_| אפשרות (רגקס) אומרת |_+_| להתייחס למחרוזת המפריד כאל א הבעה רגילה .

ה- |_+_| אפשרות (לפני) גורמת |_+_| כדי לרשום את המפריד לפני כל רשומה במקום אחריה (שזה המיקום הרגיל של מפריד ברירת המחדל שלה, תו השורה החדשה).

ה- |_+_| (מפריד) מחרוזת |_+_| מפוענח באופן הבא:

ה- |_+_| תו מייצג את תחילת השורה. אחריו מופיע |_+_|. זה מורה |_+_| כדי לחפש כל מופע של =SEQ. בתחילת שורה, ואחריה כל רצף של ספרות (מסומן על ידי |_+_|), ואחריו כל קבוצה אחרת של תווים (מסומן על ידי |_+_|).

אנחנו מעבירים את כל הקטע לתוך |_+_|, כרגיל.

קובץ יומן הפוך עם רשומות נתונים שנוצרו כהלכה

הקובץ שלנו מוצג כעת בסדר הפוך כאשר כל שורת תווית =SEQ מופיעה לפני שלוש שורות הנתונים הקסדצימליות שלו. שלוש השורות של ערכים הקסדצימליים נמצאים בתוכן מְקוֹרִי סדר בתוך כל רשומת נתונים.

פרסומת

אנחנו יכולים לבדוק זאת בפשטות. הערך הראשון של שלוש השורות הראשונות של הקסדצימלי (שהיו שלוש השורות האחרונות לפני שהקובץ התהפך) תואם את הערכים שרשמנו קודם לכן: 93, E7 ו-B8, בסדר הזה.

זה די טריק עבור חלון מסוף one-liner.

לכל דבר יש מטרה

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

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

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

פקודות לינוקס
קבצים זֶפֶת · pv · חתול · טק · chmod · אחיזה · הבדל · sed · עם · איש · דחף · popd · fsck · testdisk · seq · fd · פנדוק · CD · $PATH · מביך · לְהִצְטַרֵף · jq · לְקַפֵּל · ייחודי · journalctl · זָנָב · מדינה · ls · fstab · זרק · פָּחוּת · chgrp · chown · לְהַאִיץ · תראה · מחרוזות · סוּג · לשנות שם · רוכסן · לִפְתוֹחַ · הר · umount · להתקין · fdisk · mkfs · rm · rmdir · rsync · df · gpg · אָנוּ · ננו · mkdir · מ · ב · תיקון · להמיר · rclone · שמץ · SRM
תהליכים כינוי · מָסָך · חלק עליון · נֶחְמָד · נחמדים · התקדמות · רצועה · מערכת · tmux · chsh · הִיסטוֹרִיָה · בְּ- · קבוצה · חינם · איזה · dmesg · usermod · נ.ב · chroot · xargs · tty · זרת · lsof · vmstat · פסק זמן · קִיר · כן · לַהֲרוֹג · לִישׁוֹן · סודו · שֶׁלוֹ · זְמַן · הוספה קבוצתית · usermod · קבוצות · לשוו · לכבות · לְאַתחֵל · תפסיק · כיבוי · passwd · lscpu · crontab · תַאֲרִיך · bg · fg
רשת netstat · פינג · traceroute · ip · ss · מי זה · fail2ban · bmon · אתה · אֶצבַּע · nmap · ftp · סִלְסוּל · wget · מי · מי אני · ב · iptables · ssh-keygen · ufw

קָשׁוּר: מחשבי Linux הטובים ביותר למפתחים וחובבי

קרא את הבא תמונת פרופיל עבור דייב מקיי דייב מקיי
דייב מקיי השתמש לראשונה במחשבים כשסרט נייר מחורר היה באופנה, ומאז הוא מתכנת. לאחר למעלה מ-30 שנה בתעשיית ה-IT, הוא כעת עיתונאי טכנולוגיה במשרה מלאה. במהלך הקריירה שלו, הוא עבד כמתכנת עצמאי, מנהל צוות פיתוח תוכנה בינלאומי, מנהל פרויקטים של שירותי IT, ולאחרונה כמנהל הגנת מידע. הכתיבה שלו פורסמה על ידי howtogeek.com, cloudsavvyit.com, itenterpriser.com ו-opensource.com. דייב הוא אוונגליסט של לינוקס ותומך בקוד פתוח.
קרא את הביוגרפיה המלאה

מאמרים מעניינים