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

Pimp the Shell

Beitrag von Saxman » 09.07.2010 18:32:50

Ich hab die letzten Tage ein wenig meine .bashrc gepimpt.
NoPaste-Eintrag34758

Vielleicht kann sich ja jemand was ab schauen, vor allem die History Search und Grep Sachen sind erste Sahne.
Was mich aber am meisten interessieren würde ist, was ihr da so für Sachen bei euch drin stehen habt?
Zuletzt geändert von Saxman am 09.07.2010 22:05:25, insgesamt 1-mal geändert.
Grund: Titel angepasst
"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
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Pimp the Bash

Beitrag von Blackbox » 09.07.2010 21:19:09

Ich benutze noch die Standard-Bashrc...
:THX:
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Pimp the Bash

Beitrag von Liffi » 09.07.2010 21:41:17

Ich fasse es mal als "Pimp the Shell" auf.

Meine zshrc entspricht zu 90% der von grml.
Hier zu finden.

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

Re: Pimp the Bash

Beitrag von Saxman » 09.07.2010 22:05:04

Liffi hat geschrieben:Ich fasse es mal als "Pimp the Shell" auf.
Deffinitiv der bessere Titel. :D :D :D
"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.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Pimp the Shell

Beitrag von gms » 10.07.2010 10:54:46

Code: Alles auswählen

function psgrep () {
  ps aux | grep "$1" | grep -v "grep"
}
Das zweite 'grep' verhindert die Farbdarstellung der Fundstellen vom ersten 'grep'. Der Alias "grep='grep --color=always' " zieht hier also nicht.
Der zweite 'grep' Aufruf könnte aber mit einer kleinen Änderung vermieden werden:

Code: Alles auswählen

function psgrep() {
  grep "$@" <<EOF
$(ps aux)
EOF
}
Gruß
gms

Benutzeravatar
mindX
Beiträge: 1541
Registriert: 27.03.2009 19:17:28
Lizenz eigener Beiträge: GNU General Public License

Re: Pimp the Shell

Beitrag von mindX » 10.07.2010 12:48:12

Autovervollständigung ("globbing") auch für apt, aptitude usw., Paketnamen und Optionen:

/etc/bash.bashrc

Code: Alles auswählen

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
(Benötigt das Paket bash-completion)

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Pimp the Shell

Beitrag von suno » 10.07.2010 13:52:07

Normale Leute pflegen Ihren Garten ... andere Ihre .bashrc :D
http://sunoano.name/ws/bash.html#some_b ... tion_i_did

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Pimp the Shell

Beitrag von roli » 10.07.2010 17:20:31

Hi,

ich habe folgendes im Angebot:

Code: Alles auswählen

#dezimal nach ... konvertieren
alias d2b='perl -e '\''printf qq|%b\n|, int( shift )'\'''
alias d2h='perl -e '\''printf qq|%X\n|, int( shift )'\'''
alias d2o='perl -e '\''printf qq|%o\n|, int( shift )'\'''

#Hex nach ... konvertieren
alias h2b='perl -e '\''printf qq|%b\n|, hex( shift )'\'''
alias h2d='perl -e '\''printf qq|%d\n|, hex( shift )'\'''
alias h2o='perl -e '\''printf qq|%o\n|, hex( shift )'\'''

#Oktal nach ... konvertieren
alias o2b='perl -e '\''printf qq|%b\n|, oct( shift )'\'''
alias o2d='perl -e '\''printf qq|%d\n|, oct( shift )'\'''
alias o2h='perl -e '\''printf qq|%X\n|, oct( shift )'\'''

alias mac2ip='arp -n |grep -i $1'

alias psize='dpkg-query -W --showformat='\''Size \n'\'' | sort -n'

#VGA Ausgang ein-ausschalten
alias vga_an='xrandr --output LVDS --auto --output VGA --auto --same-as LVDS'
alias vga_aus='xrandr --output VGA --off'
alias vga_unt='xrandr --output LVDS --mode 1024x768 --pos 0x0 --output VGA --mode 1600x1200 --pos 1024x0'
Als root gibt's dann noch:

Code: Alles auswählen

pack_wann_inst ()
{
    ls /var/lib/dpkg/info/ -ltra | \
        grep .list$ | \
        awk '{print $6"-"$7 " " $9 }' | \
        sed -e 's/\.list//'
}

