Dies ist eine Beispiel für ein logout-Skript, die Datei '~/.bash_logout':
# ~/.bash_logout: executed by bash(1) when login shell exits.
# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear ] && /usr/bin/clear -q
fi
Das Skript bewirkt, dass wenn 'bash' das letzte laufende Programm der Sitzung ist, es den Bildschirm löscht. Zur Erklärung, die Variabel '$SHLVL' wird jedes Mal erhöht, wenn eine neue Shell gestartet wird.
$ programm > /pfad/zum/ziel 2>&1
$ programm 2> /pfad/zum/ziel
$ programm > /pfad/zum/ziel
#!/bin/bash
i=0
for x in ../vob/* ; do
i=$[${i}+1]
# Hier kann man etwas mit der x-ten Datei im Verzeichnis "../vob" machen
done
Dieses Skript nimmt alle Angaben, welche für 'wget' gemacht worden sind, verwandelt sie in eine Linkliste und schreibt sie in die Datei 'neu.html', welche bei jedem Aufruf ohne zu zögern überschrieben wird.
wget http://abc.com/1.jpg wget http://abc.com/2.jpg wget http://abc.com/3.jpg wget http://abc.com/4.jpg
#!/bin/bash inhalt=`cat wget_dateien.sh` echo '<ol>' > neu.html echo -n '<li><a name="oben' >> neu.html echo -n ${inhalt//'wget '/'">Link</a></li><li><a href="'} >> neu.html echo '">Link</a>' >> neu.html echo '</ol>' >> neu.html
Die Rhythmbox von Gnome importiert/ript zwar jede Audio-CD in meine Musiksammlung, doch Programme wie Amarok finden die Dateien dann nicht, weil sie die falsche Endung haben. Dieses kleine Skript schafft abhilfe. Zur verwendung muss es nur in dem Ordner mit den Musik-Dateien abgespeichert und ausgeführt werden.
#!/bin/bash echo 'rename all from $a => $b' for i in ./*.oga do echo -n $i; echo -n ' => '; echo ${i//.oga/.ogg}; #echo ""; mv "${i}" "${i//.oga/.ogg}"; done
#!/bin/bash BETREFF='Programme haben gearbeitet' EMPFAENGER='user@example.com' FOO=`/usr/bin/programm1` BAR=$(programm2 -arg in | grep error) cat<<EOT | /bin/mail -s "${BETREFF}" "${EMPFAENGER}" ${FOO}|> ${BAR}|> EOT
Mit diesem Befehl kann man allen angemeldeten Benutzern eine Nachricht schicken. Die Bedienung ist simpel. Zuerst kommt 'wall, dann zwei '<' und dann kommt noch ein '$'. Nach einem sanften Druck auf [ Enter ] gibst du den Text ein. Wenn du du den ganzen Text eingegeben hast, drückst du einfach [ Strg ] + [ D ] bzw. [ Ctrl ] + [ D ] und die Nachricht wird verschickt.
$ wall << $ > Das ist meine erste Zeile. > Und das meine zweite. Broadcast Message from user@system (/dev/pts/0) at 19:29 ... Das ist meine erste Zeile. Und das meine zweite.
Anmerkung: Es kann sein, dass [ Ctrl ] + [ D ] nicht auslöst, dann musst du zuerst [ Enter ] und dann nochmal [ Ctrl ] + [ D ] drücken.
Die Datei '.bashrc' liegt im Home jedes Benutzers und erlaubt es ihm, seine Shell seinen Wünschen entsprechend anzupassen.
Ein Beispiel:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
# ... or force ignoredups and ignorespace
export HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
#alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi