Alias ​​bash utili e generazione di un elenco dei comandi più utilizzati


10

Ho trovato questo articolo che parla di un modo rapido per ordinare la cronologia di bash e vedere quali comandi usi di più:

cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30

Ti apre davvero gli occhi su quali compiti dovresti creare alias e su quali devi eliminare completamente.

Mi piacerebbe vedere un elenco ServerFault di alias da riga di comando consigliati che ti fanno risparmiare tempo sul lavoro . Cosa hai ottenuto?

Tra noi, scommetto che possiamo salvare ogni utente che legge questo post almeno 10 minuti al giorno. (Meno il primo giorno in cui perdono tutto il loro tempo a leggere ServerFault invece di fare il loro lavoro ovviamente!)


Per la cronaca, su Super User c'è superuser.com/questions/7083/useful-command-line-aliases con un sacco di utili alias Bash
Jonik

Risposte:


7

Mi occupo di molte macchine diverse, quindi uno dei miei preferiti è l'alias per ogni macchina che devo frequentemente SSH per:

alias claudius="ssh dinomite@claudius"

È anche utile impostare tasti buoni .ssh/confige ssh per semplificare ulteriormente il passaggio da una macchina all'altra.

Un altro dei miei alias preferiti è quello di spostare le directory:

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."

E alcuni per le variazioni comunemente usate di ls(e errori di battitura):

alias ll="ls -l"
alias lo="ls -o"alias lh="ls -lh"
alias la="ls -la"
alias sl="ls"
alias l="ls"
alias s="ls"

Quasi sempre voglio egrep:

alias grep="egrep"

Ottieni pagine man da tutte le sezioni

alias man="man -a"

Mi sono spesso ritrovato awka eseguire il piping dell'output per ottenere una determinata colonna dell'output, come nel df -h | awk '{print $2}'trovare la dimensione di ciascuno dei miei dischi. Per facilitare questo, ho creato una funzione fawknel mio .bashrc:

function fawk {
    first="awk '{print "
    last="}'"
    cmd="${first}\$${1}${last}"
    eval $cmd
}

Ora posso eseguire ciò df -h|fawk 2che consente di risparmiare un bel po 'di battitura.

Lavoro con molto Perl e ho bisogno di conoscere le versioni dei moduli installati su un sistema:

function perlmodver {
    perl -M$1 -e 'print "Version " .
        $ARGV[0]->VERSION . " of " . $ARGV[0] .
        " is installed.\n"' $1
}

3

Di solito mi piace digitare tutto, perché temo che dimenticherò tutto sui comandi che sto usando in pochissimo tempo. So che potrei sbagliarmi, ma non credo che avrei saputo molto del sistema se avessi appena incollato tutti i comandi in Commandlinefu nel mio .bashrc.

Nota che non sto dicendo che sono il più grande e so tutto quello che c'è da sapere su Linux, tutt'altro, sto solo dicendo che mi piace imparare e ricordare ciò che ho imparato usando.

Questo non vuol dire che non apprezzo quanto siano economici gli alias (specialmente per funzioni più grandi, ma poi devi vedere se uno script non è migliore), ma, personalmente, non mi piace usarli (almeno no sempre).

Detto questo, Commandlinefu ha un tag speciale per gli alias. Vale la pena cercare.

Inoltre penso che sia buono:

   alias less='less -FSRX'

Questo userà meno se l'output è più grande dello schermo.


2

Il mio preferito di tutti i tempi:

alias server_name='ssh -v -l username ip_address'

Non ha bisogno di spiegazioni, vero? :-)


5
Non è quello che .ssh / config è per :-P Host nome_server Nome host 1.2.3.4 Nome utente utente ecc.
vartec

Usando bash_completion e tab, tab sembra funzionare bene per me, invece di impostare un mucchio di alias SSH
Clayton Stanley

2

alias lt='ls -lhart'

  • l = long: h = dimensioni leggibili dall'uomo: a = all: r = ordinamento inverso: t = ordinamento temporale
  • Mette il file più recente in fondo, proprio sopra il prompt

alias active='grep -v -e "^$" -e"^ *#"'

  • mostra solo le righe che non sono vuote o commentate
  • esempio: attivo /etc/httpd/conf/httpd.conf

alias svi='sudo vim'

alias scr='screen -Rd'


Bello, specialmente sudo vim
astropanico il

1

Devo ammettere che ne ho alcuni come questo ..

alias sl=ls

Per provare a combattere i miei errori di battitura :-)

Ho anche

alias aliases='xterm -e vim ~/.bash_aliases;reload'
alias reload='. ~/.bash_aliases'

Quindi è bello e semplice aggiungerne di nuovi.



1
for host in `awk '{ print $1 }' ~/.hostsILogIntoAllTheTime`; do
  alias $host='ssx '$host
done 

Digitare il nome host per accedere all'host. Nota: ssx è un alias stesso:

ssx='ssh -Y'

Combinato con le chiavi condivise, è piuttosto elegante.


1

Trovo fastidioso mettere tutte le cose apt-get e apt-cache in debian / * buntu, specialmente con il prefisso sudo, quindi ho:

alias apti='sudo apt-get install'
alias aptr='sudo apt-get remove'
alias apts='apt-cache search'

1

creare .tar.gz

alias tarc="tar czvf"

estrarre .tar.gz

alias tarx="tar xzvf"

elenco .tar.gz

alias tart="tar tzvf"


0

Ho trovato questa pagina alla ricerca di un modo per creare un alias per mostrarmi l'ennesima colonna di un file CSV (in realtà tsv) usando awk. La funzione fawk sopra era quasi esattamente quello che volevo. Ho modificato leggermente per aggiungere un secondo argomento facoltativo, il nome del file, quindi posso usarlo come awk normalmente piuttosto che solo attraverso una pipe.

function fawk {
    first="awk '{print "
    last="}' $2"
    cmd="${first}\$${1}${last}"
    echo $cmd
    eval $cmd
}

Grazie!


0

Questo non è un alias, ma vedere le persone che alias ssh connessioni, potrebbe essere utile.

Il pacchetto openssh ha un binario chiamato ssh-argv0 che funziona tramite symlink.

Quindi, se fai qualcosa del genere:

sudo ln -s /usr/bin/ssh-argv0 /usr/local/bin/user@ssh.server.com

Avendo / usr / local / bin nel $ PATH, ora puoi connetterti come utente "utente" a ssh.server.com scrivendo questo in un prompt della shell:

 $ user@ssh.server.com 

0

+1 per la risposta di Drew Stephens. L'unico che non ha trattato che uso anche è di aliasare i vari file di punti a cui ho bisogno di accedere su base regolare come:

alias dotz='vi ~/.zshrc'

Fai un ulteriore passo avanti con una funzione alias al volo:

function add-alias {
echo "alias $1=\047$2\047" >> ~/.zshrc
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.