pack_size ()
{
    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -n
}

pack_all ()
{
    COLUMNS=200 dpkg -l | awk '/^i/ {print $2, $3}'
}

pack_all-vers ()
{
    dpkg --get-selections | awk '/\011install/ {print $1}'
}

pack_info20 ()
{
    ls /var/lib/dpkg/info/ -ltra | \
        grep .list$ | \
        awk '{print $9 }' | \
        sed -e 's/\.list//' >/tmp/PACKETLIST
    dpkg -l `tail -n 20 /tmp/PACKETLIST`
    rm /tmp/PACKETLIST
}


if [ "$UID" -eq "0" ]
then
  for i in /etc/init.d/*
  do
    alias rc${i##*/}=$i
  done
fi
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

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

Re: Pimp the Shell

Beitrag von ThorstenS » 10.07.2010 17:57:01

roli hat geschrieben: Als root gibt's dann noch:

Code: Alles auswählen

if [ "$UID" -eq "0" ]
then
  for i in /etc/init.d/*
  do
    alias rc${i##*/}=$i
  done
fi
eine alte SuSE Angewohntheit, gelle?!
Dank service und bash_completion kannst du dir rc$DIENSTENAME sparen, denn durch die completion ist selbst eine Kurzeingabe von start/stop/restart/reload möglich.

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

Re: Pimp the Shell

Beitrag von Meillo » 10.07.2010 23:28:51

Code: Alles auswählen

function psgrep () {
  ps aux | grep "$1" | grep -v "grep"
}
Wie wäre es mit:

Code: Alles auswählen

ps u `pgrep "$1"`
Das zweite grep ist ohnehin unschön. Von Hand würde man es so machen:

Code: Alles auswählen

ps aux | grep '[f]oo'

Code: Alles auswählen

alias rm='rm -i'
... halte ich noch immer für schlecht. :roll: However.

Code: Alles auswählen

function mkcd () {
  mkdir -p "$1"
  cd "$1"
}
Man könnte es noch verbessern zu:

Code: Alles auswählen

function mkcd () {
  mkdir -p "$1" && cd "$1"
}
Jedenfalls ist das was das ich mir schon länger wünsche. (Auch wenn ich mich nicht darauf einlassen will, um es nicht zu vermissen wenn ich auf anderen Systemen bin.)



Nachdem der Thread ja nun auf andere Shells ausgedehnt wurde kann ich meine .kshrc auch vorstellen:

Code: Alles auswählen

set -o vi
set -o histexpand

trap 'echo -e "\033[01;31m[$?]\033[0;00m" >&2' ERR

PS1='
;-) '

export EDITOR=vi
export VISUAL=vi

export HISTSIZE=10000

if [ "$TERM" != "dumb" ]; then
    eval "`dircolors -b $HOME/.dircolorsrc`"
    alias ls='ls --color=auto'
fi

alias ll='ls -lF'
alias lh='ls -lhF'
alias la='ls -AF'
Mein Prompt ist je nach Rechner ein anderer Smilie.

Der Trap schreibt mir den entsprechenden Fehlercode eines Befehls raus, was ich sehr praktisch finde.

Die farbige ls-Ausgabe ist etwas auf das ich zukünftig evtl. verzichten wollen werde. Mal sehen.

Die drei ls-Aliase, jedenfalls die ersten zwei, sind momentan jedenfalls Pflicht.


Statt Funktionen habe ich kleine Shellscripte. Wichtig sind:
`e' für: ed "$@"
`s' für: screen "$@"
`x' für: startx


Ansonsten tendiere ich eher dazu mich nicht zu sehr einzurichten da ich auf vielen verschiedenen Rechnern unterwegs bin und der Einzugsaufwand und die Frage ob irgendwo irgendwas vorhanden ist letztlich mehr nervt als das Kommando einfach auszutippen.
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 » 11.07.2010 07:44:12

Ich seh schon, das psgrep hat es euch angetan. :D
Ansonsten sind hier noch ein Paar nette Ideen vertreten. Ich werd das ein oder andere auf Alltagstauglichkeit prüfen.

@ meilo
das rm -i finde Ich zwar nervig, aber den Schalter halte ich mir gegen Flüchtigkeitsfehler trotzdem lieber offen.
"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
Faber38
Beiträge: 380
Registriert: 21.03.2009 23:28:20
Wohnort: Elsdorf

Re: Pimp the Shell

Beitrag von Faber38 » 11.07.2010 07:52:30

ich liebe solche Threads..
da kann man sich als Einäugiger mal so richtig etwas abschauen...

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

Re: Pimp the Shell

Beitrag von ThorstenS » 11.07.2010 10:08:02

mein alias k zeigt mir die zuletzt geänderte Datei an. Das finde ich sowohl unter /var/log als auch in /etc hilfreich.

Code: Alles auswählen

alias k='ls -ltr'
alias ..='cd ..'
farbige manpages erhält man so:

Code: Alles auswählen

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'

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 » 11.07.2010 10:14:53

ThorstenS hat geschrieben: farbige manpages erhält man so:

Code: Alles auswählen

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'
Mit ein wenig anderen Farben ist das auf meinem dunkelblauen Terminal sicher auch eine feine Sache.
"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.

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Pimp the Shell

Beitrag von suno » 11.07.2010 11:44:19

Code: Alles auswählen

alias rm='rm -i'
... halte ich noch immer für schlecht. :roll: However.
Richtige Maenner verwenden

Code: Alles auswählen

alias rm='rm -rf'
;)

Was ich sehr hilfreich finde ist
http://sunoano.name/ws/bash.html#colorized_shell_prompt

Das hilft dabei nicht server zu verwechseln z.B. man will die workstation rebooten, leider macht man "reboot" im terminal mit dem man via SSH auf einem remote server ist .... typisches Zeug halt, ist jedem schon passiert.
Zuletzt geändert von suno am 11.07.2010 11:48:02, insgesamt 1-mal geändert.

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 » 11.07.2010 11:47:07

suno hat geschrieben: Richtige Maenner verwenden

Code: Alles auswählen

alias rm='rm -rf'
;)
Mit dem -f hast du aber gerade geblinzelt. Ich hab es genau gesehen.. :D
"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.

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Pimp the Shell

Beitrag von suno » 11.07.2010 11:54:53

Saxman hat geschrieben:
suno hat geschrieben: Richtige Maenner verwenden

Code: Alles auswählen

alias rm='rm -rf'
;)
Mit dem -f hast du aber gerade geblinzelt. Ich hab es genau gesehen.. :D
Stimmt genau, den alias rm -r auf rm verwende ich aber wirklich (/me is half a dude, at least :D)

Code: Alles auswählen

sa@wks:~$ type rm
rm is aliased to `rm -r'
sa@wks:~$
Waere eigenlich eine Ueberlegung wert gleich -rf zu machen dann nerven mich die .git repos nicht mehr ... backups hat man ja ohnehin.

Update:
Ah, wtf ...

Code: Alles auswählen

sa@wks:~$ type rm
rm is aliased to `rm -r'
sa@wks:~$ type rm
rm is aliased to `rm -r'

editing .bashrc ....

sa@wks:~$ source ~/.bashrc 
sa@wks:~$ type rm
rm is aliased to `rm -rf'
sa@wks:~$ 
:THX:

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Pimp the Shell

Beitrag von cosmac » 11.07.2010 13:36:02

hi,
Meillo hat geschrieben:Mein Prompt ist je nach Rechner ein anderer Smilie.
meine Rechner haben unterschiedliche Namen :mrgreen:
Ansonsten tendiere ich eher dazu mich nicht zu sehr einzurichten da ich auf vielen verschiedenen Rechnern unterwegs bin und der Einzugsaufwand und die Frage ob irgendwo irgendwas vorhanden ist letztlich mehr nervt als das Kommando einfach auszutippen.
Deswegen habe ich im Laufe der Jahre immer mehr aliases "verloren". Als einziger ist 'll=ls -la' übrig geblieben, ohne den geht's wirklich nicht.
suno hat geschrieben:Was ich sehr hilfreich finde ist
http://sunoano.name/ws/bash.html#colorized_shell_prompt

Das hilft dabei nicht server zu verwechseln z.B. man will die workstation rebooten, leider macht man "reboot" im terminal mit dem man via SSH auf einem remote server ist .... typisches Zeug halt, ist jedem schon passiert.
Wer trotz Farbe noch den falschen erwischt braucht Debianmolly-guard
http://en.wikipedia.org/wiki/Big_red_button#Molly-guard
Beware of programmers who carry screwdrivers.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Pimp the Shell

Beitrag von roli » 11.07.2010 16:18:39

ThorstenS hat geschrieben:eine alte SuSE Angewohntheit, gelle?!
Jeep, von "Linux 4.4 bis ca. 8.0" war ich eine S.u.S.E. ...
ThorstenS hat geschrieben:Dank service und bash_completion kannst du dir rc$DIENSTENAME sparen, denn durch die completion ist selbst eine Kurzeingabe von start/stop/restart/reload möglich.
Ich weiss, aber der Mensch ist ein Gewohnheitstier ;-}
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Pimp the Shell

Beitrag von suno » 17.07.2010 15:05:22

zwei recht nette Dinge die ich mir vor nicht allzulanger Zeit in meine .bashrc gegeben habe sind:

Code: Alles auswählen

function ,, () {
    cd ..
}
und

Code: Alles auswählen

###_   , xd

 # xd is a smart directory change utility; this function passes
 # results from xd output directly to cd, thereby speeding up changing
 # directories anywhere on the filesystem

function xd () {
    cd $(/usr/bin/xd $*)
}
Je aelter man wird, desto fauler wird man ... nicht mal "cd .." will man mehr tippen :D

jeff84
Beiträge: 324
Registriert: 15.07.2009 13:32:36

Re: Pimp the Shell

Beitrag von jeff84 » 17.07.2010 15:22:27

suno hat geschrieben: Richtige Maenner verwenden

Code: Alles auswählen

alias rm='rm -rf'
Richtige Männer verwenden:

Code: Alles auswählen

alias rm='rm -rf --no-preserve-root'

Benutzeravatar
Tintom
Moderator
Beiträge: 3069
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Pimp the Shell

Beitrag von Tintom » 17.07.2010 18:29:00

Keine Ahnung ob es so etwas auch als fertiges Programm gibt - ich hab mir damals dafür eine Funktion geschrieben:

Code: Alles auswählen

# lsar - list archives
function lsar () {
case $1 in
*.tar.gz)
tar -tvzf $1
;;
*.zip)
unzip -l $1
;;
*.tar.bz2)
tar -tvjf $1
;;
*.rar)
unrar l $1
;;
*.tar)
tar -tvf $1
;;
esac
}

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

Re: Pimp the Shell

Beitrag von Meillo » 17.07.2010 18:51:24

Tintom hat geschrieben:Keine Ahnung ob es so etwas auch als fertiges Programm gibt
unp
Use ed once in a while!

mtheiss
Beiträge: 154
Registriert: 01.04.2005 22:07:26
Lizenz eigener Beiträge: MIT Lizenz

Re: Pimp the Shell

Beitrag von mtheiss » 20.07.2010 21:39:10

Code: Alles auswählen

beer()
{
    local BLACK_ON_WHITE="\033[47;5;30m"
    local WHITE_ON_YELLOW="\033[43;5;37m"
    local RED_ON_BLACK="\033[40;1;31m"
    local BACK="\033[0m"
    echo
    echo
    echo -e "         ${RED_ON_BLACK}Mahlzeit!!!$BACK"
    echo
    echo -e "         ${BLACK_ON_WHITE}_.._..,_,_$BACK"
    echo -e "        ${BLACK_ON_WHITE}(          )$BACK"
    echo -e "         ${WHITE_ON_YELLOW}]~,\"-.-~~[$BACK"
    echo -e "       .=${WHITE_ON_YELLOW}])' (;  ([$BACK    ${RED_ON_BLACK}$@${BACK}"
    echo -e "       | ${WHITE_ON_YELLOW}]:: '    [$BACK"
    echo -e "       | ${WHITE_ON_YELLOW}]): .)  ([$BACK"
    echo -e "       '=${WHITE_ON_YELLOW}|:: '    |$BACK"
    echo -e "          ${WHITE_ON_YELLOW}~~----~~$BACK"
}
Ganz wichtig ;)

yeti

Re: Pimp the Shell

Beitrag von yeti » 21.07.2010 16:14:51

"Pimp the Shell" und damit BASH meinen ist doch ein bissl scheuklappig...
The Shell ist immernoch die gute alte /bin/sh.

Antworten