GNU/Linux >> Linux Esercitazione >  >> Linux

Personalizzazione della shell Bash

La shell Bash è un ambiente di elaborazione dei comandi che molti amministratori di sistema e sviluppatori utilizzano ogni giorno. È stato sviluppato per la prima volta nel 1989 ed è stata la shell predefinita per molte distribuzioni da quando è stato creato Linux. Nella maggior parte dei casi, Bash o "Bourne-again shell" è il framework in cui stai lavorando ogni volta che apri la riga di comando. Ha anche un proprio linguaggio di scripting e vanta un numero enorme di utilità per chi ha la disciplina mentale per impararle.

Perché dovresti personalizzare la tua shell?

La shell Bash offre un sacco di utilità, ma non è un sistema perfetto. Nel corso degli anni, gli appassionati della riga di comando hanno trovato difetti e apportato miglioramenti in varie shell, e Bash non fa eccezione. Ci sono tonnellate di aggiunte che puoi apportare a Bash. Tutto, dalle modifiche significative alle funzionalità alle scorciatoie e alle modifiche estetiche apportate secondo i tuoi gusti personali. Detto questo, ognuno ha il proprio gusto estetico preferito, quindi mi concentrerò sulle modifiche alla funzionalità.

Inizia in piccolo

Il modo più semplice per iniziare a personalizzare la shell è scoprire dove viene trascorsa la maggior parte del tempo della riga di comando. Ti ritrovi a usare grep e netstat spesso? Ti muovi nel filesystem innumerevoli volte all'ora? Se sì, come puoi rendere queste attività più efficienti? Nel primo articolo che ho scritto per questo sito, ho parlato di uno script di automazione chiamato AutoHotkey. Sfortunatamente, funziona solo su Windows. Un lettore mi ha sfidato a trovare qualcosa che potesse usare per Linux per svolgere le stesse attività. Anche se non esiste una soluzione ben confezionata per questa sfida, puoi creare un alias per i comandi modificati all'interno della shell con lo stesso effetto. Anche se questo può richiedere un po' di tempo, se ti prendi il tempo per imparare a usare l'aliasing e crearne alcuni di tuo, sarai un amministratore di sistema più intelligente ed efficiente per questo.

Rick Greene, un membro della comunità Enable Sysadmin, ha condiviso uno dei suoi alias preferiti, dove si eleva alla shell di root usando sudo .

alias root="sudo su - root"

In effetti, lavora come root utente tenendo traccia delle sue azioni nel sistema utilizzando la propria password dell'account utente. Mentre il metodo preferito qui sarebbe usare il sudo comando prima di qualsiasi azione, il bello di questo esempio è che Bash consente a ogni utente di creare una soluzione che funzioni per lui! Puoi alias praticamente ogni comando nella tua shell. Ti consiglio di provare a creare alcuni dei tuoi alias ora.

[ Per informazioni sulla creazione di alias in Linux, consulta il mio articolo precedente. ]

X> f(x)

Se sei incline alla matematica, sai già di cosa stiamo parlando qui. Le funzioni sono uscite dagli incubi della tua classe e sono entrate nella tua vita lavorativa! La buona notizia qui è che questi sono piuttosto semplici e possono essere molto utili. Ci consentono un ponte tra l'aliasing e lo scripting completo. Il grande vantaggio qui è che puoi concatenare più comandi insieme. Diamo un'occhiata alla sintassi per la creazione di queste funzioni e un esempio pratico per l'uso. Per creare una funzione, utilizzare la seguente sintassi:

function_name () {command1; command2;}
#You MUST use a semicolon after each command, including the last. 

Come lo useremmo? Uno dei migliori esempi che ho visto in giro per il Web è una funzione che ti consente di creare una nuova directory e quindi spostarti immediatamente in quella directory. Quella funzione sarebbe simile a questa:

mkd () {mkdir -p $1; cd $1;}

Ora, se creiamo una directory chiamata func_test usando il mkd funzione, possiamo vedere che ci inserisce automaticamente nella nuova directory.

# mkd func_test
# pwd
# Home/user/func_test

La storia si ripete? Solo se vuoi...

Prima di scrivere questo articolo, ho contattato la nostra community di contributori per un feedback sui loro miglioramenti Bash preferiti. C'era un tema comune in tutti i feedback che ho ricevuto. Le persone vogliono cambiare il modo in cui Bash history opera. Una delle modifiche più utili che ho riscontrato è stata la possibilità di rimuovere le voci duplicate dalla history .

Seth Kenlon di Opensource.com ha inviato quanto segue dal suo .bashrc file. Consente la history per ignorare voci e comandi duplicati che iniziano con uno spazio.

"export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups"

Il cappellaio rosso Steve Newsted mi ha indicato un ottimo thread su StackExchange, in cui un utente stava cercando di modificare la history di Bash per ricordare tutto da ogni terminale sulla sua macchina pur avendo quella history essere accessibile da ogni terminale su detta macchina. Scopri la creatività della risposta di suntzuisafterU. Basta aggiungere quanto segue al tuo ~/.bashrc file.

#Avoid duplicates
HISTCONTROL=ignoredups:erasedups  
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Passi successivi

Ora puoi vedere la pletora di modifiche, ottimizzazioni e personalizzazioni disponibili in Bash. Questo articolo graffia solo la superficie di ciò che puoi fare all'interno del guscio. Esci ed esploralo tu stesso! Se hai un'aggiunta Bash preferita, sentiti libero di inviarla al team all'indirizzo [email protected]. Mi piacerebbe vedere alcune delle soluzioni creative che i nostri lettori stanno utilizzando!

[ Hai bisogno di ulteriore aiuto per iniziare con l'amministrazione del sistema Linux? Partecipa a un corso di amministrazione di sistema Red Hat. ]


Linux
  1. Navigazione rapida delle directory in Bash Shell?

  2. Il comando "eval" in Bash?

  3. Lo scopo di .bashrc e come funziona?

  4. Quali sono i parametri/variabili speciali della shell (bash)?

  5. Come leggere l'intero script della shell prima di eseguirlo?

.bashrc vs .bash_profile

Che cos'è la shell in Linux?

Funzioni nelle variabili Shell?

Il ciclo while negli script della shell

Comando Bash fc:utilizza facilmente Bash Shell come un professionista

Qual è la differenza tra &> e >&in bash?