Frage Welche nützlichen Dinge kann man seiner .bashrc hinzufügen? [geschlossen]


Gibt es etwas, ohne das du nicht leben kannst und das mein Leben viel einfacher macht? Hier sind einige, die ich benutze ('Festplattenplatz' & 'Ordner' sind besonders praktisch).

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"

142


Ursprung


Dies sollte Community-Wiki sein - Toro
In Community-Wiki verwandelt. Genießen. - Gareth
piped zu mehr? Ich wette, du wärst glücklicher mit weniger oder weniger -F - derobert
Abgesehen davon, dass es diese "Sortierung" vor den anderen gibt, da die Sortierung die volle Eingabe benötigt, würde die geringere -F Sie nur die Sortierung schneller sehen lassen, und ich wette, dass es ziemlich schnell ist. - GreenKiwi
Falls jemand interessiert ist, gibt es einen Dienst, mit dem Sie blättern, eine Liste erstellen und Ihre Aliase eingeben können: alias.sh - Sam152


Antworten:


Ich habe ein kleines Skript, das Archive extrahiert, ich habe es irgendwo im Netz gefunden:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

81



Nett. Wiederum gibt es dieses IDE / Vim-Argument bezüglich der Befehle aus dem Speicher. Fantastisches bisschen Skript aber. Auf jeden Fall in der. Bashrc Prost! - Gareth
Es gibt einen netten und einfachen Linux-Befehl namens "unp", den Unpacker, der das und mehr macht. - Sander Marechal
Der Befehl hat eine fehlende Funktion. Es kann das 7z-Paket nicht öffnen boost.org/doc/libs/1_39_0/more/getting_started/... korrekt. Weißt du, wie man das Problem löst? - Léo Léopold Hertz 준영
Neuere Versionen von tar erkennen automatisch den Archivtyp und können alle unterstützten Formate nur mit 'tar xvf' extrahieren. - Prof. Moriarty
@Sander dtrx ist auch nicht schlecht. Es stellt sicher, dass das Archiv in ein eigenes Unterverzeichnis extrahiert. - Tobu


Da ich so viele verschiedene Maschinen benutze, meine .bashrc setzt die Eingabeaufforderung immer so, dass sie unter anderem den Namen des Servers enthält, an dem ich gerade angemeldet bin. Auf diese Weise tippe ich, wenn ich drei Ebenen tief in telnet / ssh bin, nicht das falsche Ding in das falsche Fenster. Es ist wirklich scheiße rm -rf . im falschen Fenster! (Hinweis: Zu Hause ist Telnet auf allen Computern deaktiviert. Bei der Arbeit ist ssh nicht immer aktiviert und ich habe keinen Root-Zugriff auf sehr viele Computer.)

Ich habe ein Skript ~/bin/setprompt das wird von meinem ausgeführt .bashrc, was beinhaltet:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

# Throw it all together 
PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "

Dieses Skript setzt die Eingabeaufforderung auf den Hostnamen gefolgt von :) wenn der letzte Befehl erfolgreich war und :( wenn der letzte Befehl fehlgeschlagen ist.


39



Der $? Check ist eine ziemlich nette Idee, ich mag es. - derobert
Ich zeige auch den Status in meiner Eingabeaufforderung, behalte aber den numerischen Wert und färbt ihn rot, wenn nicht Null, sonst grün. - pgs
Interessant.... - imapollo


Farbe für Manpages in weniger macht manpages leichter lesbar:

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'

Farbige Manpages können auch erhalten werden, indem die meisten Manpages installiert und als MANPAGER env-Variable verwendet werden. Wenn Sie diesen Pager nicht nur für den Benutzer verwenden möchten, verwenden Sie die Variable PAGER wie folgt:

export PAGER="/usr/bin/most -s"

25





Nicht mehr CD ../../../ .. aber bis 4

Geht viele Dirs als die Zahl übergeben als Argument, wenn keine standardmäßig um 1 erhöht (in einem Link in einem Kommentar in stackoverflow.com gefunden und ein bisschen geändert)

up(){
  local d=""
  limit=$1
  for ((i=1 ; i <= limit ; i++))
    do
      d=$d/..
    done
  d=$(echo $d | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd $d
}

24



Diese Version von up () scheint unnötig komplex zu sein. Ich benutze diese Version: up () {cd $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }. Sie können den Anruf zu 'pwd' entfernen, wenn Sie es wünschen. - Matthew G
Ich benutze etwas wie folgt: # Directory Navigation Aliase alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


Ich beschäftige mich mit vielen verschiedenen Maschinen, daher ist einer meiner Favoriten Aliase für jede Maschine, die ich häufig zu SSH benötige:

alias claudius="ssh dinomite@claudius"

Es ist auch nützlich, ein Gut einzurichten .ssh/config und SSH-Schlüssel um das Hopping unter den Maschinen noch einfacher zu machen.

Ein weiterer meiner Lieblingsaliasnamen ist das Verschieben von Verzeichnissen:

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."

Und einige für häufig verwendete Variationen von ls (und Tippfehler):

alias ll="ls -l"
alias lo="ls -o"
alias lh="ls -lh"
alias la="ls -la"
alias sl="ls"
alias l="ls"
alias s="ls"

History kann sehr nützlich sein, aber bei den meisten Distributionen wird der Verlauf standardmäßig durch jede auslaufende Shell zerstört, und es hält nicht viel von Anfang an. Ich mag 10.000 Zeilen Geschichte:

export HISTFILESIZE=20000
export HISTSIZE=10000
shopt -s histappend
# Combine multiline commands into one in history
shopt -s cmdhist
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"

Auf diese Weise, wenn ich weiß, dass ich vorher etwas getan habe, aber mich nicht an die Einzelheiten erinnern kann, eine schnelle history | grep foo wird helfen, meine Erinnerung zu joggen.

Ich fand oft, dass ich Piping-Output durchlief awk um eine bestimmte Spalte der Ausgabe zu erhalten, wie in df -h | awk '{print $2}' um die Größe jeder meiner Festplatten zu finden. Um das zu erleichtern, habe ich eine Funktion erstellt fawk in meiner .bashrc:

function fawk {
    first="awk '{print "
    last="}'"
    cmd="${first}\$${1}${last}"
    eval $cmd
}

Ich kann jetzt rennen df -h|fawk 2 Das spart viel Tipparbeit.

Wenn Sie ein Trennzeichen angeben müssen (z.B., awk -F: zum /etc/passwd), kann diese Funktion natürlich nicht damit umgehen. Die leicht überholte Version in dieser Kernpunkt kann beliebig umgehen awk Argumente vor der Feldnummer (erfordert aber immer noch Eingabe von stdin).


19



Ich benutze auch die SSH-Alias- und -SH-Tasten ... es macht alles so einfach - devin
+1 für die Tipps zur Verlaufskontrolle. - Rene Saarsoo
Sie können Hostnamen-Aliase in .ssh / config mit demselben Effekt versehen. In diesem Fall fügen Sie einen Eintrag 'Host cloudius' mit 'Benutzername dinomite' hinzu. - Sirex


GPG verschlüsselt Bashrc

Ich bin mir sicher, dass wir alle Dinge haben, die wir in unseren Bashrc einbringen möchten, die wir nicht leicht von Sudoers lesen wollen. Meine Lösung dafür ist:

if [ -f ~/.bash_private.gpg ]; then
   eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
fi

Ich habe einen GPG-Agenten, der es so macht, dass ich nur alle paar Stunden das Passwort meines privaten Schlüssels eingeben muss. Sie müssen den Benutzern des Systems immer noch vertrauen, da Ihre von Ihnen definierten Variablen, Funktionen und Aliase aus dem RAM extrahiert werden können. Allerdings benutze ich das hauptsächlich für meinen Laptop. Wenn es gestohlen wird, möchte ich nicht, dass jemand Dinge wie:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:secret@server.com/latest; }

15



Verschlüsseln Sie in diesem Fall auch Ihre Historie? Warum verschlüsseln Sie Ihr $ home nicht - Rqomey
@Rqomey, der ganze Punkt ist, dass ich meinen Verlauf nicht verschlüsseln muss, da meine Passwörter nicht in meiner .bash_history angezeigt werden, weil sie durch Aliase oder Funktionen versteckt sind. Darin siehst du Dinge wie MYsql < garbagecollect.sql anstatt mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


das ist eine tolle Ressource dafür:

Zeigen Sie uns Ihre .bashrc


12