Verwante Seiten

  • cmd ← Windows Komandozeile
  • vbs ← Windows Shell

Konfiguration

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.

Ausgaben umleiten

Alles umleiten

$ programm > /pfad/zum/ziel 2>&1

Nur Fehler umleiten

$ programm 2> /pfad/zum/ziel

Die normale Ausgabe umleiten

$ programm > /pfad/zum/ziel

Skripten

For-Schleife

#!/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

Stringreplace

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.

Die Datei 'wget_dateien.sh':

wget http://abc.com/1.jpg
wget http://abc.com/2.jpg
wget http://abc.com/3.jpg
wget http://abc.com/4.jpg

Das Replace-Skript:

#!/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

Alle .oga-Dateien im aktuellen Ordner zu .ogg-Dateien umbenennen

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

Programm Ausgaben mailen

#!/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

wall

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.

Literatur

Bashrc

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
 
infos/linux/bash.txt · Zuletzt geändert: 2010/01/21 23:45 von schule
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki