Pimp the Shell

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Pimp the Shell

Beitrag von Saxman » 21.07.2010 16:25:57

yeti hat geschrieben:"Pimp the Shell" und damit BASH meinen ist doch ein bissl scheuklappig...
The Shell ist immernoch die gute alte /bin/sh.
Öhm Herr Yeti passens mal ein wenig besser auf im Unterricht. :D :D

Dieser Thread hier wurde von "Pimp the bash" zu "Pimp the shell" umbenannt um eben auch anderen Geschmacksrichtungen gerecht zu werden. Meine Wenigkeit selbst nutzt die mksh als /bin/sh und auf der ersten Seite findet sich z.B auch die .kshrc von Meillo.
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

yeti

Re: Pimp the Shell

Beitrag von yeti » 21.07.2010 16:38:09

Saxman hat geschrieben:Öhm Herr Yeti passens mal ein wenig besser auf im Unterricht. :D :D
:oops:
Alles die Hitze schuld!
Ich hab's genau geseh'n: Die war's!!!
Jaja!

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Pimp the Shell

Beitrag von Saxman » 21.07.2010 16:43:14

yeti hat geschrieben: :oops:
Alles die Hitze schuld!
Ich hab's genau geseh'n: Die war's!!!
Jaja!
Soso... Habens denn nun wenigstens was shellmäßiges anzubieten? Gerne auch für zsh oder mksh oder was anderweitig "exotisches".
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Pimp the Shell

Beitrag von ThorstenS » 21.07.2010 17:44:13

Ich habe noch weitere Einträge aus meiner .bashrc zusammengestellt:

Code: Alles auswählen

# Der Prompt zeigt den exit-Code des vorherigen Befehls an
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    ;;
*)
    PS1='$? ${debian_chroot:+($debian_chroot)}\u@\h:\w\n\$ '
    ;;
esac

# kann ich hier kvm laufen lassen?
alias hvm="egrep '^flags.*(vmx|svm)' /proc/cpuinfo"

# Paketmanagement:
alias ap='apt-cache policy'
alias ai='sudo aptitude install'

# \tree überschreibt diesen alias. debian Paket tree
alias tree='/usr/bin/tree -Ffip --dirsfirst'

# ein iso brennen. debian Paket brasero
alias burn='brasero -i'
# mount als user:
alias mount='sudo /bin/mount'
alias umount='sudo /bin/umount'
alias imount='sudo /bin/mount -oloop '

# vor einem vlock den Schirm leeren. debian Paket vlock
alias vlock='clear && /usr/bin/vlock'

# Behalten von 1000 Zeilen in .bash_history (Standard ist 500)
export HISTSIZE=1800
export HISTFILESIZE=3800
# damit man sieht wann genau die Eingaben getätigt wurden:
export HISTTIMEFORMAT="%F %T "
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"

#use extra globing features. See man bash, search extglob.
shopt -s extglob
#include .files when globbing.
shopt -s dotglob
#When a glob expands to nothing, make it an empty string instead of the literal characters.
shopt -s nullglob
#combine multiline commands into one in historty
shopt -s cmdhist

# was fürs Auge:
export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;46;37'

#  PW ist in ~/.vnc/passwd hinterlegt.
alias vnc="xvnc4viewer -passwd ~/.vnc/passwd"

# Paket auf die Schnelle bauen:
alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore"

# cAPS lOCK BRAUCHT KEIN mENSCH
xmodmap -e "remove lock = Caps_Lock"

# color to the manpage:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

# ssh-keychain:
if [ -f ~/.ssh/id_dsa-SERVER ]; then
  keychain -q ~/.ssh/id_dsa-SERVER
  source ~/.keychain/${HOSTNAME}-sh
fi

yeti

Re: Pimp the Shell

Beitrag von yeti » 21.07.2010 18:35:23

Saxman hat geschrieben:Habens denn nun wenigstens was shellmäßiges anzubieten? Gerne auch für zsh oder mksh oder was anderweitig "exotisches".
Nicht wirklich.
Ich hab mir vor Jaaaaahren abgewöhnt die Shell zu sehr aufzupeppen weil ich dauernd vor fremden Systemen saß wo meine Anpassungen dann eventuell andere nur verwirrt hätten.
Und dabei bin ich geblieben und das empfinde ich als den einzig seeligmachenden Weg.

¡Ich benutze nichtmal 'n Alias für "ls -l"!

Aber 'ne andere Schweinerei kann ich anbieten: Eine selbstmodifizierende BASH-Funktion:

Code: Alles auswählen

function Thing () { local set='shift;__=$1;shift;local $__="$*";eval "$FUNCNAME () { local $(local | tr "\n" " "); $(type $FUNCNAME | tail -n+5)"' get='shift;local __=$1;shift;echo ${!__}'; eval ${!1} ; }
Beispiel:

Code: Alles auswählen

yeti@xs9:~$ Thing set wyddlbrympht grynglfyx
yeti@xs9:~$ Thing get wyddlbrympht
grynglfyx
yeti@xs9:~$ declare -f Thing 
Thing () 
{ 
    local get='shift;local __=$1;shift;echo ${!__}' set='shift;__=$1;shift;local $__="$*";eval "$FUNCNAME () { local $(local | tr "\n" " "); $(type $FUNCNAME | tail -n+5)"'  wyddlbrympht=grynglfyx;
    eval ${!1}
}
yeti@xs9:~$ Thing set show 'echo $wyddlbrympht'
yeti@xs9:~$ Thing show
grynglfyx
Ganz böse das... aber eher akadämlich... war eher als Beweis der Machbarkeit gedacht und vielleicht kommt ja jemandem 'ne idee, wie man das irgendwie grenzwertig sinnstiftend bis zielführend oder alternativlos einsetzen kann um irgendwelche zentralen Eckpunkte zu stützen?

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Pimp the Shell

Beitrag von ThorstenS » 08.06.2011 17:47:34

das passt ganz gut in den thread: http://stick.gk2.sk/blog/2011/06/ps1-tricks/

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Pimp the Shell

Beitrag von Saxman » 02.08.2011 08:26:49

Ich bin da gerade über was nützliches gestolpert.

Code: Alles auswählen

##save current state   
##http://chris-lamb.co.uk/2011/07/30/optimising-directory-navigation-multiple-terminals/
s() {
        pwd > ~/.saved_dir
}
              
i() {
        cd "$(cat ~/.saved_dir)"
}
Vielleicht kann es ja der ein oder andere gebrauchen.
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Pimp the Shell

Beitrag von Meillo » 02.08.2011 09:34:17

Sieht tatsaechlich nuetzlich aus. Danke.
Use ed once in a while!

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Pimp the Shell

Beitrag von ThorstenS » 02.08.2011 11:53:21

sowas sollte man auch mit den bash builtins pushd und popd erreichen können.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Pimp the Shell

Beitrag von GoKi » 02.08.2011 19:51:08

ThorstenS hat geschrieben:sowas sollte man auch mit den bash builtins pushd und popd erreichen können.
Es geht dabei auch darum, dass Directory in der einen Shell zu "speichern" und in einer anderen wieder zu "laden".
Mir ist nicht ganz klar, ob man das auch mit pushd/popd realisieren kann.
MfG GoKi
:wq

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Pimp the Shell

Beitrag von Meillo » 02.08.2011 20:18:34

GoKi hat geschrieben:
ThorstenS hat geschrieben:sowas sollte man auch mit den bash builtins pushd und popd erreichen können.
Es geht dabei auch darum, dass Directory in der einen Shell zu "speichern" und in einer anderen wieder zu "laden".
Mir ist nicht ganz klar, ob man das auch mit pushd/popd realisieren kann.
Nicht mit den mitgelieferten pushd/popd, denn die arbeiten auf der Variable DIRSTACK und die kann nicht zwischen mehreren Shell-Sessions geteilt werden.
Use ed once in a while!

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Pimp the Shell

Beitrag von ThorstenS » 02.08.2011 20:25:17

da habt ihr beiden recht, das ist ein großer Vorteil, den ich vorher nicht bedacht habe.

Ich arbeite bei viel genutzten Pfaden mit CDPATH. z.B. erlaubt mir export CDPATH=.:~:/home/thorsten/svn/trunk/server/debrep:~/svn/trunk/server/d-i/:~/svn/trunk/server/cfengine2/ dann mittels cd d-i in den Ordner ~/svn/trunk/server/d-i/ zu wechseln.

Benutzeravatar
ohnex
Beiträge: 393
Registriert: 31.01.2010 22:35:36

Re: Pimp the Shell

Beitrag von ohnex » 02.08.2011 22:10:55

hi

ich hab nur ein

Code: Alles auswählen

hostname -I
eingefügt .
ciao

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Pimp the Shell

Beitrag von Meillo » 02.08.2011 23:23:26

ohnex hat geschrieben: ich hab nur ein

Code: Alles auswählen

hostname -I
eingefügt .
Falscher Thread? Ich sehe keinen Zusammenhang.

btw:

Code: Alles auswählen

$ hostname -I
hostname: invalid option -- I
...
Use ed once in a while!

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Pimp the Shell

Beitrag von Saxman » 03.08.2011 08:41:45

Meillo hat geschrieben:
ohnex hat geschrieben: ich hab nur ein

Code: Alles auswählen

hostname -I
eingefügt .
Falscher Thread? Ich sehe keinen Zusammenhang.

btw:

Code: Alles auswählen

$ hostname -I
hostname: invalid option -- I
...
Ich glaub er bezieht sich einfach auf seine goodies in der .bashrc oder ähnlichem.

Im übrigen:

Code: Alles auswählen

$ hostname -I
192.168.12.144 
$ hostname -V
hostname 3.02
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

Antworten