
Dem der ikke husker fortiden...
Der findes et væld at citater vis grundide er at historien gentager sig selv. Dem der ikke tager ved lære af historien er dømt til at gentage den. En af de nyere formuleringer forsøger at kvantisere hvor meget historien gentager sig selv, her på min arbejdsmaskine:
<
p>
$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
47 dig
44 ls
42 cd
38 man
32 svn
32 less
30 ssh
21 vim
17 gwhois
14 perl
$
<
p>
Det kan måske overraske hvor lidt jeg bruger perl, men ovenstående tæller kun one-liners og endda kun i begyndelsen af en pipeline. Reelt er jeg lidt overrasket over hvor meget jeg relativt set bruger dig og whois.
Som med alt anden historie er det vinderen der skriver historien, her vil det sige at hvis jeg har flere åbne shells, så er den den sidste jeg lukker før jeg går hjem fra arbejde der får lov til at gemme sin historie. Tallene skal derfor nok læses med et gran salt.
For andres optællinger, søg på google efter "history meme"
Kommentarer (5)
"Som med alt anden historie er det vinderen der skriver historien, her vil det sige at hvis jeg har flere åbne shells, så er den den sidste jeg lukker før jeg går hjem fra arbejde der får lov til at gemme sin historie."
Hvis du vil ændre på dette, kan du bruge shopt -s histappend.
Personligt ville jeg foretrække, at historyfilen blev opdateret jævnligt, og at kørende shells indimellem indlæste den påny, så de blev opdateret med kommandoer, der er udført i andre instanser.
Den alternative shell, zsh, gemmer history for hver åben shell, når denne lukkes.
Derudover har zsh en masse funktioner, som med tiden bliver uundværlige. Dog kræver den en smule opsætning før den kan bruges effektivt.
Jeg har vist nok hørt om histappend før, men det var ikke lige noget jeg faldt hårdt over da jeg lige skimmende manualsiden igennem. Iøvrigt mener jeg at det er enormt svært at finde de brugbare dele af bash-manualen. Den anden dag brugte jeg meget tid på at finde ud af hvordan det nu var man kunne kalde noget fra history ind i en editor. Svaret er kommandoen fc, men det var kun ved et tilfælde at jeg lige så det i dag.
At have de kørende shells til at ofte udveksle history-information lyder besnærende, men jeg tror jeg vil takke nej. Ofte arbejder jegjeg samtidigt i 3-4 xterm'er på samme opgave. I det ene vindue med et compile/debug-loop, i det andet med et ack/grep/vim-loop og i det tredje med at læse man-sider. Hvis de pludselig udvekslede history ville alt falde sammen.
zsh "udveklser" ikke history, men læser ~/.zsh_history når en shell åbnes og gemmer til filen igen når en shell lukkes. Den enkelte shell har kun sin egen history.
Iøvrigt mener jeg at det er enormt svært at finde de brugbare dele af bash-manualen.
Hvis du kan overleve dokumenter der ikke følger DFSG, så installer bash info siderne, de er måske 1000 gange bedre end bash man siden.
