it-swarm.com.de

Welche nützlichen Dinge kann man zu .bashrc hinzufügen?

Gibt es etwas, ohne das du nicht leben kannst und das mein Leben einfacher macht SO viel einfacher? Hier sind einige, die ich benutze ('Speicherplatz' & '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"
141
Gareth

Ich habe ein kleines Skript, das Archive extrahiert. Ich habe es irgendwo im Internet 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
Gert M

Da ich so viele verschiedene Computer verwende, setzt mein .bashrc Den Befehl Eingabeaufforderung immer so, dass er unter anderem den Namen des Servers enthält, bei dem ich gerade angemeldet bin. Auf diese Weise tippe ich nicht das Falsche in das falsche Fenster, wenn ich drei Ebenen tief in Telnet/SSH bin. Es ist wirklich scheiße für 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 von meinem .bashrc Ausgeführt wird und Folgendes enthält:

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
Eddie

Farbe für Manpages in weniger macht Manpages ein wenig leichter zu lesen:

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 installiert und als MANPAGER-Umgebungsvariable verwendet werden. Wenn Sie diesen Pager nicht nur für Menschen verwenden möchten, verwenden Sie die Variable PAGER wie folgt:

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

Keine CD mehr ../../../ .. sondern bis 4

Erhöht viele Verzeichnisse als die als Argument übergebene Zahl, wenn keines standardmäßig um 1 erhöht wird (in einem Link in einem Kommentar in stackoverflow.com gefunden und ein wenig 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

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

alias claudius="ssh [email protected]"

Es ist auch nützlich, ein gutes .ssh/config und ssh keys , um das Hüpfen zwischen Maschinen noch einfacher zu machen.

Ein anderer meiner Lieblings-Aliase ist das Verschieben von Verzeichnissen:

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

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

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"

Der Verlauf kann sehr nützlich sein, aber bei den meisten Distributionen wird Ihr Verlauf standardmäßig von jeder beendeten Shell weggeblasen, und er enthält zunächst nicht viel. Ich habe gerne 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 schon etwas getan habe, mich aber nicht an die Einzelheiten erinnern kann, ein kurzes history | grep foo wird mir helfen, mein Gedächtnis zu verbessern.

Ich fand mich oft dabei, die Ausgabe durch awk zu leiten, um eine bestimmte Spalte der Ausgabe zu erhalten, wie in df -h | awk '{print $2}' um die Größe jeder meiner Festplatten zu ermitteln. Um dies zu vereinfachen, habe ich in meiner .bashrc-Funktion eine Funktion fawk erstellt:

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

Ich kann jetzt df -h|fawk 2 das spart ein gutes Stück Tippen.

Wenn Sie ein Trennzeichen ( angeben müssen, z. B. , awk -F: zum /etc/passwd), diese Funktion kann das offensichtlich nicht. Die leicht überarbeitete Version in this Gist kann beliebige awk Argumente vor der Feldnummer verarbeiten (erfordert jedoch weiterhin Eingaben von stdin).

19
Drew Stephens

GPG-verschlüsseltes bashrc

Ich bin sicher, wir haben alle Dinge, die wir gerne in unseren Bashrc aufnehmen möchten und die für Sudoer nicht leicht lesbar sein sollen. Meine Lösung hierfür lautet:

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

Ich habe einen GPG-Agenten, der dies ermöglicht, sodass ich das Kennwort meines privaten Schlüssels nur einmal alle paar Stunden eingeben muss. Sie müssen den Benutzern des Systems noch etwas Vertrauen schenken, da Ihre von Ihnen definierten Variablen, Funktionen und Aliase aus dem RAM extrahiert werden können. Ich benutze dies jedoch 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:[email protected]/latest; }
15
Bruno Bronosky

dies ist eine großartige Ressource dafür:

zeig uns deine .bashrc

12
devin

Früher habe ich diese überall eingerichtet, aber dann wurde mir klar, dass es besser ist, sich daran zu erinnern, wie man sie "manuell" macht, weil dies bedeutet, dass ich 1) vollständig verstehe, was vor sich geht, und 2) Zugriff auf diese Funktionen habe, selbst wenn Meine benutzerdefinierte .bashrc wurde nicht installiert.

