Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

แฮ็ก Bash ที่ฉันชอบ

เมื่อคุณทำงานกับคอมพิวเตอร์ทั้งวัน การค้นหาคำสั่งที่ทำซ้ำได้และแท็กคำสั่งเหล่านั้นจะเป็นเรื่องดีเพื่อให้ใช้งานได้ง่ายในภายหลัง พวกเขาทั้งหมดนั่งอยู่ที่นั่น ซุกตัวอยู่ใน ~/.bashrc (หรือ ~/.zshrc สำหรับผู้ใช้ Zsh) รอที่จะช่วยปรับปรุงวันของคุณ!

ในบทความนี้ ฉันแบ่งปันคำสั่งตัวช่วยที่ฉันโปรดปรานบางส่วนสำหรับสิ่งที่ฉันลืมไปมาก ด้วยความหวังว่ามันจะช่วยคุณได้เช่นกัน ความปวดใจเมื่อเวลาผ่านไป

พูดเมื่อเสร็จแล้ว

เมื่อฉันใช้คำสั่งที่ใช้เวลานาน ฉันมักจะทำงานหลายอย่างพร้อมกัน แล้วต้องย้อนกลับไปและตรวจสอบว่าการดำเนินการเสร็จสิ้นแล้วหรือไม่ แต่ไม่ใช่อีกต่อไป ด้วยการวิงวอนที่เป็นประโยชน์ของ พูด (นี่คือบน MacOS; เปลี่ยนเป็นค่าเทียบเท่าในเครื่องของคุณ):

function looooooooong {
    START=$(date +%s.%N)
    $*
    EXIT_CODE=$?
    END=$(date +%s.%N)
    DIFF=$(echo "$END - $START" | bc)
    RES=$(python -c "diff = $DIFF; min = int(diff / 60); print('%s min' % min)")
    result="$1 completed in $RES, exit code $EXIT_CODE."
    echo -e "\n⏰  $result"
    ( say -r 250 $result 2>&1 > /dev/null & )
}

คำสั่งนี้จะทำเครื่องหมายเวลาเริ่มต้นและสิ้นสุดของคำสั่ง คำนวณนาทีที่ใช้ และพูดคำสั่งที่เรียกใช้ เวลาที่ใช้ และรหัสออก ฉันพบว่าสิ่งนี้มีประโยชน์มากเมื่อระฆังคอนโซลธรรมดาไม่สามารถทำได้

ติดตั้งตัวช่วย

ฉันเริ่มใช้ Ubuntu ในสมัยสุวิมล สิ่งแรกที่ฉันต้องเรียนรู้คือวิธีติดตั้งแพ็คเกจ และหนึ่งในนามแฝงแรกที่ฉันได้เพิ่มเข้าไปก็คือตัวช่วยสำหรับสิ่งนี้ (ตั้งชื่อตามมีมของวัน):

alias canhas="sudo apt-get install -y"

การลงนาม GNU Privacy Guard (GPG)

หากฉันต้องลงนามในอีเมล GPG โดยไม่ต้องมีส่วนขยายหรือแอปพลิเคชันให้ฉันทำ ฉันจะเลื่อนลงมาที่บรรทัดคำสั่งและใช้นามแฝงที่ดูน่ากลัวเหล่านี้:

alias gibson="gpg --encrypt --sign --armor"
alias ungibson="gpg --decrypt"

นักเทียบท่า

มีคำสั่ง Docker มากมาย แต่มี นักเทียบท่าเขียน คำสั่ง ฉันเคยลืม --rm ตั้งค่าสถานะ แต่ไม่ใช่อีกต่อไปด้วยนามแฝงที่มีประโยชน์เหล่านี้:

alias dc="docker-compose"
alias dcr="docker-compose run --rm"
alias dcb="docker-compose run --rm --build"

ตัวช่วย gcurl สำหรับ Google Cloud

อันนี้ค่อนข้างใหม่สำหรับฉัน แต่มีเอกสารจำนวนมาก gcurl เป็นนามแฝงเพื่อให้แน่ใจว่าคุณได้รับการตั้งค่าสถานะที่ถูกต้องทั้งหมดเมื่อใช้คำสั่ง curl ในเครื่องพร้อมส่วนหัวการรับรองความถูกต้องเมื่อทำงานกับ Google Cloud API

Git และ ~/.gitignore

ฉันทำงานมากใน Git ดังนั้นฉันจึงมีส่วนพิเศษเฉพาะสำหรับผู้ช่วยเหลือ Git

ผู้ช่วยที่มีประโยชน์มากที่สุดคนหนึ่งของฉันคือผู้ช่วยที่ฉันใช้โคลน GitHub repos แทนที่จะต้องวิ่ง:

git clone [email protected]:org/repo /Users/glasnt/git/org/repo

ฉันตั้งค่าฟังก์ชันโคลน:

clone(){
    echo Cloning $1 to ~/git/$1
    cd ~/git
    git clone [email protected]:$1 $1
    cd $1
}

แม้ว่าฉันจะลืมและหัวเราะคิกคักทุกครั้งที่ฉันดำดิ่งลงไปใน ~/.bashrc ฉันยังมีคำสั่ง "refresh upstream" ของฉันด้วย:

alias yoink="git checkout master && git fetch upstream master && git merge upstream/master"

ผู้ช่วยอีกคนสำหรับ Git-ville คือไฟล์ที่ละเว้นทั่วโลก ใน git config --global --list . ของคุณ คุณควรเห็น core.excludesfile . ถ้าไม่ ให้สร้างมันขึ้นมาแล้วเติมสิ่งที่คุณใส่ลงไปใน .gitignore ส่วนบุคคลของคุณเสมอ ไฟล์. ในฐานะนักพัฒนา Python บน MacOS สำหรับฉันนี่คือ:

.DS_Store     # macOS clutter
venv/         # I never want to commit my virtualenv
*.egg-info/*  # ... nor any locally compiled packages
__pycache__   # ... or source
*.swp         # ... nor any files open in vim

คุณค้นหาคำแนะนำอื่นๆ ได้ที่ Gitignore.io หรือใน Gitignore repo บน GitHub

ตาคุณ

คำสั่งผู้ช่วยที่คุณชื่นชอบคืออะไร? โปรดแบ่งปันในความคิดเห็น