/etc/profile je sistemska datoteka, ki se ponavadi prebere po zagonu interaktivne lupine. V njej je nastavljena spremenljivka PATH (ker ima po shadow privzeto omejeno vredost), razni aliasi, lahko pa še posebna pravila za bash-completion in druge nastavitve. Je skripta kot katerakoli druga, zato je vsebina lahko poljubna. Seveda se v njen ne splača poganjati dolgotrajnih stvari, drugače boste čakali na poziv (prompt).

Moja različica vsebuje še naslednje:

HISTSIZE=10000
HISTFILESIZE=10000
HISTIGNORE=”&:exit:[bf]g”

Ta del poskrbi, da ima bash več spomina (bash history) in mi omogoča dostop do več že pognanih ukazov (namesto da bi vedno tipkal recimo “svn up && svn log -v | less” ali “eval `ssh-agent`; ssh-add”). HISTIGNORE onemogoči pomnenje ukazov exit, fg in bg ter zaporedij istih ukazov.

INPUTRC=/etc/inputrc
fortune -a
echo

Nadalje imam spremenjen pomen določenih tipk na tipkovnici (za readline) in obvezen fortune cookie.

alias gv=”gaze version”
alias gw=”gaze what”
alias gwp=”gaze -q where -path”
function gm { gaze -q where $1 | xargs gaze maintainer; }
alias gf=”gaze from”
alias gu=”gaze url”
alias gz=”gaze search”
alias gzn=”gaze search -name”
alias gh=”gaze history”
alias gt=”gaze time”
alias gi=”gaze install-spell”
alias gl=”gaze license”
function cv { local a=”"; while read line; do a=”$a $line”; done</var/log/sorcery/queue/install; gaze version $a; gaze time $a; }

Sledi cel kup aliasov kot bližnjic do raznih ukazov za Source Mage. Kjer želene funkcionalnosti nisem mogel ustvariti z aliasom, sem to naredil z lupinsko funkcijo. Učinek je za vse praktične potrebe enak.


git-commit(){ command git-commit -e -m "$(basename -- $1):" "$@"; }
alias git-cherry-pick="git-cherry-pick -x"
alias ggn="git grep -n"
svn-grep(){ grep -Rn --color=auto "$@" | grep -sEv "\.svn|Binary file|\.deps|Makefile" ; }

less(){
if [[ $# == 0 ]]; then
command less -i -x4 -; return;
fi;
local num=$(sed -n 's,^.*:\([0-9]*\)$,\1,p' <<< "$1");
local file="${1%:$num}"; shift;
if [[ $num ]]; then
command less -i -x4 +${num}g "$file" "$@";
else
command less -i -x4 "$file" "$@";
fi;
}

trcheck() { for i in $@; do echo -n "$i: "; msgfmt -v -c --stat -o /dev/null "$i"; done; }
function sha { openssl dgst -sha512 "$@" | cut -d" " -f2; }

To je razvijalski del. Prvo par bližnjic za git, potem svn-grep, ki imitira git grep in na koncu še vmesnik za less, da ga lahko na hitro poženem na določeni vrstici datoteke. To je nadpraktično, ker je izpis ukazov grep v obliki “datoteka:vrstica: niz, ki se ujema” in lahko potem hitro vidim in urejam kontekst (primer: less gemrb/plugins/Core/Spellbook.h:58).
Za zaključek še funkcija trcheck, ki preveri veljavnost prevodov in izpiše statistiko (npr. “po/sl.po: 314 translated messages, 3 fuzzy translations, 3 untranslated messages.”), ter sha, ki izpiše vsoto sha512 podanih datotek.

alias ps=”ps –forest”
alias grep=”grep –color”
alias pgrep=”pgrep -lf”
export LESSCHARSET=utf-8

Še par klasik za bolj pregleden in uporaben izpis.


if [[ $EUID == 0 ]] ; then
PS1='\[\033[01;31m\]\h \[\033[01;34m\]\W $? \$ \[\033[00m\]'
else
PS1='\[\033[01;32m\]\u@\h \[\033[01;34m\]\W $? \$ \[\033[00m\]'
fi
export PS1

Barvni poziv, ki vključuje še ‘$?’, da takoj vidim kakšno vrednost je vrnil pognani program (exit status):

navaden@lynxlynx git-gemrb 0 $ false
navaden@lynxlynx git-gemrb 1 $ true
navaden@lynxlynx git-gemrb 0 $

PS: moram nadgradit tale blog, kode sploh ne prebavlja. :(

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.