Das einzige, was ich heutzutage für Aliase verwende, ist, die wiederholte Eingabe wirklich langer Zeilen zu reduzieren (z. B. alias myhost='ssh -T [email protected] screen -dAr').

12
pjz

Die Einzeiler und winzigen Skripte da draußen könnten für immer weitergehen. Ich empfehle Man Bash und schreibe Dinge selbst. Einige gute kurze Bash-Sachen unter http://www.commandlinefu.com . Hier sind ein paar Dinge.

#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
# fix spelling errors for cd, only in interactive Shell
shopt -s cdspell
# vi mode
set -o vi

s() { # do Sudo, or Sudo the last command if no argument given
    if [[ $# == 0 ]]; then
        Sudo $(history -p '!!')
    else
        Sudo "[email protected]"
    fi
}

Prompt_command() {
    p=$PWD  # p is much easier to type in interactive shells
    # a special IFS should be limited to 1 liners or inside scripts.
    # Otherwise it only causes mistakes.
    unset IFS
}
Prompt_COMMAND=Prompt_command


# smart advanced completion, download from
# http://bash-completion.alioth.debian.org/
if [[ -f $HOME/local/bin/bash_completion ]]; then
    . $HOME/local/bin/bash_completion
fi


extract () { # extract files. Ignore files with improper extensions.
    local x
    ee() { # echo and execute
        echo "[email protected]"
        $1 "$2"
    }
    for x in "[email protected]"; do
        [[ -f $x ]] || continue
        case "$x" in
            *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
            *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
            *.bz2 )             ee "bunzip2" "$x"   ;;
            *.rar )             ee "unrar x" "$x"   ;;
            *.gz )              ee "gunzip" "$x"    ;;
            *.tar )             ee "tar xvf" "$x"   ;;
            *.Zip )             ee "unzip" "$x"     ;;
            *.Z )               ee "uncompress" "$x" ;;
            *.7z )              ee "7z x" "$x"      ;;
        esac
    done
}
9
Ian Kelling

Ein kleiner Tipp für Bash, wenn Sie ein Systemadministrator sind und viel mit Root-Rechten arbeiten:

shopt -o noclobber

Dies verhindert, dass Sie versehentlich den Inhalt einer bereits vorhandenen Datei zerstören, wenn Sie die Ausgabe umleiten (> Dateiname). Sie können das Überschreiben mit> | Dateiname jederzeit erzwingen.

9
Cyberdrow

Ich habe folgendes in meinem bashrc

function __setprompt {
  local BLUE="\[\033[0;34m\]"
  local NO_COLOUR="\[\033[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'`
  if [ $SSH2_IP ] || [ $SSH_IP ] ; then
    local SSH_FLAG="@\h"
  fi
  PS1="$BLUE[\$(date +%H:%M)][\u$SSH_FLAG:\w]\\$ $NO_COLOUR"
  PS2="$BLUE>$NO_COLOUR "
  PS4='$BLUE+$NO_COLOUR '
}
__setprompt

Auf einem lokalen Computer sieht es so aus:

[17:57][user:~]$

aber auf einer Fernbedienung (über ssh) ist es:

[17:57][[email protected]:~]$
8

Ich habe dies für eine Weile in meiner .bashrc und fand es hilfreich. Wenn Sie sich in die Box einmischen, wird der Bildschirm beim Anmelden automatisch gestartet. Wenn Ihre Netzwerkverbindung unterbrochen wird oder was auch immer, verlieren Sie nicht, was Sie getan haben. Es sollte am Ende platziert werden.

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x  -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs

sleep 1
screen -U -RR && exit 0

echo "Screen failed! continuing with normal bash startup"
fi
6
baudtack

Ich habe ein paar Kleinigkeiten:

# stop the pc speaker ever annoying me :)
setterm -bfreq 0

# don't put duplicate lines in the history. See bash(1) for more options
HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
HISTCONTROL=ignoreboth

# Expand the history size
HISTFILESIZE=10000 
HISTSIZE=100

# commands with leading space do not get added to history
HISTCONTROL=ignorespace

# am I on the internet?
alias p4='ping 4.2.2.2 -c 4'

# pwsafe
alias pw='pwsafe -p'

# ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -laptr' #oldest first sort
alias labc='ls -lap' #alphabetical sort

# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# install a package and automatically respond yes to confirmation Prompt
alias ins="Sudo aptitude install"

# remove a package and its configuration files
alias remp="Sudo aptitude purge"

# search for a package - apt-cache and aptitude search in different ways
# so have both
alias searchc="apt-cache search"
alias search="aptitude search"
alias show="aptitude show"
5
Hamish Downer

Wie viele Aliase für fortune benötigen Sie überhaupt?

Ich möchte einen cdd Alias ​​erstellen, der mich dorthin führt, wo ich derzeit am wahrscheinlichsten auf diesem Server arbeite.

PATH Neudefinition gehört wirklich zu .bash_profile, nicht zu .bashrc.

Auf einem Server, auf dem ich routinemäßig eine große Menge von screens verwende, hat mein .bashrc:

alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on

(Die screens wurden beispielsweise mit screen -U -S chaos1 Eingestellt.)

5
chaos

Unter anderem habe ich einige Standardeinstellungen für weniger festgelegt, das versehentliche Schließen meines Terminals verhindert und die Vorwärtsnavigation durch den Verlauf aktiviert:

# ignore case, long Prompt, exit if it fits on one screen, allow colors for ls and grep colors
export LESS="-iMFXR"

# must press ctrl-D 2+1 times to exit Shell
export IGNOREEOF="2"

# allow ctrl-S for history navigation (with ctrl-R)
stty -ixon

Beenden Sie alle Protokolle in/var/log

alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"
5
hoberion

Um Farben für alle grep-Befehle wie grep, egrep und zgrep zu haben, habe ich Folgendes in meiner .bashrc

export GREP_OPTIONS='--color=auto'

Der Alias ​​"Ordner" ist großartig! Ich habe es leicht modifiziert, damit Verzeichnisse mit Leerzeichen keine Fehler verursachen.

alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'
4
phoenix8

Ich würde @ pjz 'Kommentar über das manuelle Wissen von Dingen wiederholen, anstatt sie einzurichten. Vor allem, wenn Sie auf zahlreiche Maschinen zugreifen, wie ich es immer zu tun scheine.

Eine, die ich definitiv kenne, ist set -o vi weil ich die vi-Editing-Befehle in bash kenne und die emacs-Befehle nicht kenne (außerdem stört Strg + A screen). Auf meinen eigenen Kisten habe ich das in .bashrc

Ich finde auch, dass ich export EDITOR=vim, weil einige der jüngsten Distributionen standardmäßig Nano verwenden, was am ärgerlichsten ist, wenn sie von einem Dienstprogramm verwendet werden, bei dem Sie etwas bearbeiten müssen, als ich vi erwartet hatte. : - /

Ich ändere auch meine Eingabeaufforderung. Ich habe vor langer, langer Zeit festgestellt, dass das Hinzufügen des letzten Fehlercodes gerade so nützlich ist, dass es mir gefällt. Und ich mag den vollständigen Pfadnamen in der Eingabeaufforderung. Und die aktuelle screen Nummer auch. Und es ist nur sinnvoll, den aktuellen Benutzer- und Hostnamen anzugeben. Meine Eingabeaufforderung lautet PS1='\[email protected]\h $PWD $WINDOW [$?] \$ '

3
staticsan

Hier sind Minen:

export HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:bg:fg"

# 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

# shows you if you are in a chroot or in a git repository
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;30m\]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$(__git_ps1)\$ '


if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# two handy single-letter aliases

alias u='ls -hltr'
alias e='du * -cs | sort -nr | head'
alias g='grep -C5 --color=auto'

# creates a temp dir and cds into it
alias td='pushd $(mktemp -d)'

# find <dir> <file name regexp> <file contents regexp>
function fing { find "$1" -name "$2" -exec grep -H "$3" "{}" \; }

# shows "git diff" across any project in any subdirectory
alias git-differ='for g in $(find . -name ".git"); do g=${g%%.git};printf "$g\t\t\t";pu $g >/dev/null && git diff |wc -l; p >/dev/null; done'

# does git house keeping across any project in any subdirectory
alias git-housekeep='for g in $(find . -name ".git"); do g=${g%%.git};echo $g;pu $g && git repack && git gc --auto && p;done'

