Nützliche Shell-Aliase für Linux / Unix & Mac OS X

Andreas Preuss
10-06-2018 01:27

Ein Bash-Alias ist nichts anderes als die Abkürzung zu Befehlen. Der Alias-Befehl erlaubt es dem Benutzer, einen beliebigen Befehl oder eine Gruppe von Befehlen (einschließlich Optionen und Dateinamen) durch Eingabe eines einzigen Wortes oder Zeichens zu starten. Verwende den Befehl alias, um eine Liste aller definierten Aliase in deinem System anzuzeigen. Man kann benutzerdefinierte Aliase zur ~/.bashrc-Datei hinzufügen. Mit diesen Aliasen hat man die Möglichkeit sich die Tippzeit verkürzen, intelligent zu arbeiten und die Produktivität an der Eingabeaufforderung zu erhöhen. Beispielsweise können lange Befehle, die man häufig braucht, durch eine kürzere Version ebenso benutzt werden. Dieser Faq-Beitrag zeigt, wie man Aliase erstellt und verwendet und gibt meiner Meinung ein paar praktische Beispiele für Bash-Shell-Aliase. Die allgemeine Syntax für den Alias-Befehl für die Bash-Shell lautet wie folgt:

alias
..
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias g-commit='git add . --all && git commit -a -m '
alias g-log='git log --pretty=format:"%h - %an, %ar : %s"'
alias g-stash='git add . --all && git stash save '
alias l='ls ${LS_OPTIONS} -lA'
alias ll='ls ${LS_OPTIONS} -l'
alias ls='ls ${LS_OPTIONS}'
alias amazonbackup='s3backup'
alias apt-get='sudo apt-get'
...

Standardmässig zeigt der Befehl "alias" eine Liste von Aliasen an, die für den aktuellen Benutzer definiert sind. Um einen Alias zu erstellen, verwendet man die folgende Syntax:

alias name=value
alias name='command'
alias name='command arg1 arg2'
alias name='/path/to/script'
alias name='/path/to/script.pl arg1 arg2'

In diesem Beispiel ist Alias c für den häufig verwendeten Clear-Befehl, der den Bildschirm löscht, indem man nur den Buchstaben c eingibt und die ENTER-Taste drückt:

alias c='clear'

Wie man einen Bash-Alias löscht/entfernt
Aliase werden mit dem Befehl alias erstellt und aufgelistet und mit dem Befehl unalias entfernt. Die Syntax ist:

unalias aliasname
unalias c 
unalias foo

Hier sollte man auch den Alias aus der Datei ~/.bashrc mit einem Texteditor löschen.

Wie man Bash-Shell-Aliase dauerhaft macht
Der Alias c bleibt nur während der aktuellen Anmeldesitzung gültig. Sobald man sich ausloggt oder das System neu startet, ist der Alias c verschwunden. Um dieses Problem zu vermeiden, fügen man den gewünschten Alias in die eigene ~/.bashrc-Datei hinzu:

nano ~/.bashrc
# Der Alias c für den aktuellen Benutzer kann durch Eingabe der folgenden Zeile dauerhaft gemacht werden:
alias c='clear'

Datei speichern und schliessen. Systemweite Aliase (d.h. Aliase für alle Benutzer) können in die Datei /etc/bashrc mit root-Rechten eingetragen werden. Bitte beachten, der Alias-Befehl wird dann in verschiedene Shells eingebaut, darunter ksh, tcsh/csh, ash, bash und andere. Ein Hinweis zum privilegierten Zugriff Man kann folgenden Code in ~/.bashrc hinzufügen:

# if user is not root, pass all commands via sudo #
if [ $UID -ne 0 ]; then
    alias reboot='sudo reboot'
    alias update='sudo apt-get upgrade'
fi

OS-spezifische Aliase
Man kann den Code wie folgt in ~/.bashrc mit der case-Anweisung hinzufügen:

### Get os name via uname ###
_myos="$(uname)"
 
### add alias as per os using $_myos ###
case $_myos in
   Linux) alias foo='/path/to/linux/bin/foo';;
   FreeBSD|OpenBSD) alias foo='/path/to/bsd/bin/foo' ;;
   SunOS) alias foo='/path/to/sunos/bin/foo' ;;
   *) ;;
esac

Aliase sind benutzerabhängig. Dies bedeutet, dass jeder Benutzer für seinen Account beliebig viele Aliase anlegen kann. Andere Benutzer können von ihrem eigenen Account nicht auf diese Abkürzungen zugreifen. So kann jeder Benutzer seine individuellen Aliase einrichten. Außerdem kann ein Benutzer die Aliase des anderen Benutzers so nicht böswillig manipulieren. Natürlich gibt es auch viele Situationen, in denen ein Alias wirklich praktisch ist. So muss man zum Mounten einer CD je nach System entweder mount /cdrom wie bei Debian (und seinen Derivaten, z.B. Storm Linux und Corel Linux) und SUSE oder mount /mnt/cdrom wie bei Red Hat (und seinen Derivaten, z.B. Mandrake) eingeben. Man erspart sich Tipparbeit und vereinheitlicht das Ganze durch folgende Aliase:

alias cdrom="mount /cdrom" alias ucdrom="umount /cdrom"

Der auszuführende Befehl der Aliase ist natürlich anzupassen, wenn der Mountpunkt an einer anderen Stelle liegt. Wenn man bestimmte Folgen von Befehlen häufig eingibt, macht es immer Sinn, sich dafür einen Alias einzurichten. Mehrere Befehle können in der Bash durch ein Semikolon voneinander getrennt in eine Zeile geschrieben werden. Beispiel:

alias cdmnt="mount /mnt/cdrom; cd /mnt/cdrom; ls"

 

Im Folgenden habe ich weitere Beispiele aufgelistet, die als alias in Frage kommen könnten:

# Steuerung der ls Befehlsausgabe
# Der Befehl ls listet den Inhalt des Verzeichnisses auf und die Ausgabe wird eingefärbt:
## colrierung der ls Ausgabe ##
alias ls='ls --color=auto'
 
## Verwendung eines langen Listenformates ##
alias ll='ls -la'

## Zeige versteckte Dateien ##
alias l.='ls -d .* --color=auto'

# Steuerung des cd-Befehlsverhaltens
## Loswerden deR Meldung Befehl ist nicht vorhanden. ##
alias cd..='cd ..'

# Schnell aus dem Verzeichnis kommen
## ein schneller Weg, um aus dem aktuellen Verzeichnis herauszukommen. ##
alias ..='cd ..'
alias ...='cd ../../../'
alias ....='cd ../../../../'
alias .....='cd ../../../../'
alias .4='cd ../../../../'
alias .5='cd ../../../../..'

# Ausgabe des Steuerbefehls grep
## Der Befehl grep ist ein Befehlszeilenprogramm zum Durchsuchen von Klartextdateien nach Zeilen, die einem regulären Ausdruck entsprechen:
## Einfärben der Grep-Befehlsausgabe für einfache Bedienung (gut für Log-Dateien)##
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'

# Starte Rechner mit mathematischer Unterstützung
alias bc='bc -l'

# Sha1-Bericht erstellen
alias sha1='openssl sha1'

# Erstellen von übergeordneten Verzeichnissen bei Bedarf
## Der mkdir Befehl wird verwendet, um ein Verzeichnis zu erstellen:
alias mkdir='mkdir -pv'

# Diff-Ausgabe einfärben
## Man kann Dateien Zeile für Zeile mit diff vergleichen und ein Tool namens colordiff verwenden, um die Ausgabe einzufärben:
alias diff='colordiff'

# Macht die Ausgabe von Mount-Befehlen schön und lesbar.
alias mount='mount |column -t'

# Einfache Befehlskürzel zur Zeitersparnis
alias h='history'
alias j='jobs -l'

# Erstellen eines neuen Befehlssatzes
alias path='echo -e ${PATH//:/\\n}'
alias now='date +"%T"'
alias nowtime=now
alias nowdate='date +"%d-%m-%Y"'

# Den Editor vim als Standard setzen
alias vi=vim
alias svi='sudo vi'
alias vis='vim "+set si"'
alias edit='vim'

# Kontrollausgabe des Netzwerktools ping
## Stopt nach dem Senden der Anzahl der ECHO_REQUEST-Pakete (wie bei der Windows Eingabeaufforderung)#
alias ping='ping -c 5'
# Nicht abwarten Intervall 1 Sekunde, Schnellgang #
alias fastping='ping -c 100 -s.2'

# Zeige offene ports
## Verwendung des Befehls netstat, um schnell alle TCP/UDP-Ports auf dem Server aufzulisten:
alias ports='netstat -tulanp'

# Wakeup sleeping servers
# Wake-on-LAN (WOL) is an Ethernet networking standard that allows a server to be turned on by a network message. You can quickly wakeup nas devices and server using the following aliases:
## replace mac with your actual server mac address #
alias wakeupnas01='/usr/bin/wakeonlan 00:11:32:11:15:FC'
alias wakeupnas02='/usr/bin/wakeonlan 00:11:32:11:15:FD'
alias wakeupnas03='/usr/bin/wakeonlan 00:11:32:11:15:FE'

# Control firewall (iptables) output
# Netfilter is a host-based firewall for Linux operating systems. It is included as part of the Linux distribution and it is activated by default. This post list most common iptables solutions required by a new Linux user to secure his or her Linux operating system from intruders.
## shortcut  for iptables and pass it via sudo#
alias ipt='sudo /sbin/iptables'
 
# display all rules #
alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers'
alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers'
alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers'
alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers'
alias firewall=iptlist

# Debug web server / cdn problems with curl
# get web server headers #
alias header='curl -I'
 
# find out if remote server supports gzip / mod_deflate or not #
alias headerc='curl -I --compress'

# Add safety nets
# do not delete / or prompt if deleting more than 3 files at a time #
alias rm='rm -I --preserve-root'
 
# confirmation #
alias mv='mv -i'
alias cp='cp -i'
alias ln='ln -i'
 
# Parenting changing perms on / #
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'

# Update Debian Linux server
# apt-get wird für die Installation von Paketen über das Internet (ftp oder http) verwendet.
# Man kann somit auch alle Pakete in einem Arbeitsgang aktualisieren: # distro specific - Debian / Ubuntu and friends # # install with apt-get alias apt-get="sudo apt-get" alias updatey="sudo apt-get --yes" # update & upgrade on one command alias update='sudo apt-get update && sudo apt-get upgrade' # Update RHEL / CentOS / Fedora Linux server # yum command is a package management tool for RHEL / CentOS / Fedora Linux and friends: ## distrp specifc RHEL/CentOS ## alias update='yum update' alias updatey='yum -y update' # Tune sudo and su # become root # alias root='sudo -i' alias su='sudo -i' # Pass halt/reboot via sudo # shutdown command bring the Linux / Unix system down: # reboot / halt / poweroff alias reboot='sudo /sbin/reboot' alias poweroff='sudo /sbin/poweroff' alias halt='sudo /sbin/halt' alias shutdown='sudo /sbin/shutdown' # Control web servers # also pass it via sudo so whoever is admin can reload it without calling you # alias nginxreload='sudo /usr/local/nginx/sbin/nginx -s reload' alias nginxtest='sudo /usr/local/nginx/sbin/nginx -t' alias lightyload='sudo /etc/init.d/lighttpd reload' alias lightytest='sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t' alias httpdreload='sudo /usr/sbin/apachectl -k graceful' alias httpdtest='sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS' # Alias into our backup stuff # if cron fails or if you want backup on demand just run these commands # # again pass it via sudo so whoever is in admin group can start the job # # Backup scripts # alias backup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type local --taget /raid1/backups' alias nasbackup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type nas --target nas01' alias s3backup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type nas --target nas01 --auth /home/scripts/admin/.authdata/amazon.keys' alias rsnapshothourly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys --config /home/scripts/admin/scripts/backup/config/adsl.conf' alias rsnapshotdaily='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys --config /home/scripts/admin/scripts/backup/config/adsl.conf' alias rsnapshotweekly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys --config /home/scripts/admin/scripts/backup/config/adsl.conf' alias rsnapshotmonthly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys --config /home/scripts/admin/scripts/backup/config/adsl.conf' alias amazonbackup=s3backup # Desktop specific play avi/mp3 files on demand ## play video files in a current directory ## # cd ~/Download/movie-name # playavi or vlc alias playavi='mplayer *.avi' alias vlc='vlc *.avi' # play all music files from the current directory # alias playwave='for i in *.wav; do mplayer "$i"; done' alias playogg='for i in *.ogg; do mplayer "$i"; done' alias playmp3='for i in *.mp3; do mplayer "$i"; done' # play files from nas devices # alias nplaywave='for i in /nas/multimedia/wave/*.wav; do mplayer "$i"; done' alias nplayogg='for i in /nas/multimedia/ogg/*.ogg; do mplayer "$i"; done' alias nplaymp3='for i in /nas/multimedia/mp3/*.mp3; do mplayer "$i"; done' # shuffle mp3/ogg etc by default # alias music='mplayer --shuffle *' # Set default interfaces for sys admin related commands ## vnstat is console-based network traffic monitor. dnstop is console tool to analyze DNS traffic. tcptrack and iftop commands displays information about TCP/UDP connections it sees on a network interface and display bandwidth usage on an interface by host respectively. ## All of our servers eth1 is connected to the Internets via vlan / router etc ## alias dnstop='dnstop -l 5 eth1' alias vnstat='vnstat -i eth1' alias iftop='iftop -i eth1' alias tcpdump='tcpdump -i eth1' alias ethtool='ethtool eth1' # work on wlan0 by default # # Only useful for laptop as all servers are without wireless interface alias iwconfig='iwconfig wlan0' # Get system memory, cpu usage, and gpu memory info quickly ## pass options to free ## alias meminfo='free -m -l -t' ## Den grössten Spreicherfresser über top ermitteln alias psmem='ps auxf | sort -nr -k 4' alias psmem10='ps auxf | sort -nr -k 4 | head -10' ## Die grössten CPU Belastungen aufrufen ## alias pscpu='ps auxf | sort -nr -k 3' alias pscpu10='ps auxf | sort -nr -k 3 | head -10' ## Server CPU Information ausgeben ## alias cpuinfo='lscpu' ## ältere Systeme verwenden: /proc/cpuinfo ## ## alias cpuinfo='less /proc/cpuinfo' ## # Control Home Router # The curl command can be used to reboot Linksys routers. # Reboot my home Linksys WAG160N / WAG54 / WAG320 / WAG120N Router / Gateway from *nix. alias rebootlinksys="curl -u 'admin:my-super-password' 'http://192.168.1.2/setup.cgi?todo=reboot'" # Reboot tomato based Asus NT16 wireless bridge alias reboottomato="ssh admin@192.168.1.1 /sbin/reboot" # Resume wget by default # The GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, and it can resume downloads too: alias wget='wget -c' # different browser for testing website alias ff4='/opt/firefox4/firefox' alias ff13='/opt/firefox13/firefox' alias chrome='/opt/google/chrome/chrome' alias opera='/opt/opera/opera' #default ff alias ff=ff13 # default browser alias browser=chrome # A note about ssh alias # Do not create ssh alias, instead use ~/.ssh/config OpenSSH SSH client configuration files. It offers more option. An example: Host server10 Hostname 1.2.3.4 IdentityFile ~/backups/.ssh/id_dsa user foobar Port 30000 ForwardX11Trusted yes TCPKeepAlive yes You can now connect to peer1 using the following syntax: $ ssh server10 ## set some other defaults ## alias df='df -H' alias du='du -ch' # top is atop, just like vi is vim alias top='atop' ## nfsrestart - must be root ## ## refresh nfs mount / cache etc for Apache ## alias nfsrestart='sync && sleep 2 && /etc/init.d/httpd stop && umount netapp2:/exports/http && sleep 2 && mount -o rw,sync,rsize=32768,wsize=32768,intr,hard,proto=tcp,fsc natapp2:/exports /http/var/www/html && /etc/init.d/httpd start' ## Memcached server status ## alias mcdstats='/usr/bin/memcached-tool 10.10.27.11:11211 stats' alias mcdshow='/usr/bin/memcached-tool 10.10.27.11:11211 display' ## quickly flush out memcached server ## alias flushmcd='echo "flush_all" | nc 10.10.27.11 11211' ## Remove assets quickly from Akamai / Amazon cdn ## alias cdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai' alias amzcdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon' ## supply list of urls via file or stdin alias cdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai --stdin' alias amzcdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon --stdin'

Dieser Beitrag fasst verschiedene Arten der Verwendung von *nix bash-Aliasen zusammen: - Setzen von Standardoptionen für einen Befehl (z.B. eth0 als Standardoption für ethtool-Befehl über alias ethtool='ethtool eth0'). - Korrektur von Tippfehlern (cd... fungiert als cd... über den Alias cd..='cd...'). - Reduzierung der Tipparbeit. - Der Standardpfad eines Befehls, der in mehreren Versionen auf einem System existiert (z.B. GNU/grep befindet sich unter /usr/local/bin/grep und Unix grep unter /bin/grep. Um GNU grep zu verwenden, verwenden Sie den Alias grep='/usr/local/bin/grep' ). - Hinzufügen der Sicherheitsnetze zu Unix durch interaktive Befehle durch Setzen von Standardoptionen. (z.B. rm, mv und andere Befehle). - Kompatibilität durch Erstellung von Befehlen für ältere Betriebssysteme wie MS-DOS oder andere Unix-ähnliche Betriebssysteme (z.B. alias del=rm).

angehängte Dateien: unlist_bashrc.txt, my_bashrc.txt

Tags: Bash, BSD, Debian 9 Stretch, Linux, MAC OS X, Security
Durchschnittliche Bewertung: 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.