Nützliche Bash-Aliase und Generieren einer Liste Ihrer am häufigsten verwendeten Befehle

10

In diesem Artikel wurde eine schnelle Möglichkeit beschrieben, Ihren Bash-Verlauf zu sortieren und festzustellen, welche Befehle Sie am häufigsten verwenden:

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

Es öffnet Ihnen wirklich die Augen, für welche Aufgaben Sie Aliase erstellen sollten und für welche Sie sich vollständig entfernen sollten.

Ich würde gerne eine ServerFault-Liste empfohlener Befehlszeilen-Aliase sehen, mit denen Sie Zeit bei der Arbeit sparen . Was haben Sie?

Ich wette, wir können jeden Benutzer, der diesen Beitrag liest, mindestens 10 Minuten am Tag retten. (Abzüglich des ersten Tages, an dem sie ihre ganze Zeit damit verschwenden, ServerFault zu lesen, anstatt natürlich ihre Arbeit zu erledigen!)

Jax
quelle
Für die Aufzeichnung auf Super User gibt es superuser.com/questions/7083/useful-command-line-aliases mit vielen nützlichen Bash - Aliase
Jonik
Siehe auch: serverfault.com/questions/15365/…
Aaron Copley

Antworten:

7

Ich beschäftige mich mit vielen verschiedenen Maschinen, daher ist einer meiner Favoriten Aliase für jede Maschine, für die ich häufig SSH verwenden muss:

alias claudius="ssh dinomite@claudius"

Es ist auch nützlich, einen guten .ssh/configund einen SSH-Schlüssel einzurichten , um das Hüpfen zwischen Maschinen noch einfacher zu machen.

Ein anderer meiner Lieblings-Aliase ist das Verschieben von Verzeichnissen:

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

Und einige für häufig verwendete Variationen von ls(und Tippfehlern):

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"

Ich möchte fast immer egrep:

alias grep="egrep"

Holen Sie sich Manpages aus allen Abschnitten

alias man="man -a"

Ich fand mich oft dabei, die Ausgabe awkdurchzuleiten, um eine bestimmte Spalte der Ausgabe zu erhalten, wie df -h | awk '{print $2}'zum Beispiel , um die Größe jeder meiner Festplatten zu ermitteln. Um dies zu vereinfachen, habe ich fawkin meiner .bashrc eine Funktion erstellt:

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

Ich kann jetzt laufen, df -h|fawk 2was ein gutes Stück Tipparbeit erspart.

Ich arbeite mit viel Perl und muss die Versionen der auf einem System installierten Module kennen:

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

Normalerweise schreibe ich gerne alles, weil ich befürchte, dass ich die Befehle, die ich verwende, in kürzester Zeit vergessen werde. Ich weiß, dass ich mich möglicherweise irre, aber ich glaube nicht, dass ich so viel über das System wissen würde, wenn ich nur jeden Befehl in Commandlinefu in meine .bashrc eingefügt hätte.

Beachten Sie, dass ich nicht sage, dass ich der Größte bin und alles über Linux weiß. Davon abgesehen sage ich nur, dass ich gerne lerne und mich daran erinnere, was ich mit gelernt habe.

Das heißt nicht, dass ich nicht schätze, wie zeitsparend Aliase sind (speziell für größere Funktionen, aber dann muss man sehen, ob ein Skript nicht besser ist), aber ich persönlich verwende sie (zumindest) nicht gern Nein immer).

Davon abgesehen hat Commandlinefu ein spezielles Tag für Aliase. Es lohnt sich zu schauen.

Auch ich denke das ist gut:

   alias less='less -FSRX'

Dies verbraucht nur weniger, wenn die Ausgabe größer als der Bildschirm ist.

Flávio Amieiro
quelle
2

Mein Favorit aller Zeiten:

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

Es bedarf keiner Erklärung, oder? :-)


quelle
5
Ist das nicht was .ssh / config ist für :-P Host Servername Hostname 1.2.3.4 Benutzer Benutzername usw.
vartec
Mit bash_completion und tab scheint tab für mich gut zu funktionieren, anstatt eine Reihe von SSH-Aliasen einzurichten
Clayton Stanley
2

alias lt='ls -lhart'

  • l = lang: h = vom Menschen lesbare Größen: a = alle: r = umgekehrte Sortierung: t = zeitliche Sortierung
  • Fügt die neueste Datei unten rechts über der Eingabeaufforderung ein

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

  • zeigt nur Zeilen an, die nicht leer oder auskommentiert sind
  • Beispiel: active /etc/httpd/conf/httpd.conf

alias svi='sudo vim'

alias scr='screen -Rd'

CanyonR
quelle
Schön, besonders sudo vim
astropanic
1

Ich muss zugeben, dass ich ein paar davon habe.

alias sl=ls

Um meine Tippfehler zu bekämpfen :-)

ich habe auch

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

Es ist also schön und einfach, neue hinzuzufügen.

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

Geben Sie den Hostnamen ein, um sich beim Host anzumelden. Hinweis: ssx ist selbst ein Alias:

ssx='ssh -Y'

In Kombination mit gemeinsam genutzten Schlüsseln ist es ziemlich schick.

Swoogan
quelle
1

Ich finde es ärgerlich, die gesamten apt-get- und apt-cache-Dinge in debian / * buntu abzulegen, insbesondere mit dem sudo-Präfix, also habe ich:

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

erstellen Sie .tar.gz

alias tarc="tar czvf"

extrahieren .tar.gz

alias tarx="tar xzvf"

Liste .tar.gz

alias tart="tar tzvf"
Aeonflux
quelle
0

Ich habe auf dieser Seite nach einer Möglichkeit gesucht, einen Alias ​​zu erstellen, der mir die n-te Spalte einer CSV-Datei (tatsächlich Tsv) mit awk anzeigt. Die Fawk-Funktion oben war fast genau das, was ich wollte. Ich habe etwas geändert, um ein optionales zweites Argument hinzuzufügen, den Dateinamen, damit ich es wie awk normal verwenden kann und nicht nur über eine Pipe.

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

Vielen Dank!

Marlacparker
quelle
0

Dies ist kein Alias, aber es kann nützlich sein, Leute zu sehen, die SSH-Verbindungen aliasen.

Das Openssh-Paket verfügt über eine Binärdatei namens ssh-argv0, die über Symlinks funktioniert.

Also, wenn Sie so etwas tun:

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

Wenn Sie / usr / local / bin im $ PATH haben, können Sie jetzt als Benutzer "user" eine Verbindung zu ssh.server.com herstellen und dies in eine Shell-Eingabeaufforderung schreiben:

 $ user@ssh.server.com 
sntg
quelle
0

+1 für Drew Stephens Antwort. Das einzige, was er nicht behandelt hat, das ich auch benutze, ist das Alias ​​der verschiedenen Punktedateien, auf die ich regelmäßig zugreifen muss, wie:

alias dotz='vi ~/.zshrc'

Gehen Sie noch einen Schritt weiter mit einer On-the-Fly-Add-Alias-Funktion:

function add-alias {
echo "alias $1=\047$2\047" >> ~/.zshrc
}
Somantra
quelle