# Debian update
alias apg='aptitude update && aptitude dist-upgrade && aptitude clean'

# Quick way to serve files in HTTP from the local dir
alias webs='python -m SimpleHTTPServer'
3
Federico
3
raspi

Lassen Sie die Bash überprüfen, ob sich die Fenstergröße geändert hat (verhindert, dass die Zeilenbearbeitung merkwürdig wird, wenn Sie die Größe Ihres Terminalfensters ändern).

shopt -s checkwinsize

Das ist mein Favorit. Verursacht Bash zu anhängen an die Geschichte anstatt an überschreiben es. Wenn Sie bash starten, wird normalerweise der Verlauf in den Speicher geladen, und wenn Sie ihn schließen, wird er ausgeschrieben. Das heißt, wenn Sie zwei Shells laden, beide verwenden und dann beide schließen, überschreibt die zuletzt geschlossene alle Änderungen.

Dieses Snippet bewirkt, dass zunächst nur Änderungen angehängt werden (anstatt mit dem gesamten Puffer zu überschreiben) und dann nach jedem Befehl Änderungen ausgeschrieben werden. Tatsächlich erhalten Sie eine Live-Aktualisierung von .bash_history. Wenn Sie also ein neues Terminal starten, haben Sie alle Befehle aus dem Verlauf Ihrer anderen laufenden Sitzungen.

shopt -s histappend
Prompt_COMMAND='history -a'
3
Dan Udey

Hier sind einige meiner Favoriten:

alias ls='ls -F --color=auto'
alias l='ls'
alias ll='ls -ahl'
alias ..='cd ..'
alias ...='cd ../..'
alias mv='mv -i'

