Az alias egy parancs rövidítése, amellyel könnyebben megjegyezhető. A shell-szkript egy parancssort tartalmazó szöveg, amely elkerüli a parancsok egyenkénti beírását.
Példa egy álnévre:
Íme néhány álnév és shell szkript, amelyeket nagyon gyakran használok. Bash/zsh kompatibilisek.
Alap szkriptek
"gr" a "grep -i" helyett
A leghasznosabb parancsikon, amit használtam,
5 betűvel kevesebb, de legalább millió billentyűleütést megspóroltam ;)
alias gr="grep -i"
os() függvény
Az "os" függvény segít nekünk az operációs rendszer nevét megadni - "OSX", "Linux", "MS Windows", "Egyéb OS" - Gyakran váltok Linux és MacO között, ezért rendszerekkel kompatibilis szkriptekre van szükségem. .
function os { case "$(uname -s)" in Darwin) echo 'OSX' ;; Linux) echo 'Linux' ;; CYGWIN*|MINGW32*|MSYS*|MINGW*) echo 'MS Windows' ;; *) echo 'Other OS' ;; esac }
függvény clip_copy()
A clip_copy egy rendszerkompatibilis vágólapmásolat Linux/Mac Os rendszerhez.
A cikk későbbi részében sokszor használom ezt a funkciót.
Példa:
echo ‘test’ | clip_copy
Ezzel a 'teszt' karakterláncot a rendszer vágólapjára másolja.
Mac OS esetén telepíteni kell a `pbcopy' eszközt.
Linux felhasználóknak szükség lehet az autocutsel eszközre a CUT puffer és a rendszer vágólapjának szinkronizálásához: `autocutsel -villa & autocutsel -kiválasztás ELSŐDLEGES -villa`
function clip_copy { read text myos=$(os) if [[ $myos == "Linux" ]] then # tr will remove colors and new lines ^M echo $text | tr -d '[:cntrl:]' | xclip -selection clipboard else echo $text | tr -d '[:cntrl:]' | pbcopy fi }
Git szkriptek
'menj' a 'git checkout' helyett
Ez az álnév valóban nyilvánvaló, de olyan sok programozót láttam, aki egész parancsokat ír be az egyszerű go
helyett. Természetesen ez sok más git parancsra is vonatkozik, mint például a commit, push & pull.
alias go="git checkout"
a "git stash" és a "git unstash" parancsikon
alias stash="git stash -u" alias unstash="git stash pop"
könnyen válthat git ágakat
az utoljára használt ágak megjelenítése a véglegesítés dátuma szerint rendezve. A „gbso” a „git branch sorted” rövidítése
function gbso { git for-each-ref — sort=-committerdate refs/heads/ — format=’%(refname:short)’ | head -n 30 }
Most itt van egy függvény, amit sokat használok: gob
– a „go branch” rövidítése.
Ez megmutatja nekünk a legutóbb módosított ágak listáját (gbso
függvény), és lehetővé teszi, hogy gyorsan átváltsunk erre az ágra.
Írja be az „1” értéket, hogy a lista első ágára váltson.
function gob { gbso | head -n 30 | nl echo ‘Which branch: ‘ read branch_number branch_name=$(gbso | awk “NR==$branch_number” | tr -d ‘ ‘) git checkout $branch_name }
Íme egy bemutató:
Kubernetes szkriptek
az összes telepített kontextus listájának lekérése
alias k_c="kubectl config get-contexts"
számozott listával ellátott kubernetes környezetek váltása
function k_uc { kubectl config get-contexts | nl echo 'Which context: ' read action context_name=$(kubectl config get-contexts | awk "NR==$action" | awk '{print $1}') kubectl config use-context $context_name }
ez hasonló listát mutat, mint a gob
script
az összes aktuális kontextus névterének megjelenítése
alias k_n="kubectl get namespace"
könnyen beléphet a hüvelybe
A k_p_enter kilistázza az aktuális névtér összes sorát, és lehetővé teszi a gyors elérést vagy egy fájl másolását onnan
function k_p_enter_ssh { echo $2 echo "useful shortcuts:" echo "while :; do sleep 28; echo -en ' \\\b' >&2; done &" echo "bundle exec rails console -- --nomultiline" echo "bundle exec rails console -- --nomultiline" | clip_copy kubectl -n $1 exec -it $2 -- sh } function k_p_copy_file { echo $2 filename=$3:t echo "kubectl -n $1 cp $2:$3 $filename" kubectl -n $1 cp $2:$3 $filename } function k_p_enter { kubectl -n $1 get pods | nl echo 'Use c {number} to copy file, eg. c 1' echo 'Which action: ' read action action_prefix=$(echo $action | cut -d ' ' -f1) if [[ $action_prefix == 'c' ]] then pod_number=$(echo $action | cut -d ' ' -f2) echo $pod_number pod_name=$(kubectl -n $1 get pods | awk "NR==$pod_number" | awk '{print $1}') echo 'Path to file from app directory, for example. config/routes.rb' read path k_p_copy_file $1 $pod_name $path else pod_name=$(kubectl -n $1 get pods | awk "NR==$action" | awk '{print $1}') k_p_enter_ssh $1 $pod_name fi }
SSH
ssh-n keresztül csatlakozhat kedvenc szkriptjeihez
Telepítse kedvenc szkriptjeit egy távoli kiszolgálóra egy munkamenet időtartamára.
Töltse ki a `~/.bashrc_remote`-t kedvenc álneveivel és szkriptjeivel. Az ssh kapcsolaton automatikusan betöltődnek.
function sshs { ssh $@ "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote ssh -t $@ "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp" }
Fájlok kicsomagolása
fájl kibontása fájlkiterjesztés szerint
extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi }
Gyorsan másolja a fájl elérési útját a terminálról
Van egy nagyon hasznos Tmux bővítmény, a Tmux-Thumbs:
Az oldalon egy bemutató videó található.
Ez a beépülő modul meghatározott mintákat keres a terminál képernyőjén, például fájl útvonalakat vagy uuid karakterláncokat. Ezután a beépülő modul minden pozícióhoz hozzárendel egy ábécé betűjét – a felhasználó könnyen másolhatja ezeket a karakterláncokat a betűk beírásával.
Van egy hasonló bővítmény a Vim szerkesztőhöz: https://github.com/easymotion/vim-easymotion
A terminálszkriptek valóban sokkal könnyebbé tehetik az életet :)
Maksymilian Kołodziej