תוציאו את המיטב מהטרמינל שלכם

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

תמונת היום

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

Bing

משיכת כתובת ה - URL של תמונת היום מ - bing:

$ printf "http://bing.com/az/hprichbg/rb/" \
&& curl bing.com -Ls | grep -oE "\w+.jpg" | head -n1

אפשר להגדיל לעשות, ולהגדיר את התמונה כרקע עם feh:

$ url=$(printf "http://bing.com/az/hprichbg/rb/" \
&& curl bing.com -Ls | grep -oE "\w+.jpg" | head -n1)
$ feh --bg-scale --no-fehbg "$url"

לשמחתי, feh יכול להגדיר תמונת רקע מכתובת URL, כך שאנחנו לא צריכים להוריד את התמונה.
אם אתם רוצים קצת יותר, מקמו את הפונקציה הבאה בקובץ ה - bashrc שלכם:

set-wallpaper() {
    name=$(curl bing.com -Ls | grep -oE "\w+.jpg" | head -n1)
    path="/home/$USER/Pictures/${name}"
    if [ -f "$path"  ];then
        feh --bg-scale --no-fehbg "$path"
    else
        curl -o "$path" -Ls "http://bing.com/az/hprichbg/rb/${name}"
        feh --bg-scale --no-fehbg "$path"
    fi
}

השוואת תאריכים

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

datediff() {
    day_1=$(date -d "$1" +%s)
    day_2=$(date -d "$2" +%s)
    echo $(( (day_1 - day_2) / 86400   )) days | sed 's/-//g'
}

כשתצטרכו לבדוק כמה זמן עבר מאז שהזמנתם את ה - Raspberry pi שלכם, תריצו:

$ datediff '01 aug' '20 aug'
19 days

בדיקת דואר-אלקטרוני

אחד הפיצ'רים היותר שימושים ב - Gmail, הוא הפיד URL שמאפשר לבדוק האם התקבלו הודעות חדשות, מבלי להתחבר לממשק.
חשוב לזכור: הרצת הפקודה מהטרמינל אינה מומלצת עם שם משתמש וסיסמא חשופים! תשתמשו בסקריפט עם קובץ pgp מוצפן.

$ data=$(curl -s -u "USER:PASSWORD" https://mail.google.com/mail/feed/atom)
$ printf "$data" | grep -oPm1 "(?<=<title>)[^<]+" | wc -l
12

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

$ data=$(curl -s -u "USER:PASSWORD" https://mail.google.com/mail/feed/atom)
$ printf "$data" | grep -oPm1 "(?<=<title>)[^<]+"
Hello, World
Email from x.

אם אתם משתמשים באימות דו-שלבי, תיצרו "App password" ספציפי לפיד.

תהליכים לבני-אדם

הפקודה ps מציגה את התהליכים הרצים במערכת, אם תרצו ליצור פליט קריא יותר, תריצו את הפקודה:

$ ps ax --sort -pcpu,-%mem -o pcpu,comm,%mem \
  | grep -v 0.0 | grep -v ps

%CPU COMMAND         %MEM
6.0 bash             0.2
3.0 bash             0.1
1.2 vim              0.2
0.9 Xorg             0.7

בדיקת יתרה בארנק Bitcoin

שימוש ב - Blockchain API בכדי לקבל את מצב היתרה של ארנק ביטקוין.

$ curl -sL blockchain.info/q/addressbalance/1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN \
  | python -c 'import sys;print("%.09f BTC" % (int(sys.stdin.read()) / 100000000))'
0.011884400 BTC

כתובת ה - bitcoin בדוגמה היא של ה - FSF, שנו אותה בהתאם. תשתדלו לא לנצל את ה - API כי אתם תיחסמו די מהר.

כלים למפתחים

קיצור כתובת URL

ב - git.io, אני משתמש לא מעט והוא שימושי רק ל - Github כמובן:

gitio() {
    if [ -z "${1}" -o -z "${2}"  ]; then
        echo "Usage: gitio [url] ...";
        return 1;
    fi;
    curl -i http://git.io/ -F "url=${2}" -F "code=${1}";
}

העלאת קבצים

הדרך הכי מהירה להעלאת קבצים מהטרמינל היא transfer.sh. לא הייתי ממליץ על העברת קבצים עם תוכן רגיש, אבל לשאר זה מעולה. את קוד המקור של השרת תוכלו למצוא פה (נכתב ב - Go)

upload-file() {
    if [ -z ${1} -o -z "${2}" ];then
        echo "Usage: upload-file [file] [name]"
        return 1
    fi
    curl --upload-file "${1}" "https://transfer.sh/${2}"
}

בדיקת גרסת הפיתוח האחרונה של לינוקס

שימושי אם אתם אתם עוקבים אחרי הפיתוח של הקרנל.

$ curl -Ls https://github.com/torvalds/linux/releases \
 | grep -oPm1 "(?<=<pre class=\"text-small text-gray\">)[^<]+"
Linux 4.14-rc3

הורדת חבילה - AUR

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

aur-dl() {
    if [ -z "$1" ];then
        echo "Usage: aur-dl [package name] ..."
        return 1
    fi

    pkg_name="${1}"
    curl -O -L "http://aur.archlinux.org/cgit/aur.git/snapshot/${pkg_name}.tar.gz" -s -f

    if [ $? -eq 22  ];then
        echo "${pkg_name} not found."
        # rm "${pkg_name}.tar.gz"
        return 1
    fi
}

סיכום

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