mkcd() {
        if [ $# != 1 ]; then
                echo "Usage: mkcd <dir>"
        else
                mkdir -p $1 && cd $1
        fi
}

# Git related
alias gs='git status'
alias gc='git commit'
alias ga='git add'
alias Gd='git diff'
alias gb='git branch'
alias gl='git log'
alias gsb='git show-branch'
alias gco='git checkout'
alias gg='git grep'
alias gk='gitk --all'
alias gr='git rebase'
alias gri='git rebase --interactive'
alias gcp='git cherry-pick'
alias grm='git rm'
2
Tom

Von Automatisierung der Linux- und Unix-Administration von Kirk Bauer (tolles Buch!)

PS1='\n[\[email protected]\h]: \w\n$?> '

Die neue Zeile am Anfang gehört mir. Ich möchte eine klare Linie zwischen der vorherigen Ausgabe und der Eingabeaufforderung haben. Der Rest ist:

\ u = Benutzername

\ h = Host

\ w = Arbeitsverzeichnis

$? = letzter Rückkehrcode

2
Cawflands

Ich benutze dies ungefähr 20 Mal am Tag, um in das zuletzt geänderte Verzeichnis zu cd:

cl()
{
        last_dir="$(ls -Frt | grep '/$' | tail -n1)"
        if [ -d "$last_dir" ]; then
                cd "$last_dir"
        fi
}

Diese beiden enthalten permanente Lesezeichen für häufig verwendete Verzeichnisse:

rd(){
    pwd > "$HOME/.lastdir_$1"
}

crd(){
        lastdir="$(cat "$HOME/.lastdir_$1")">/dev/null 2>&1
        if [ -d "$lastdir" ]; then
                cd "$lastdir"
        else
                echo "no existing directory stored in buffer $1">&2
        fi
}
2
gz34

Das sind meine Favoriten:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

Ich mag es, einen Befehlszeilenverlauf zu haben, der nie vergisst.

Leider habe ich vor einiger Zeit eine Shell von cron gestartet, die .bashrc irgendwie nicht gelesen hat, und alles auf 500 Zeilen reduziert, was die Geschichte eines Jahres zerstört hat. Daher empfehle ich diese in/etc/bashrc.

2
skiphoppy

Dies ist einer meiner Favoriten:

alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "[email protected]"'

Wenn ich vergessen habe, mich zu authentifizieren, kann ich dies tun, ohne meine Eingabe mit ssh-add after the ssh session verschwenden zu müssen.

1
joshk0

Ein paar gute

Lassen Sie SSH den Hostnamen, an den Sie ssh senden, automatisch vervollständigen (sofern er in Ihrer Konfiguration oder im Verlauf enthalten ist).

complete -o default -o nospace -W "$(/usr/bin/env Ruby -ne 'puts $_.split(/[,\s]+/)[1..-1].reject{|Host| Host.match(/\*|\?/)} if $_.match(/^\s*Host\s+/);' < $HOME/.ssh/config)" scp sftp ssh

Einige nützliche Einstellungen für die Bash-Vervollständigung

bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
bind "set show-all-if-ambiguous On" # show list automatically, without double tab

Einige nützliche für Mac OS X.

alias nospotlight='Sudo mdutil -a -i off'
alias cleardnscache='Sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'
1
lynxman
# vi ~/.bashrc # red/green terminal colors regarding exit code
export Prompt_COMMAND='PS1="`
if [[ \$? = "0" ]];
then echo "\\[\\033[0;32m\\]";
else echo "\\[\\033[0;31m\\]";
fi`[\[email protected]\h \w]\[\e[m\] "'
export PS1
1
LanceBaynes
IP_ADDRESS_BASH=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
PS1="\h $IP_ADDRESS_BASH \w % "

Anschließend wird die IP Ihres Computers angezeigt, bei dem Sie sich gerade angemeldet haben.

1
mrkafk

Ich kompiliere eine Reihe von Dingen manuell in $ HOME/local, damit ich diesen kleinen Ausschnitt habe:

for prog in $HOME/local/*
do
    if [ -d "$prog/bin" ]; then
        export PATH=$prog/bin:$PATH
    fi
    if [ -d "$prog/include" ]; then
        export C_INCLUDE_PATH=$prog/include:$C_INCLUDE_PATH
    fi
    if [ -d "$prog/lib" ]; then
        export LD_LIBRARY_PATH=$prog/lib:$LD_LIBRARY_PATH
        export LIBRARY_PATH=$prog/lib:$LIBRARY_PATH
    fi
    if [ -d "$prog/man" ]; then
        export MANPATH=$prog/man:$MANPATH
    fi
    if [ -d "$prog/share/man" ]; then
        export MANPATH=$prog/share/man:$MANPATH
    fi
done

Ich habe auch meinen IRC Client auf meinem Server, der auf dem Bildschirm ausgeführt wird, also habe ich diesen (keine .bashrc-Sache, aber immer noch nützlich)

#!/usr/bin/env bash

RUNNING=`screen -ls | grep irc`
if [ "" = "$RUNNING" ]; then
   screen -S irc irssi
else
   screen -dr irc
fi
1
Daniel Huckstep

Ich benutze mein Bashrc auf zahlreichen Maschinen, daher habe ich dieses kleine Snippet, um sicherzustellen, dass LS farbig ist. Dies behebt das Problem auf OSX-Computern, möglicherweise sogar auf * BSD, wenn Sie die Uname-Zeile anpassen.

if [ "$TERM" != "dumb" ]; then
    if [ `uname` == "Darwin" ]; then
       alias ls='ls -G'
    else
       eval "`dircolors -b`"
       alias ls='ls --color=auto'
    fi
fi

Außerdem habe ich einen Befehl zum Sichern einer Datei, der nützlich ist, wenn Sie eine Konfigurationsdatei ändern möchten und vorab eine schnelle Kopie erstellen möchten.

bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }
1
Andrew Williams
mkdircd () { mkdir -p "[email protected]" && eval cd "\"\$$#\""; }

ecb () { emacsclient -n -a emacs [email protected] & } # open in emacsclient in the background
ecp () { emacsclient -n $(which [email protected]) & } # open a given file found in a $PATH in emacsclient
ecr () { Sudo_EDITOR="emacsclient -a emacs" sudoedit [email protected]; } # start emacsclient or emacs and open the file as root

eCf () { emacs --batch --eval "(byte-compile-file \"[email protected]\")"; } # byte-compile file
eCa () { emacs --batch --eval "(batch-byte-compile-if-not-done)" *.el; } # byte-compile all el files in the current directory and it's children
1
Adobe

. $ HOME/bin/git-Prompt/ git-Prompt.sh

0
brunoqc

Ein paar Aliase, mit denen ich den Edge vom täglichen CLI-Grind entferne ...

# I find myself doing this a lot
alias hg='history | grep '

# Likewise this, plus I'm always mistyping it...
alias findy='find . -name'

# sometimes you're just not sure you want to delete something...
alias trash='mv -t ~/.local/share/Trash/files --backup=t'

alias vb='vim ~/.bashrc'

# I find typing 'cd ..' less than optimal
alias up='cd ..'
alias 2up='cd ../../'
alias 3up='cd ../../../'
alias 4up='cd ../../../../'

# re-map caps lock key to be Ctrl
# (works on Linux, at least)
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "add control = Caps_Lock"

# helpful history settings:
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE=ls:ll:la:l:cd:pwd:exit:mc:su:df:clear:cls
0
yalestar

Bei der Arbeit muss ich manchmal ein Solaris-System verwenden.

Das System wird jedoch zentral über Puppet verwaltet, einschließlich der Kennwortdatei (einschließlich der Shell-Einstellung).

Mein .bashrc liest daher so etwas wie:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

So korrigieren Sie die Fenstergröße in GNU Bildschirm nach Größenänderung:

shopt -s checkwinsize

Um die Berechtigungen für ein Verzeichnis anzuzeigen, klicken Sie auf ls -ld:

alias lld='ls -ld'

Verlaufsanzeige:

alias h='history | zgrep'

Und Inhalt meines zgrep -Skripts, bei dem ich nicht herausfinden konnte, wie ich direkt in den Alias ​​stopfen kann:

#!/bin/sh
grep "${*-.}"
0

Ich bin süchtig nach Bildschirmen und verwende die folgenden Verknüpfungen für SSHing zu Maschinen. Mit diesem Skript tippe ich p hostname In SSH auf einen Host und führe den Bildschirm aus, oder o hostname, Um dasselbe zu tun, aber den Bildschirm auf dem lokalen Computer auszuführen.

Zuerst ein Skript, das eine Verbindung zu einem SSH-Server mit demselben Namen wie das von Ihnen ausgeführte Skript herstellt. Ich nenne das simple_ssh:

#!/bin/sh
BASENAME=$(basename $0)

if [ "$SCREEN" = "1" ]; then
    export SCREEN=0
    exec screen -RD scr$BASENAME -s $0
Elif [ "$SCREEN" = "2" ]; then
    exec ssh $BASENAME "[email protected]" -t 'screen -RD'
fi

exec ssh $BASENAME "[email protected]"

Verknüpfen Sie dies mit mars in Ihrem Pfad und mars wird zu einer Verknüpfung für ssh mars:

[email protected]:bin$ ln -s simple_ssh mars
[email protected]:bin$ mars
[email protected]:~$

Mit der Umgebungsvariablen $SCREEN Können Sie automatisch den Bildschirm GNU mit der Verbindung ausführen. SCREEN=1 Führt den Bildschirm lokal aus (z. B. wenn der Bildschirm nicht auf dem Host installiert ist) und SCREEN = 2 führt es auf dem Host selbst aus.

Verwenden Sie ein paar Aliase, um dies zu verknüpfen:

alias o='SCREEN=1 exec'
alias p='SCREEN=2 exec'

Verwenden Sie ein Skript, um Symlinks für alle Ihre Hosts mit einer ~/.ssh/config - Datei wie folgt zu erstellen:

Host mars
    HostName mars.example.com
    User abackstrom

Das Skript sshconfig2simplessh:

#!/bin/sh

BASENAME=$(basename "$0")
USAGE="Usage: $BASENAME /path/to/bin"

if [ -z "$1" ] ; then
    echo $USAGE
    exit 0
fi

if [ ! -d "$1" ] ; then
    echo "$1 is not a directory" >&2
    exit 1
fi

cd "$1"

HOSTS=$(grep '^Host ' < ~/.ssh/config | cut -d' ' -f2)

for Host in $HOSTS ; do
    if [ ! -e "$Host" ]; then
        echo ln -s simple_ssh "$Host"
        ln -s simple_ssh "$Host"
    fi
done
0

Fedora

alias install=Sudo yum install

Debian

alias install=Sudo apt-get update && Sudo apt-get install
0
egorgry