|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#!/usr/bin/env zsh
# This file:
# http://anggtwu.net/.zshrc.html
# http://anggtwu.net/.zshrc
# (find-angg ".zshrc")
# Author: Eduardo Ochs <eduardoochs@gmail.com>
# Edrx's .zshrc - 2022jan06
# Don't trust the date above, it's not updated automatically!
# Most things here are from the 90s.
# (find-es "zsh" "zshrc-hash-bang-eval")
# (find-es "zsh" "zsh-files")
# «.a» (to "a")
# «.a_vt5» (to "a_vt5")
# «.a_X_1_0» (to "a_X_1_0")
# «.prompt» (to "prompt")
# «.less» (to "less")
# «.underline_as_green» (to "underline_as_green")
# «.ee» (to "ee")
# «.eev» (to "eev")
# «.eev_rcfiles_zshrc» (to "eev_rcfiles_zshrc")
# «.eegcc» (to "eegcc")
# «.eet» (to "eet")
# «.eeg» (to "eeg")
# «.demo» (to "demo")
# «.gnudoit» (to "gnudoit")
# «.path» (to "path")
# «.Snarf» (to "Snarf")
# «.psne» (to "psne")
# «.psne-rfc» (to "psne-rfc")
# «.setmirrordir» (to "setmirrordir")
# «.BSD» (to "BSD")
# «.bsd_manpages» (to "bsd_manpages")
# «.netselect» (to "netselect")
# «.pdsc» (to "pdsc")
# «.apt» (to "apt")
# «.debbasename» (to "debbasename")
# «.installeddebs» (to "installeddebs")
# «.availabledebs» (to "availabledebs")
# «.pfilenames» (to "pfilenames")
# «.dmissing» (to "dmissing")
# «.dmissingu» (to "dmissingu")
# «.Pgrep» (to "Pgrep")
# «..debs» (to ".debs")
# «.glimpse» (to "glimpse")
# «.agrep» (to "agrep")
# «.console» (to "console")
# «.quickkeys» (to "quickkeys")
# «.charsets» (to "charsets")
# «.setbell» (to "setbell")
# «.keys» (to "keys")
# «.run-help» (to "run-help")
# «.completion» (to "completion")
# «.TeX» (to "TeX")
# «.dvifonts» (to "dvifonts")
# «.savetmptex» (to "savetmptex")
# «.printing» (to "printing")
# «.gsdj» (to "gsdj")
# «.ps2pdj» (to "ps2pdj")
# «.a2ps» (to "a2ps")
# «.pstotext» (to "pstotext")
# «.ps2up-letter» (to "ps2up-letter")
# «.psmyflip» (to "psmyflip")
# «.zxdvi» (to "zxdvi")
# «.rexdvi» (to "rexdvi")
# «.regv» (to "regv")
# «.xydemo» (to "xydemo")
# «.diagxydemo» (to "diagxydemo")
# «.pstdemo» (to "pstdemo")
# «.testfontcmds» (to "testfontcmds")
# «.tdiags» (to "tdiags")
# «.mytoctoeevlinks» (to "mytoctoeevlinks")
# «.makebbl» (to "makebbl")
# «.makebblcites» (to "makebblcites")
# «.pdfpages-tex» (to "pdfpages-tex")
# «.Icon» (to "Icon")
# «.stop-restart-services» (to "stop-restart-services")
# «.restart_inetd» (to "restart_inetd")
# «.gpm» (to "gpm")
# «.unsetall» (to "unsetall")
# «.chroot-redhat-zsh» (to "chroot-redhat-zsh")
# «.loop_device» (to "loop_device")
# «.filters» (to "filters")
# «.man2t» (to "man2t")
# «.filter» (to "filter")
# «.zcatinfo» (to "zcatinfo")
# «.find-ess» (to "find-ess")
# «.spl» (to "spl")
# «.split_transfer» (to "split_transfer")
# «.perlsendfile» (to "perlsendfile")
# «.modem_interact» (to "modem_interact")
# «.expect_isp» (to "expect_isp")
# «.inx-up» (to "inx-up")
# «.ppp-up» (to "ppp-up")
# «.inx-upe» (to "inx-upe")
# «.ig-up» (to "ig-up")
# «.makeL» (to "makeL")
# «.makepage» (to "makepage")
# «.makepagefromtar» (to "makepagefromtar")
# «.makepageindexhtmls» (to "makepageindexhtmls")
# «.makeindexhtmls» (to "makeindexhtmls")
# «.lstoindexhtml_lua_maybe» (to "lstoindexhtml_lua_maybe")
# «.lstoindexhtml_lua_dirs» (to "lstoindexhtml_lua_dirs")
# «.bigmakepage» (to "bigmakepage")
# «.uploadtoanggtmp» (to "uploadtoanggtmp")
# «.X» (to "X")
# «.xset_MATH» (to "xset_MATH")
# «.inix» (to "inix")
# «.inix-lea» (to "inix-lea")
# «.emacs-unibyte» (to "emacs-unibyte")
# «.strace» (to "strace")
# «.modules» (to "modules")
# «.cdrom» (to "cdrom")
# «.vt» (to "vt")
# «.lua» (to "lua")
# «.show2» (to "show2")
# «.swig» (to "swig")
# «.lua51e» (to "lua51e")
# «.makelua50» (to "makelua50")
# «.make» (to "make")
# «.scp» (to "scp")
# «.remote-accounts» (to "remote-accounts")
# «.save-input» (to "save-input")
# «.mydiff» (to "mydiff")
# «.makeapacheindex» (to "makeapacheindex")
# «.X1» (to "X1")
# «.showperms» (to "showperms")
# «.emacs-cvs» (to "emacs-cvs")
# «.dout» (to "dout")
# «.gunzip-nd» (to "gunzip-nd")
# «.partitionids» (to "partitionids")
# «.filedevice» (to "filedevice")
# «.ln-sf-safe» (to "ln-sf-safe")
# «.netbotanic» (to "netbotanic")
# «.fvwm» (to "fvwm")
# «.fvwm-replace» (to "fvwm-replace")
# «.prep-home-cdd» (to "prep-home-cdd")
# «.prep-vt» (to "prep-vt")
# «.prep-X» (to "prep-X")
# «.a» (to "a")
# «.git-show-my» (to "git-show-my")
# «.emacs28_» (to "emacs28_")
# «.ae» (to "ae")
# «.aeg» (to "aeg")
# «.emacs-default» (to "emacs-default")
# «.a_old» (to "a_old")
# «.aegit» (to "aegit")
# «.ax» (to "ax")
# «.ax0» (to "ax0")
# «.x00» (to "x00")
# «.setxtermtitle» (to "setxtermtitle")
# «.makecdrdaotoc» (to "makecdrdaotoc")
# «.showcdrdaotoc» (to "showcdrdaotoc")
# «.vlca» (to "vlca")
# «.myaplay1» (to "myaplay1")
# «.myplay» (to "myplay")
# «.p» (to "p")
# «.plog» (to "plog")
# «.silentwav» (to "silentwav")
# «.ptowav» (to "ptowav")
# «.chroot-sarge» (to "chroot-sarge")
# «.mywhoami» (to "mywhoami")
# «.testmail» (to "testmail")
# «.dotxpm» (to "dotxpm")
# «.autopasswd» (to "autopasswd")
# «.autopasswdz» (to "autopasswdz")
# «.pucmailget» (to "pucmailget")
# «.R» (to "R")
# «.umlkill» (to "umlkill")
# «.cddbtrackname» (to "cddbtrackname")
# «.eev-current» (to "eev-current")
# «.eev-current-upload» (to "eev-current-upload")
# «.upload» (to "upload")
# «.prep-apti» (to "prep-apti")
# «.prep-apti-builddeps-emacs» (to "prep-apti-builddeps-emacs")
# «.prep-X-reconfigure» (to "prep-X-reconfigure")
# «.prep-X-nodm» (to "prep-X-nodm")
# «.prep-guest-mount» (to "prep-guest-mount")
# «.aa» (to "aa")
# «.ASROOT» (to "ASROOT")
# «.intermail» (to "intermail")
# «.mymkdircd» (to "mymkdircd")
# «.myincr» (to "myincr")
# «.ncget» (to "ncget")
# «.ncsend» (to "ncsend")
# «.myip-ppp0» (to "myip-ppp0")
# «.fvwm-bw» (to "fvwm-bw")
# «.hh» (to "hh")
# «.prep-Contents» (to "prep-Contents")
# «.regv-beamer» (to "regv-beamer")
# «.Xfontslists» (to "Xfontslists")
# «.router-config-jan2006» (to "router-config-jan2006")
# «.wrap» (to "wrap")
# «.cddb2rentracks» (to "cddb2rentracks")
# «.wavsandtracks» (to "wavsandtracks")
# «.ruby» (to "ruby")
# «.mplayer» (to "mplayer")
# «.mysqueak» (to "mysqueak")
# «.mypharo» (to "mypharo")
# «.cuis» (to "cuis")
# «.eth_multicast_diagnose» (to "eth_multicast_diagnose")
# «.asgraftpoints» (to "asgraftpoints")
# «.music_dirs» (to "music_dirs")
# «.psne-over» (to "psne-over")
# «.MAKEDEV_create» (to "MAKEDEV_create")
# «.eeh» (to "eeh")
# «.mesk-up» (to "mesk-up")
# «.mesk-ip» (to "mesk-ip")
# «.pers-up» (to "pers-up")
# «.dek-up» (to "dek-up")
# «.muttfetchmail» (to "muttfetchmail")
# «.tcl-tk» (to "tcl-tk")
# «.tarcp» (to "tarcp")
# «.fvwm-netbsd» (to "fvwm-netbsd")
# «.unpackimgzips» (to "unpackimgzips")
# «.pppp» (to "pppp")
# «.BMPtodjvu» (to "BMPtodjvu")
# «.djvu-unpack» (to "djvu-unpack")
# «.eev2-files» (to "eev2-files")
# «.Scp-np» (to "Scp-np")
# «.p8» (to "p8")
# «.tt» (to "tt")
# «.Twus-and-Twup» (to "Twus-and-Twup")
# «.TWUS-and-TWUP» (to "TWUS-and-TWUP")
# «.Lins-and-Linp» (to "Lins-and-Linp")
# «.LINS-and-LINP» (to "LINS-and-LINP")
# «.git-test» (to "git-test")
# «.flac2mp3» (to "flac2mp3")
# «.m4a2mp3» (to "m4a2mp3")
# «.mp32mp3256» (to "mp32mp3256")
# «.rot0» (to "rot0")
# «.python» (to "python")
# «.linkdasruas» (to "linkdasruas")
# «.flsfiles» (to "flsfiles")
# «.print-quadro-sexps» (to "print-quadro-sexps")
# «.texlive-2016» (to "texlive-2016")
# «.texlive-2017» (to "texlive-2017")
# «.texlive-2018» (to "texlive-2018")
# «.texlive-2019» (to "texlive-2019")
# «.texlive-2020» (to "texlive-2020")
# «.cabal» (to "cabal")
# «.opam» (to "opam")
# «.pip-path» (to "pip-path")
# «.nvm» (to "nvm")
# «.plan9» (to "plan9")
# «.luarocks» (to "luarocks")
# «.my-cmp-tkdiff» (to "my-cmp-tkdiff")
# «.locale» (to "locale")
# «.bracketed-paste» (to "bracketed-paste")
# «.nim» (to "nim")
# «.movedotemacs» (to "movedotemacs")
# «.screenkey» (to "screenkey")
# «.sk» (to "sk")
# «.basename_tgz» (to "basename_tgz")
# «.termux» (to "termux")
# «.video-duration» (to "video-duration")
# «a» (to ".a")
# Old version: (to "a_old")
function a () {
if [[ $TERM == "linux" ]]; then
if [[ $TTY == "/dev/tty1" ]]; then a_vt1;
elif [[ $TTY == "/dev/tty5" ]]; then a_vt5;
else echo "a: TERM=$TERM and TTY=$TTY, don't know what to do"
fi
elif [[ $TERM == "xterm" ]]; then
if [[ $DISPLAY == ":1.0" ]]; then a_X_1_0;
else echo "a: TERM=$TERM and DISPLAY=$DISPLAY, don't know what to do"
fi
else echo "a: TERM=$TERM, don't know what to do"
fi
}
# «a_vt5» (to ".a_vt5")
function a_vt5 () {
setfont -C /dev/tty5 /usr/share/consolefonts/Lat15-Terminus12x6.psf.gz
xinit -- :1.0 vt8 |& tee /tmp/ox &
}
# «a_X_1_0» (to ".a_X_1_0")
# (to "sk")
# (find-fline "/var/log/Xorg.1.0.log")
function a_X_1_0 () { x00; fvwm3 & }
# prep-vt; ae
# elif [[ $TERM == "linux" && $TTY == "/dev/tty5" ]]; then
# xinit -- :1.0 &
# elif [[ $TERM == "linux" && $TTY == "/dev/tty10" ]]; then
# prep-vt; xinit &
# elif [[ $TERM == "linux" && $TTY == "/dev/tty11" ]]; then
# prep-vt; xinit -- :1.0 &
# elif [[ $TERM == "xterm" ]]; then
# # prep-X; echo "# To invoke emacs run \"ae\""
# fvwm &; google-chrome &; ax00 &
# else
# echo "a: TERM=$TERM and TTY=$TTY, don't know what to do"
# fi
# }
: <<'%%%%%'
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
. .zshrc
a
%%%%%
# «prompt» (to ".prompt")
# (find-es "zsh" "prompt")
# In machines in which I can chroot to other distro I usually put
# something like
# export _CHROOTSTR=":d"
# or export _CHROOTSTR=":rh"
# in /etc/zshenv:
# (find-fline "/etc/zshenv" "_CHROOTSTR")
# (find-fline "/debian/etc/zshenv" "_CHROOTSTR")
export machine=$(uname -n)
if [[ $machine = angg ]]; then
PS1="%d(%n$_CHROOTSTR)# "
else
PS1="%d(%n:$machine[1,2]$_CHROOTSTR)# "
fi
PS2='> '
# «less» (to ".less")
# (find-es "console" "less")
# (find-man "less")
export LESSCHARDEF=8bcccbcc18b95.b27.b99.b
export LESS='-MM -C'
export PAGER=less
# «underline_as_green» (to ".underline_as_green")
# (find-angg ".emacs" "underline_as_green")
# (find-k2file "drivers/char/console.c")
# (find-k2tag "setterm_command")
# (find-k22tag "setterm_command")
# (find-man "4 console_codes" "Set color n as the underline color")
# (find-man "1 less" "-u or --underline-special")
function myreset () {
if [[ $TERM = linux ]] echo -n '\e(K\e[1;2]'
}
# (find-node "(sh-utils)tty invocation")
tty -s && myreset
# (find-fline "/etc/zshenv")
# (find-zshnode "Shell Builtin Commands" "core")
limit coredumpsize 0
alias l='less'
alias laf='ls -laF'
alias ls='ls -aF'
[[ -x dircolors ]] && eval `dircolors`
alias w='which'
alias Pwd=/bin/pwd
alias rezshrc='. ~/.zshrc'
# "rezshrc" lets me reload my .zshrc after changing it, but I need
# some tricks to avoid making $PATH get longer at each time...
# «path» (to ".path")
# See: (find-angg ".zshenv")
[[ "$ORIGPATH" == "" ]] && export ORIGPATH=$PATH
export EDRXPATH=$ORIGPATH:.:$HOME/bin:$HOME/EXPECT:$HOME/TCL
export EDRXPATH=$ORIGPATH:.:$HOME/bin:$HOME/EXPECT:$HOME/TCL:$HOME/pkg/bin
# ^ 2008, for NetBSD and pkgsrc
export EDRXPATH=$ORIGPATH:.:$HOME/EXPECT:$HOME/TCL:$HOME/pkg/bin
if [[ -f /etc/debian_version ]]; then
export DISTR=debian
export PATH=$EDRXPATH:/usr/games
else
# export DISTR=redhat
# alias emacs=/usr/bin/emacs-nox
# Depois eu cuido do caso RedHat, agora eu tou usando so' Debian e BSD
export PATH=$EDRXPATH:/sbin:/usr/sbin:
fi
# «ee» (to ".ee")
# «eev» (to ".eev")
# «eev_rcfiles_zshrc» (to ".eev_rcfiles_zshrc")
# Beginning of the eev block:
# See: (find-eev "eev-rctool" "new_block_zshrc")
# (find-eev-update-links)
# (find-sh0 "echo $EE; cat $EE")
#
export EEVTMPDIR ;: ${EEVTMPDIR:=~/.eev}
export EE ;: ${EE:=$EEVTMPDIR/ee.sh}
function ee () { set -v; . $EE$*; set +v; }
#
export EEVDIR ;: ${EEVDIR:=~/eev-current}
export EEVRCDIR ;: ${EEVRCDIR:=$EEVDIR/rcfiles}
export EEG ;: ${EEG:=$EEVTMPDIR/ee.eeg}
export EEGDB ;: ${EEGDB:=$EEVTMPDIR/ee.gdb}
export EETEX ;: ${EETEX:=$EEVTMPDIR/ee.tex}
#
export EEC ;: ${EEC:=$EEVTMPDIR/ee.c}
export EETMPC ;: ${EETMPC:=$EEVTMPDIR/tmp.c}
export EEAOUT ;: ${EEAOUT:=$EEVTMPDIR/ee.aout}
function eegcc () {
cat $EETMPC - > $EEC
gcc $* -o $EEAOUT $EEC
}
alias eec=$EEAOUT
#
# To define $S and psne uncomment the line below (or copy it,
# uncommented, to outside of the eev block):
# if [ -e $EEVTMPDIR/psne.sh ]; then . $EEVTMPDIR/psne.sh; fi
# (find-eevtmpfile "psne.sh")
#
# End of the eev block.
if [ -e $EEVTMPDIR/psne.sh ]; then . $EEVTMPDIR/psne.sh; fi
# (find-node "(zsh)Parameter Expansion" "${NAME:=WORD}")
# (find-node "(zsh)Shell Builtin Commands" ": [ ARG ... ]")
export EEV=$EEVDIR
export EEVT=$EEVTMPDIR
export EEVR=$EEVRCDIR
export EEVT=$EEVTMPDIR
export EEVE=$EEVDIR/examples
export EEVA=$EEVDIR/article
# «eegcc» (to ".eegcc")
# (find-eevtmpfile "tmp.c")
# 2004oct02; to do: use #include, CFILE, W, CFLAGS.
# EETMPC=$EEVTMPDIR/tmp.c
# EEC=$EEVTMPDIR/ee.c
# EEAOUT=$EEVTMPDIR/ee.aout
# function eegcc () {
# cat $EETMPC - > $EEC
# gcc $* -o $EEAOUT $EEC
# }
alias eec=$EEAOUT
#
# A test:
# eegcc <<<'int main(){ printf("%d\n", isatty(0)); exit(0); }'; eec; echo | eec
export PATH=$EDRXPATH
export ES=~/e
export EET=~/TK/emacs.eew
#alias eet=$EET
# «eet» (to ".eet")
# (find-angg ".emacs" "eet")
export EETMP=/tmp/ee.sh
alias eet='set -v;. $EETMP;set +v'
# (find-eev "eev-util" "install_dotfiles")
# «eeg» (to ".eeg")
# «demo» (to ".demo")
# (find-angg "EXPECT/eeg")
# (find-angg "EXPECT/eeg2")
# (find-angg "EXPECT/eeg3")
# (find-angg "EEG/gdbk.eeg")
# (find-angg "EEG/gdbk.eeg3")
# (find-angg "EEG/emacs1.eeg3")
function demo () {
mkdir -p ~/tmp/
case $1 in
gdbk) cp ~/EEG/gdbk.eeg3 $EEG
eeg3 screen emacs -nw $ES/anatocc.e;;
emacs1) cp ~/EEG/emacs1.eeg3 $EEG
rm -v ~/tmp/foo ~/tmp/otherfoo
eeg3 screen emacs -nw ~/tmp/foo;;
gdbk-xemacs) cp ~/EEG/gdbk.eeg3 $EEG
echo "Warning: this one is a bit broken..."
eeg3 screen xemacs -nw $ES/anatocc.e;;
*) w demo;;
esac
}
# «gnudoit» (to ".gnudoit")
# Functions that use gnuclient's gnudoit.
# They were mainly for consulting code-c-ds from outside Emacs.
# Oops, substitute-in-file-name does not expand "~"s...
# (find-node "(zsh)Filename Expansion")
# (find-node "(zsh)Shell Builtin Commands" "eval [ ARG ... ]")
# function eev-dir () { gnudoit "(substitute-in-file-name ee-$1dir)" }
function eev-dir () { eval echo $(gnudoit ee-$1dir) }
function eev-file () { echo $(eev-dir $1)$2 }
function eev-cd () { cd $(eev-file $1 $2) }
export TERM
# export EDITOR=gnuclient
export ignoreeof=10
setopt autocd interactivecomments
umask 022
#####
#
# /snarf, $S, psne and friends
#
#####
# See: (find-psne-intro "7. A historical note")
# «Snarf» (to ".Snarf")
# (find-fline "~/PERL/urlchop")
# (find-fline "~/.psne.log")
if [[ $S == "" ]]; then
if [[ -e /snarf ]]; then
export S=/snarf
else
export S=$HOME/snarf
fi
fi
function perlurl () {
perl -e '
$_ = $url = $ARGV[0];
(($url, $prot, $usrpasswd, $site, $port, $path, $fname, $query) =
m%^((ftp|https?|file)://([^/@]*@)?([^@/:]*)(:[0-9]*)?/([^?]*/|)([^/?]*)(\?.*)?)$%)
|| die "\"$ARGV[0]\": not an url\n";
'$1 $*[2,-1]
}
function urldir () { perlurl 'print "$ENV{S}/$prot/$site/$path\n";' $1 }
function urlprot () { perlurl 'print "$prot\n";' $1 }
function urlfile () { perlurl 'print "$fname$query\n";' $1 }
# Tests:
# urldir http://www.cl.cam.ac.uk/users/gmb/index.html
# urlfile http://www.cl.cam.ac.uk/users/gmb/index.html
# «psne» (to ".psne")
# (find-angg "bin/_psne")
function psne-pl () {
ud=$(urldir $1) && {
mkdir -p $ud && cd $ud && {
echo $1 >> ~/.psne.log
wget $1 $*[2,-1]
} } }
alias psne=psne-pl
function psner () {
echo - $* >> ~/.psne.log
cd $S/http/ &&
wget -r $*
}
function psner-ftp () {
echo - $* >> ~/.psne.log
cd $S/ftp/ &&
wget -r $*
}
function psnedebfrom () {
for i in $(awk '{print $NF}'); do
psne $1/$i
done
}
alias psnedeb='psnedebfrom $FDEBIAN'
function psnecd () { cd $(urldir $1) }
function psnec () { urldir $1 && cd $(urldir $1) && wget -c $1 }
# For several different kinds of desperate cases.
# (find-es "http" "disguise-user-agent")
export AGENT_LYNX='Lynx/2.8.3rel.1 libwww-FM/2.14'
function lsne () {
ud=$(urldir $1) && {
mkdir -p $ud && cd $ud && {
echo $1 >> ~/.psne.log
lynx -source $1 $*[2,-1]
} } }
# znse is a rather minimalistic ancestor of psne.
# Use it like this:
# zsne ftp linux.if.usp.br/debian ls-lR.gz
function zsne () {
cd $S/$1 &&
mkdir -p $2 &&
cd $2 &&
# lynx -source $1://$2/$3 > $3
wget $1://$2/$3
}
# «psne-rfc» (to ".psne-rfc")
# (find-rfcfile "")
function psne-rfc () {
for i in $*; do psne http://www.ietf.org/rfc/rfc$i.txt; done
}
# «setmirrordir» (to ".setmirrordir")
# (find-es "snarf" "setmirrordir")
# Example:
# setmirrordir /snarf/ftp/ftp.debian.org/debian/ ftp://foobar.org/pub/debian/
function setmirrordir() { (
DEST=$(echo $1 | sed 's_/*$__')
MIRROR=$(echo $2 \
| sed 's_^\(ftp\|http\)://_/snarf/\1/_' \
| sed 's_/*$__')
mkdir -p $(dirname $MIRROR)
rm -f $MIRROR
if [[ -e $MIRROR ]]; then
echo $MIRROR exists!
else
ln -s $DEST $MIRROR
fi
laf $MIRROR
#laf $MIRROR/
) }
# debian/tex/perl/etc mirrors and local repositories
# (find-es "debian-net" "debian_mirrors")
# export FLH=file://localhost
# w3m $FLH/usr/doc/w3m/MANUAL.html#Key:orig
#export FDEBIAN_BR=ftp://ftp.br.debian.org/debian
#export FDEBIAN_US=ftp://ftp.us.debian.org/debian
#export FDEBIAN_US_H=http://ftp.us.debian.org/debian
#export FDEBIAN=$FDEBIAN_US
#export SDEBIAN=$S/ftp/ftp.debian.org/debian
#export FSECDEBIAN=ftp://security.debian.org/debian-security
#export FSECDEBIAN_H=http://security.debian.org/debian-security
#export SSECDEBIAN=$S/ftp/security.debian.org/debian-security
#
#export FNUDEBIAN_MAINZ=ftp://ftp.uni-mainz.de/pub/Linux/debian-non-US
#export FNUDEBIAN=$FNUDEBIAN_MAINZ
#export SNUDEBIAN=$S/ftp/ftp.debian.org/debian-non-US
#
#export FIDEBIAN=ftp://ftp.jp.debian.org/debian-incoming
#export SIDEBIAN=$S/ftp/ftp.jp.debian.org/debian-incoming
#
#export FCTAN_CDROM=ftp://ftp.cdrom.com/pub/tex/ctan
#export FCTAN_RIKEN=ftp://ftp.riken.go.jp/pub/tex-archive
#export FCTAN_TUG=ftp://ctan.tug.org/tex-archive
#export FCTAN=$FCTAN_TUG
#export SCTAN=$S/ftp/ftp.rge.com/pub/tex
#
#export FCPAN=ftp://ftp.cdrom.com/pub/perl/CPAN
#export SCPAN=$S/ftp/ftp.cdrom.com/pub/perl/CPAN
#
#export ALCATCL=ftp://ftp.neosoft.com/languages/tcl
#export SALCATCL=$S/ftp/ftp.neosoft.com/languages/tcl
#
#export FPGUT=ftp://sunsite.unc.edu/pub/docs/books/gutenberg
#export FSUNSITE=http://sunsite.unc.edu/pub/Linux
#export LCD=$S/ftp/gatekeeper.dec.com/pub/GNU/elisp-archive
#export SPGUT=$S/ftp/sunsite.unc.edu/pub/docs/books/gutenberg
#export SSUNSITE=$S/ftp/sunsite.unc.edu/pub/Linux
# «BSD» (to ".BSD")
# (find-angg ".zshrc.local.bsd")
#export FNBSD=ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.4.2/i386
#export SNBSD=$S/ftp/ftp.netbsd.org/pub/NetBSD/NetBSD-1.4.2/i386
#export BSDBOOKS=/freebsd/usr/share/doc/en_US.ISO_8859-1/books
#export FNETBSD152=ftp://archive.progeny.com/NetBSD/NetBSD-1.5.2
#export SNETBSD152=$S/ftp/archive.progeny.com/NetBSD/NetBSD-1.5.2
#export FNETBSD=ftp://archive.progeny.com/NetBSD
#export SNETBSD=$S/ftp/archive.progeny.com/NetBSD
# «bsd_manpages» (to ".bsd_manpages")
# (find-es "man" "bsd_manpages")
# (find-es "netbsd" "netbsd-manpages")
# (find-angg "bin/netbsdman")
#export NETBSDMANPATH=/var/_netbsdman/usr/share/man:/var/_netbsdman/usr/share/perl/man:/var/_netbsdman/usr/pkg/man
#alias man-freebsd='MANPATH=/var/_freebsdman/usr/share/man:/var/_freebsdman/usr/share/perl/man man'
# «netselect» (to ".netselect")
# (find-es "debian-net" "debian_mirrors")
function mynetselect () {
netselect -vvv $* |& tee ~/o
agrep ' ok ' < ~/o \
| awk '{printf "%s %s %s\n", substr($0, 73), substr($0, 39, 33),
substr($0, 1, 37)
}' \
| sort -r \
| tee ~/o2
}
#####
#
# Debian: pdsc, apt, dmissingp, Pgrepp
#
#####
# «pdsc» (to ".pdsc")
# (find-angg ".zshrc" "pdsc")
function perldsc () {
perl -e '
$_ = $dsc = $ARGV[0];
(($path, $name, $ver, $build) =
m%^(.*/)?(.*?)_(.*?)(-[0-9.a-z]+)?\.dsc$% )
|| die "\"$ARGV[0]\": not a dsc\n";
'$1 $*[2,-1]
}
function dscdir () { perldsc 'print "/usr/src/$name-$ver\n"' $1 }
function pdsc () { pdsc_ $1 -sn -x }
function pdsc_ () {
D=$(dscdir $1) && {
rm -Rv $D
cd /usr/src/
dpkg-source $*[2,-1] $1
cd $D
}
}
# Example:
# pdsc /debian/dists/slink/main/source/sound/workbone_2.40-1.dsc
# (find-fline "/usr/bin/dpkg-source")
function dscdir_usrc () { perldsc 'print "'$usr_src'/$name-$ver\n"' $1 }
function pdsc_usrc () { pdsc_usrc_ $1 -sn -x }
function pdsc_usrc_ () {
D=$(dscdir_usrc $1) && {
rm -Rv $D
cd $usr_src/
dpkg-source $*[2,-1] $1
cd $D
}
}
# (find-es "dpkg" "all-installed-.debs")
# «apt» (to ".apt")
SUDO=sudo
function apti0 () { $SUDO apt-get install $* }
function apti () { echo $* >> ~/.apti.log; apti0 $* }
function aptii () { $SUDO aptitude install $* }
function aptrm () { $SUDO apt-get remove $* }
# alias apti='$SUDO apt-get install'
# alias aptrm='$SUDO apt-get remove'
# # (find-es "dpkg" "local_apt_repository")
# function dpkg-scan_p () {
# dpkg-scanpackages $1/binary-i386 /dev/null '' \
# | tee $1/binary-i386/Packages \
# | gzip -c6 > $1/binary-i386/Packages.gz
# }
# function dpkg-scan_s () {
# dpkg-scansources $1 \
# | tee $1/source/Sources \
# | gzip -c9 > $1/source/Sources.gz
# }
# function dpkg-scan_p+s () {
# dpkg-scan_p $1
# dpkg-scan_s $1
# }
# function aptu-local-i386 () {
# cd /usr/src/.debs/
# # Argh:
# rm -R dists/
# ( D=dists/potato/local
# DB=$D/binary-i386
# mkdir -p $DB
# cp -li *.deb $DB
# DS=$D/source
# mkdir -p $DS
# cp -li /usr/src/.dscs/*.dsc $DS
# cp -li /usr/src/.dscs/*.gz $DS
# cp -li /usr/src/.dscs/*.changes $DS
# dpkg-scan_p+s $D
# )}
# «dmissing» (to ".dmissing")
# This is VERY old!!!
# Use apt-file instead: (find-es "apt" "apt-file")
#
# (find-es "debian" "prep-Contents")
# (to "prep-Contents")
# (find-apthowtofile "apt-howto.en.txt.gz" "apt-file search")
# http://ftp.debian.org/debian/dists/squeeze/Contents-i386.gz
# http://ftp.debian.org/debian/dists/wheezy/Contents-i386.gz
# http://ftp.debian.org/debian/dists/wheezy/non-free/Contents-i386.gz
#
CONTENTSI386S=( $S/http/ftp.br.debian.org/debian/dists/sarge/Contents-i386 )
CONTENTSI386SZ=( $S/http/ftp.br.debian.org/debian/dists/sarge/Contents-i386.gz )
CONTENTSI386SZ=( $S/http/br.archive.ubuntu.com/ubuntu/dists/lucid/Contents-i386.gz )
CONTENTSI386SZ=( $S/http/ftp.debian.org/dists/lenny/Contents-i386.gz )
CONTENTSI386SZ=( $S/http/ftp.debian.org/debian/dists/squeeze/Contents-i386.gz )
CONTENTSI386SZ=( $S/http/ftp.debian.org/debian/dists/wheezy/Contents-i386.gz )
# function dmissing () { agrep -h $* $CONTENTSI386S }
function dmissing () { zgrep -h $* $CONTENTSI386SZ }
function dmissingp () {
agrep -h $* $SDEBIAN/dists/potato/Contents-i386 \
$SNUDEBIAN/dists/potato/non-US/Contents-i386
}
# «dmissingu» (to ".dmissingu")
# (find-es "ubuntu" "dmissingu")
# http://archive.ubuntu.com/ubuntu/dists/jaunty/Contents-i386.gz
function dmissingu () {
zgrep -h $* $S/http/archive.ubuntu.com/ubuntu/dists/jaunty/Contents-i386.gz
}
# «prep-Contents» (to ".prep-Contents")
# (to "dmissing")
# http://ftp.debian.org/dists/lenny/Contents-i386
# http://ftp.debian.org/dists/lenny/Contents-i386.gz
function prep-Contents () {
if [[ ! -e $S/http/ftp.debian.org/dists/lenny/Contents-i386.gz ]];
then psne http://ftp.debian.org/dists/lenny/Contents-i386.gz
fi
zcat $S/http/ftp.debian.org/dists/lenny/Contents-i386.gz \
> $S/http/ftp.debian.org/dists/lenny/Contents-i386
}
# «Pgrep» (to ".Pgrep")
#function slinksgrep () { cd /big/; find slinks* | grep $* }
function Pgrep_ () {
perl -e '$/="\n\n"; while (<>) { '$1' && print $_ }'
}
function Pgrepp () {
for i in \
/hdd6/debian/dists/potato/{main,contrib}/binary-i386/Packages \
$SDEBIAN/dists/potato/non-free/binary-i386/Packages \
$SNUDEBIAN/dists/potato/non-US/main/binary-i386/Packages; do
echo "\n\n----> $i\n"
Pgrep_ $1 < $i
done
}
# «debbasename» (to ".debbasename")
function debbasenames () {
perl -nle ' s/[0-9](:|%3a)//; s:^.*/([^/]*)$:\1:;
s/_(i386|all)\.deb$/.deb/; print "$_";
'
}
function debbasename () {
print -l $* | debbasenames
}
#export LOCALDEBDIR=/usr/src/.debs/binary-i386/web
function movelocaldeb () {
for i in $*; do
j=$(debbasename $i)
mv -v $i $LOCALDEBDIR/$j
done
}
#####
#
# Debian: high-level functions based on grep-dctrl
#
#####
# «installeddebs» (to ".installeddebs")
# «availabledebs» (to ".availabledebs")
# (find-es "dpkg" "installeddebs")
# (find-zsh "installeddebs | sort")
# (find-zsh "installeddebs | sort | tee ~/oinstalleddebs")
# (find-fline "~/oinstalleddebs")
function dctrldebnames () {
perl -nle '
m/Package: (.*)/ and $s = $1;
m/Version: ([0-9]+:)?(.*)/ and print "$s", "_$2.deb";
'
}
function installeddebs_ () {
grep-dctrl --show-field=Package,Version --field=Status ' installed' \
| dctrldebnames
}
alias installeddebs='cat /var/lib/dpkg/status | installeddebs_'
alias availabledebs='cat /var/lib/dpkg/available | dctrldebnames'
# A temporary, incomplete fix for Squeeze
# (find-man "1 dpkg" "dselect update")
# (find-man "8 apt-cache" " showpkg pkg")
# (find-man "8 apt-cache" " dumpavail")
# (find-other-debian-links "inconsolata")
# (find-other-debian-links "gentium")
# (find-zsh "grep-available gentium")
alias availabledebs='apt-cache dumpavail | dctrldebnames'
# «pfilenames» (to ".pfilenames")
# (find-es "dpkg" "pfilenames")
function pfilenames () {
grep-dctrl . -s Filename | awk '{print PREFIX $2}' PREFIX=$1
}
# «.debs» (to "..debs")
function getdatatargz () { ar p $1 data.tar.gz }
function debtarxvzf () { getdatatargz $1 | tar -xvzf - $*[2,-1] }
function debtartvzf () { getdatatargz $1 | tar -tvzf - $*[2,-1] }
function debtartzf () { getdatatargz $1 | tar -tzf - $*[2,-1] }
#export POTATO=/big/potato/dists/potato
#export SPOTATO=$SDEBIAN/dists/potato
#
#export MI386=main/binary-i386
#export CI386=contrib/binary-i386
#export NFI386=non-free/binary-i386
#####
#
# glimpse and agrep
#
#####
# # «glimpse» (to ".glimpse")
# alias gglimpse='cd /usr/src/gimp-1.0.0/; glimpse -y -H .'
# alias kglimpse='cd /usr/src/linux-2.0/; glimpse -y -H .'
# alias k22glimpse='cd /usr/src/linux-2.2/; glimpse -y -H .'
# alias glglimpse='cd /usr/src/glibs-2.0.7t/; glimpse -y -H .'
# alias pglimpse='cd /usr/lib/perl5/; glimpse -y -H .'
# alias iglimpse='cd /usr/src/icon/; glimpse -y -H .'
# alias eglimpse='cd /usr/share/emacs/19.34/lisp/; glimpse -y -H .'
# alias e20glimpse='cd /usr/share/emacs/20.7/lisp/; glimpse -y -H .'
# alias e20sglimpse='cd /usr/src/emacs20-20.3/; glimpse -y -H .'
# alias e21glimpse='cd /usr/src/emacs21-21.1/lisp/; glimpse -y -H .'
# alias e21sglimpse='cd /usr/src/emacs21-21.1/; glimpse -y -H .'
# alias holglimpse='cd /usr/src/hol90.10/; glimpse -y -H .'
# alias smlglimpse='cd /usr/src/sml-nj-110/; glimpse -y -H .'
# alias bfglimpse='cd /usr/src/boot-floppies-2.1.8/; glimpse -y -H .'
# alias gdbglimpse='cd /usr/src/gdb-4.17/; glimpse -y -H .'
# alias manglimpse='cd /tmp/man/; glimpse -y -H .'
# alias lysrcglimpse='cd /usr/src/lynx-2.8.3/; glimpse -y -H .'
# alias glibcglimpse='cd /usr/src/glibc-2.1.3/glibc-2.1.3/; glimpse -y -H .'
# #
# # «agrep» (to ".agrep")
# function dtxagrep () { cd /usr/share/texmf/; agrep $* $(<.files.dtx) }
# function lsrcagrep () { cd /usr/share/texmf/source/latex; agrep $* $(<.files-)}
# function fsagrep () { cd /usr/src/gforth-0.4.0/; agrep $* $(<.files.fs) }
# function cbagrep () { cd ~/CB/; agrep $* 2*.i }
# function bfagrep () { cd /usr/src/bigforth/; agrep $* *.str *.scrz }
# function potsrcgrep () { cd ~/tmp/; grep $* potsrc* }
# function nhagrep () { cd /usr/doc/nethack/spoilers/
# for i in *.gz; do echo $i; zcat $i | agrep $* ; done
# }
#####
#
# VT fonts and keyboard tables
#
#####
# «console» (to ".console")
# (find-angg ".zshrc.local.bsd" "80x50")
# (find-fline "~/MTA/Makefile")
# alias iso='(cd ~/vtutil4/; make isomath.8.setfont)'
alias 850='(cd ~/vtutil4/; make 850)'
alias 437='(cd ~/vtutil4/; make 437)'
alias iso='(cd ~/vtutil4/; make iso)'
alias iso-orig='(cd ~/vtutil4/; make iso-orig)'
alias 16='(cd ~/vtutil4/; make 16)'
#alias 850='setfont ~/replace/ega1.8; loadkeys ~/replace/defkeymap850b.map'
#alias math850='(cd ~/vtutil/; make math850; quickkeys)'
#alias math='(cd ~/vtutil/; make math; quickkeys)'
#alias math16='(cd ~/vtutil/; make math16)'
#alias 512='math; cd ~/vtutil; make newtest'
#alias 850='(cd ~/vtutil/; make 850)'
#alias 437='(cd ~/vtutil/; make 437)'
#alias iso='setfont iso01.f08; loadkeys ~/replace/defkeymap-iso.map'
#alias iso='~/MTA/vtutil quicksetfont ~/replace/iso01.f08
# loadkeys ~/replace/defkeymap-iso.map'
alias mystm='SVGATextMode -t ~/replace/TextConfig.angg'
alias 80x50=mystm
alias 132='mystm 132x60x9'
alias 1='iso'
alias 2='math'
alias 4='loadkeys dvorak'
# «quickkeys» (to ".quickkeys")
# (find-node "(coreutils)Changing Special Permissions")
# (eev "laf /sbin/kbdrate; sudo chmod u+s /sbin/kbdrate; laf /sbin/kbdrate")
# alias quickkeys='(cd ~/MTA/; ./vtutilsh vtutil setkbdrepeat 0 100)'
alias quickkeys='/sbin/kbdrate -r 30.0 -d 250'
alias quickkeys-X='xset r rate 250 30'
# «charsets» (to ".charsets")
# (find-es "charsets" "tcs")
#alias 850toiso='tcs -f ps2 -t latin1'
#alias isoto850='tcs -f latin1 -t ps2'
# (find-es "print" "tcs_patch")
#alias 850toiso='tcs -f ps2 -t latin1-850'
#alias isoto850='tcs -f latin1-850 -t ps2'
# (find-angg "vtutil/Makefile")
alias isoto850='tr $(<~/vtutil/table_latin) $(<~/vtutil/table_850)'
alias 850toiso='tr $(<~/vtutil/table_850) $(<~/vtutil/table_latin)'
# (find-angg "MTA/Makefile")
#alias math='setfont ~/MTA/math1.8; loadkeys ~/MTA/math850.map'
#alias iso='setfont ~/MTA/latinmath.8; loadkeys ~/MTA/latinmath.map'
#alias math='(cd ~/vtutil/; make 850)'
#alias iso='(cd ~/vtutil/; make iso)'
#alias 16='(cd ~/vtutil/; make 16)'
#alias lmath='iso'
#alias math='(cd ~/vtutil/; make math850.setall)'
#alias iso='(cd ~/vtutil/; make mathlatin.setall)'
#alias 16='(cd ~/vtutil/; make 16)'
# «setbell» (to ".setbell")
# (find-es "console" "setbell")
function setbell () {
echo -ne "\033[10;$1]\033[11;$2]"
}
function softbell () { setbell 80 22 }
function defaultbell () { setbell 750 125 }
#####
#
# magical zsh keys
#
#####
# «keys» (to ".keys")
# Note: "bindkey" used to break tab completion in zsh-3.1.6.
# Solution: switch cowardly to 3.0.7 and prepare to hunt the bug.
# (find-es "zsh" "bindkey_bug")
# bindkey "^W" kill-region
# bindkey "^[[1~" beginning-of-line
# bindkey "^[[3~" delete-char
# bindkey "^[[4~" end-of-line
# bindkey "^[m" menu-complete
# bindkey "^[M" reverse-menu-complete
# (find-node "(zsh)Description of Options" "AUTO_LIST")
# (find-node "(zsh)Completion Widgets")
setopt autolist
# «run-help» (to ".run-help")
# (find-es "zsh" "zsh_help")
#export ZSHHELPDIR=~/ZSHHELP
function run-help() {
[[ $1 = . ]] && 1=dot
[[ $1 = : ]] && 1=colon
if [[ $1 = compctl ]]; then
man zshcompctl
elif [[ -f $ZSHHELPDIR/$1 ]]; then
less $ZSHHELPDIR/$1
else
man $1 || w $1
fi
}
# «completion» (to ".completion")
# zsh3.0 has these as defaults, but for 3.1.6 I have to set them
# explicitly (and I learned how by comparing the defaults):
# (find-es "zsh" "compctl_defaults")
compctl -b bindkey
compctl -v export
compctl -o setopt
compctl -v unset
compctl -o unsetopt
compctl -v vared
compctl -c which
# compctl -c sudo
compctl -c man
## function comp_emails () { reply=($(<~/.addrs)) }
## compctl -K comp_emails email email850 emailfile
#####
#
# TeX and printing
#
#####
# «TeX» (to ".TeX")
#
alias checkfonts='dvips -o /dev/null'
alias checkfonts300='dvips -D 300 -o /dev/null'
alias wtex='kpsewhich -n tex tex'
alias wlatex='kpsewhich -n latex tex'
# «dvifonts» (to ".dvifonts")
# (find-angg ".emacs" "find-dvifonts")
function dvifonts-l () { dvitype -output-level=1 $1 | grep fntdef }
function dvifonts () { dvifonts-l $* | cut -d' ' -f 4- }
function dvieps-l () { dvitype -output-level=1 $1 | grep PSfile }
#function dvieps () { dvieps-l $1 | perl -nle 'm/"(.*)"/ && print "foo", $1'}
function dvieps () { dvieps-l $1 | perl -nle 'print m/"(.*)"/'}
function dvi+eps () { echo $1; dvieps $1 }
# (find-angg ".emacs" "date")
alias hoje='date +%Y%b%d | tr A-Z a-z'
#export HOJE=$(date +%Y%b%d)
#export HOJEDVITGZ=${HOJE}-dvi.tgz
#export HOJESRCTGZ=${HOJE}-src.tgz
# «savetmptex» (to ".savetmptex")
# (find-es "tex" "edrxnotes")
function savetmptex () {
i=$(perl -nle 'm/^\\edrxnotes{([!-~]+)}/ && print $1' < tmp.tex)
if [[ -n $i ]]; then
echo $i.tex
sed -e "s/^\\\\input tmp.dnt/\\\\input $i.auto.dnt/" < tmp.tex > $i.tex
fi
}
# «printing» (to ".printing")
# (find-node "(zsh)Filename Generation" "<[X]-[Y]>")
# (find-angg "LATEX/Makefile" ".p01")
# Examples:
# backprint /tmp/tmp.p??
# fwdprint /tmp/tmp.p<14-17>
#
# «gsdj» (to ".gsdj")
# (find-angg ".emacs" "find-cat-to-lp0-script")
# (find-angg "bin/lpdj-tmp")
alias gsdj='gs -sDEVICE=djet500 -r300 -dNOPAUSE -dBATCH'
alias gscdj='gs -sDEVICE=cdj550 -r300 -dNOPAUSE -dBATCH'
function gsdj-tmp () { rm -v /tmp/o.p<1->; gsdj -sOutputFile=/tmp/o.p%03d $* }
function gscdj-tmp () { rm -v /tmp/o.p<1->; gscdj -sOutputFile=/tmp/o.p%03d $*}
# gsdj -sOutputFile=foo.p%02d foo.ps
function backprint () {
for i in $(print -l $* | tac); do echo $i; cat $i > /dev/lp1; done
}
function fwdprint () {
for i in $*; do echo $i; cat $i > /dev/lp1; done
}
function oddprint () {
backprint $(print -l $* | grep '[13579]$')
}
function evenprint () {
fwdprint $(print -l $* | grep '[02468]$')
}
#function lmake () {cd ~/LATEX; rm $1.dvi; make $1.dvi }
#function lmakep () {cd ~/LATEX; rm $1.dvi;rm $1.p<0-999>; make $1.dvi $1.p01 }
#function lmakeP () {cd ~/LATEX; rm $1.dvi;rm $1.p<0-999>; make $1.dvi $1.p001}
#function moveps () { pstops $(~/TCL/pstopsargs $*) }
# (find-fline "~/TCL/pstopsargs")
#
# «ps2pdj» (to ".ps2pdj")
# (find-angg "LATEX/Makefile" ".p01")
# (find-angg "bin/gs-640c-bw")
function ps2pdj () {
pstops -q '1:0(0,-1in)' $1 \
| ~/bin/gs-640c-bw -dNOPAUSE -dBATCH -sOutputFile=/tmp/o.pdj -
}
# «a2ps» (to ".a2ps")
# (find-node "(a2ps)Pretty Print Options" "-E")
# (find-node "(a2ps)Sheet Options")
# (find-node "(a2ps)Some Encodings")
# (find-fline "~/.a2ps/a2psrc")
function a2ps850dj () {
if [[ $1 = -o ]] then
a2ps -o $2 -X ibmpc \
--columns=2 --rows=1 --major=columns --portrait --medium=A4dj $*[3,-1]
else echo "Usage: $0 -o xxx.ps [options] xxx.txt"
echo " usually: -o <psfile> $0 -Eplain <txtfile>"
fi
}
# «pstotext» (to ".pstotext")
function mypstotext () {
pstotext $* | perl -nle 's/¡/-/g; print'
}
# «ps2up-letter» (to ".ps2up-letter")
# (eev "cd $usr_src/psutils-1.17.orig/; man2t psnup.1 | l")
alias ps2up-letter='psnup -2 -p letter'
alias ps2up-letter-laser6='psnup -2 -p letter | lpr -P laser6'
# «psmyflip» (to ".psmyflip")
# (find-node "(dvips)Config file paper sizes" "A4size 210mm 297mm")
# (find-fline "~/LATEX/tmp.ps" "BoundingBox:")
# (* (/ 596 72.0) 25.4)
# (* (/ 842 72.0) 25.4)
alias psmyflip="pstops '2:0,1U(596pt,842pt)'"
# «zxdvi» (to ".zxdvi")
# (find-es "tex" "xdvi-gz")
# (find-fline "/usr/bin/X11/xdvi" "*.gz")
# (find-man "1 tempfile")
# (find-node "(zsh)Shell Builtin Commands" "\ntrap")
# (find-node "(bash)Bourne Shell Builtins" "`trap'")
function zxdvi () {(
dviname=$(basename $(basename $1 .gz) .Z)
tempdir=$(tempfile -p zxdvi)
rm $tempdir
mkdir $tempdir
zcat $1 > $tempdir/$dviname
xdvi $tempdir/$dviname $*[2,-1]
# rm -Rv $tempdir
rm -R $tempdir
)}
# «rexdvi» (to ".rexdvi")
# (find-es "tex" "xdvi-pid")
# (find-zshnode "Shell Builtin Commands" "return [ N ]")
# (find-zshnode "Complex Commands")
# Note that our detection of a running xdvi is very simple-minded.
# (find-fline "/usr/bin/xdvi")
function ispidfile () { [[ -e $1 && -d /proc/$(<$1)/ ]] }
function rexdvi () {(
PIDFILE=/tmp/xdvi-$(basename $1)-pid
if ispidfile $PIDFILE; then
kill -USR1 $(< $PIDFILE)
else
# xdvi $*[2,-1] $1 &
xdvi.bin -name xdvi $*[2,-1] $1 &
echo $! > $PIDFILE
fi
)}
# «regv» (to ".regv")
# (find-man "1 gv" "-watch")
# (find-man "1 kill" "HUP ")
# (find-angg "bin/regv")
function regv () {(
PIDFILE=/tmp/gv-$(basename $1)-pid
if [[ -e $PIDFILE && -e /proc/$(< $PIDFILE) ]]; then
kill -HUP $(< $PIDFILE)
else
gv $*[2,-1] $1 &
echo $! > $PIDFILE
fi
)}
# «xydemo» (to ".xydemo")
function xydemo () {
( echo -E '\documentclass{book} \usepackage'$1'{xy} \begin{document}'
echo -E '$$ \begin{xy}'
cat
echo -E '\end{xy} $$ \end{document}'
) > /tmp/xydemo.tex
(cd /tmp/; latex xydemo.tex && rexdvi xydemo.dvi)
}
# «diagxydemo» (to ".diagxydemo")
# (find-es "xypic" "diagxydemo0")
function diagxydemo0 () {
( echo -E '\documentclass{book}'
echo -E '\input diagxy'
echo -E '\xyoption{curve}'
echo -E '\begin{document}'
# (find-diagxyfile "diagxy.tex" "\\def\\to{")
echo -E '\def\diagxyto{\ifnextchar/{\toop}{\toop/>/}}'
echo -E '\def\mon{\diagxyto/ >->/}'
echo -E '\def\epi{\diagxyto/->>/}'
echo -E '\def\toleft{\diagxyto/<-/}'
echo -E '\def\monleft{\diagxyto/<-< /}'
echo -E '\def\epileft{\diagxyto/<<-/}'
echo -E '\def\to{\rightarrow}'
echo -E $1
cat
echo -E '\end{document}'
) > ~/LATEX/diagxydemo.tex
(cd ~/LATEX/; latex diagxydemo.tex && rexdvi diagxydemo.dvi)
}
function find-diagxydemo () {
( echo -E '$\bfig'
cat
echo -E '\efig$'
) | diagxydemo0 $1
}
# «pstdemo» (to ".pstdemo")
function pstdemo () {
( echo -E '\documentclass{book}'
echo -E '\input pstricks'
echo -E '\input pst-node'
echo -E '\begin{document}'
cat
echo -E '\end{document}'
) > ~/LATEX/pstdemo.tex
( cd ~/LATEX/
latex pstdemo.tex && dvips -o pstdemo.ps pstdemo.dvi & regv pstdemo.ps
)
}
# «testfontcmds» (to ".testfontcmds")
# (find-es "tex" "testfontcmds")
# (eev "testfont bbold10")
function testfontcmds () {
echo -nE '\let\noinit! \input testfont.tex'
for i in $*; do
echo -nE '\def\fontname{'$i'}\startfont\table'
done
echo -E '\bye'
}
function testfont () {
cd /tmp/; tex "$(testfontcmds $*)" && rexdvi /tmp/testfont.dvi
}
# «tdiags» (to ".tdiags")
# Tcl code: (find-angg "LATEX/diaglib.014" "diagxy_hacks")
# Last saved tmp diag: (find-fline "~/LATEX/tmpdiag.tex")
# Emacs support: (find-angg ".emacs" "tdiags")
# Awk links: (find-eev "changer.awk")
# Preparing (1st time): (eev "cd ~/LATEX/; ln -sf ../o tmpdiag.tex")
# TeX wrapper for previewing: (find-fline "~/LATEX/testdiag.tex")
# For ". testdiag": (find-fline "~/LATEX/testdiag")
function testdiag () {
cd ~/LATEX/
awk -v fname=$(basename $1) '
$0 == "% tdiagheader=yes" {
printf("%% (find-fline \"%s\" %d)\n", fname, NR);
header = 1; next;
}
$0 == "% tdiagheader=no" {
header = 0;
}
/^% tdiagheader:/ {
printf(" %% (find-fline \"%s\" %d)\n", fname, NR);
sub(/^% tdiagheader:/, "");
print;
}
header { print }
' < $1 > testdiag.tex && latex testdiag.tex && rexdvi testdiag.dvi
}
# «mytoctoeevlinks» (to ".mytoctoeevlinks")
# (find-es "tex" "mytoc")
function mytoctoeevlinks () {
expect -c '
foreach line [split [read stdin] \n] {
set text ??; set colons ::
if [regexp {^(:+) (.*)} $line -> colons text] {
regsub -all {:} $colons { } colons
puts "%$colons«.$text»\t\t(to \"$text\")"
}
}
'
}
# «makebbl» (to ".makebbl")
# (find-es "tex" "makebbl")
# (find-LATEX "catsem.bib" "test")
# Typical usage:
# (find-zsh "cd ~/LATEX/ && makebbl all.bbl catsem,filters")
# (find-xpdfpage "~/LATEX/tmpbib.pdf")
# (find-pdftotext "~/LATEX/tmpbib.pdf")
# to create a file "all.bbl" with all entries from the .bib files
# "catsem.bib" and "filters.bib", in style "alpha".
# (find-man "1 bibtex")
# (find-man "1 makeindex")
function makebbl0 () {
echo -E '\documentclass[oneside]{book}'
echo -E '\usepackage[latin1]{inputenc}'
echo -E '\usepackage{url}'
echo -E '\begin{document}'
echo -E '\nocite{*}'
for i in $*[2,-1]; do echo -E '\bibliography{'$i'}'; done
echo -E '\bibliographystyle{alpha}'
echo -E '\end{document}'
}
function makebbl () {
makebbl0 $* > tmpbib.tex
pdflatex tmpbib.tex
bibtex tmpbib
cp -v tmpbib.bbl $1
}
# «makebblcites» (to ".makebblcites")
function makebblcites () {
grep ^@ | tr '{},' ' ' | awk '{printf "\\cite{%s}\n", $2}'
}
# «pdfpages-tex» (to ".pdfpages-tex")
# (find-es "tex" "pdfpages-tex")
function pdfpages-tex () {
echo "\
\\\\documentclass[oneside]{book}
\\\\usepackage{pdfpages}
\\\\begin{document}
\\\\includepdf[$1]{$2}
\\\\end{document}"
}
#####
#
# Icon
#
#####
# «Icon» (to ".Icon")
# (find-es "icon" "icone")
# (find-angg "ICON/")
# (find-angg "ICON/zinc.icn")
# (find-angg "ICON/zlib.icn")
# (find-man "1 icont")
# (find-sh "rm -fv ~/ICON/zlib.u{1,2}; cd ~/ICON/ && icont -c zlib.icn")
# (find-fline "~/ICON/")
# (find-status "icon-ipl")
# (find-vldifile "icon-ipl.list")
# (find-udfile "icon-ipl/")
#
#export LPATH="$HOME/ICON /usr/lib/icon/ipl/incl /usr/lib/icon/ipl/gincl"
#export IPATH="$HOME/ICON /usr/lib/icon/ipl/ucode"
#export IPATH="$HOME/ICON /usr/lib/icon-ipl"
#
function icone () {
print -l '$include "zinc.icn"' $1 'procedure main(args)' $2 'end' \
> ~/tmp/tmp.icn
icont -s -o ~/tmp/tmpicn ~/tmp/tmp.icn -x $*[3,-1]
}
function iconw () {
icone '' "w($1)" $*[2,-1]
}
# Examples:
# icone '' 'w(1+2)'
# icone '' 'every write(function())'
# icone '' 'w(args)' foo bar
# echo "foo\n bar" | icone '' 'w(read()); w(read())'
#
# iconw 'args[2:4]' a b c d e
#####
#
# Things related to rc.d and chroot
#
#####
# «stop-restart-services» (to ".stop-restart-services")
# (find-es "potato" "stop-restart-services")
function stop-services () {
for i in $(print -l /etc/rc2.d/* | tac); do
echo $i; $i stop
done
}
function restart-services () {
for i in /etc/rc2.d/*; do
echo $i; $i start
done
}
# To do: a function that changes (in a safe way) the /etc/inittab and
# then issues a "telinit q".
# (find-man "8 telinit" "Q or q tell init to re-examine the /etc/inittab file")
# «restart_inetd» (to ".restart_inetd")
# Restart the inetd daemon VERY carefully
# (for when we're paranoid)
function restart_inetd () {
ps ax | grep inetd | grep -v grep
/etc/init.d/inetd stop
ps ax | grep inetd | grep -v grep
/etc/init.d/inetd start
ps ax | grep inetd | grep -v grep
cat /var/run/inetd.pid
}
# «gpm» (to ".gpm")
# (find-es "mouse" "gpm")
alias killgpm='kill $(cat /var/run/gpmpid)'
alias regpm='(DISPLAY=; /etc/init.d/gpm restart)'
# «unsetall» (to ".unsetall")
# (find-es "zsh" "unsetall")
function unsetall () {( _unsetall; $* )}
function _unsetall () {
unset $(env | sed 's/=.*$//' \
| egrep -v '^(EE|HOME|PATH|PS.*|PWD|SHELL|TERM|_)$')
}
# «chroot-redhat-zsh» (to ".chroot-redhat-zsh")
# (find-es "redhat" "chroot_to_redhat")
function chroot-redhat-zsh () {
sh -c '
unset $(env | sed "s/=.*\$//" | egrep -v "^(PWD|TERM|HOME|_)\$")
export _CHROOTSTR=.rh
export HOME=/home/root
export SHELL=/bin/zsh
exec /usr/sbin/chroot /redhat /bin/zsh
'
}
#####
#
# loop device
#
#####
# «loop_device» (to ".loop_device")
# (find-zshnode "Shell Builtin Commands" "getopt")
# (find-k22file "Documentation/Configure.help" "Loop device support")
# insmod /boot/angg/loop.o
# There's now a simpler way using "-o loop"...
#
function umountloop0 () {
umount /dev/loop0
losetup -d /dev/loop0
}
function mountloop0L () {
umount /dev/loop0
losetup -d /dev/loop0
losetup /dev/loop0 $1
shift
mount /dev/loop0 /L $*
}
function mountloop1L () {
umount /dev/loop1
losetup -d /dev/loop1
losetup /dev/loop1 $1
shift
mount /dev/loop1 /L1 $*
}
#####
#
# filters
#
#####
# «filters» (to ".filters")
function mycat () {
for i in $*
do echo "\n\n\n------> $i\n"
cat $i
done
}
function mycatp () {
echo "\n\n\n--> $*\n"
$*
}
function getlinks () {
perl -ne 'while ( m/"((ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }'
}
function gethrefs () {
perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }'
}
function getanames () {
perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }'
}
function getforms () {
perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic )
{ print $1, "\n"; }'
}
function getstrings () {
perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }'
}
function getanchors () {
perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }'
}
# «man2t» (to ".man2t")
alias man2t='groff -Tascii -man'
# (find-es "expect" "body_of_manpage")
function man2t2 () { man2t $* | m2t2 }
function m2t2 () {
expect -c 'for {set n 0} {![eof stdin]} {incr n} {
gets stdin li; set pn [expr $n%66]
if {!($pn<=5 || $pn >= 60)} {puts $li}
}'
}
function pod2t () {
pod2man $* | groff -Tascii -man
}
function nolinks () {
grep -v ' -> '
}
function crlf () {
perl -nle 's/\r//; print "$_\r";'
}
function crlfff () {
crlf; echo -ne '\f'
}
# «filter» (to ".filter")
# (find-es "perl" "filter")
function filter () { WHICH=$1 \
perl -nle '
if (m/;;-> (.*)/) {
$doprint = 0;
for $p (split(/ /, $1)) {
for $w (split(/,/, $ENV{"WHICH"})) {
if ($p eq $w) { $doprint = 1 }
}
}
} else {
if ($doprint) { print; }
}
'
}
# «zcatinfo» (to ".zcatinfo")
# (find-es "zsh" "zcatinfo")
function zcatinfo () {
echo " # Expect exactly one 'No such file or directory' error." >/dev/stderr
(setopt NULL_GLOB; zcat $1{,.info}{,-?,-??}.gz)
}
# «find-ess» (to ".find-ess")
function find-ess () {(
STEM=$(basename $1 .e)
perl -nle 'm/«(.*)»/ && print "# (find-es \"'$STEM'\" \"$1\")"' < $1
)}
#####
#
# splitting files in small chunks
#
#####
# «spl» (to ".spl")
# (find-node "(coreutils)dd invocation")
# (find-node "(coreutils)dd invocation" "`bs=BYTES'")
# (find-node "(coreutils)Block size" "`G'")
# Example:
# spl $SDEBIAN/ls-lR 2000 00 01 02
# produces ls-lR00.gz, ls-lR01.gz and ls-lR02.gz in the current diretory.
# If these are all the pieces, then by ungzipping and then cating them we
# get back the original file.
#
function spl () {
FILE=$1
BLOCKS=$2
shift 2
for PARTN in $*; do
dd if=$FILE skip=$[$BLOCKS * $PARTN] count=$BLOCKS \
| gzip -c9 > $(basename $FILE)$PARTN.gz
done
}
function splzip () {
FILE=$1
BLOCKS=$2
shift 2
for PARTN in $*; do
dd if=$FILE skip=$[$BLOCKS * $PARTN] count=$BLOCKS > $PARTN
zip $PARTN.zip $PARTN
done
echo "copy /b ${(j:+:)*} $(basename $FILE)\r" > gruda.bat
}
# «split_transfer» (to ".split_transfer")
alias packS='cd $S; cp ~/.psne.log .; tar -cvzf ~/public_html/S.tgz .* *; laf ~/public_html/S.tgz'
alias getS='cd /tmp; wget $HBOTO/S.tgz'
alias getS='cd /tmp; wget $FBOTOPH/S.tgz'
alias unpackS='cd $S; tar -xvzf /tmp/S.tgz'
function splitS () { cd ~/public_html/; spl S.tgz $* }
function getSparts () {
cd /tmp
for i in $*; do
/usr/bin/wget -c $FBOTOPH/S.tgz$i.gz
done
}
# splitS 1000 00 01 02 03 04 05
# getSparts 00 01 02 03 04 05
#
# ou com: export FBOTOPH=http://www.mat.puc-rio.br/~edrx
#####
#
# mail
#
#####
# «email»
function mailas () { su -s /usr/bin/mail $1 -- $*[2,-1] }
function email () { su -s /usr/bin/mail edrx -- $* }
# (find-es "slink" "mime_lite")
# (find-es "perl" "mimelite_zsh2")
# Note that I'm using "su -s /usr/sbin/sendmail edrx --" instead of
# simply "/usr/sbin/sendmail"; you may want to change that. Also, I'm
# using "usr lib "$ENV{HOME}/PERL/" to allow Lite.pm to be in
# ~/PERL/MIME/Lite.pm.
function email_mimelite () {
perl -e 'use lib "$ENV{HOME}/PERL/"; use MIME::Lite;
'$1'
if (open SENDMAIL, "|su -s /usr/sbin/sendmail edrx -- -t -oi -oem") {
$msg->print(\*SENDMAIL); close SENDMAIL;
} else { print "Erro interno no sendmail: !=$!, ?=$?.\n";
}'
}
function email850 () {
850toiso | TO=$1 SUBJ=$2 email_mimelite '
undef $/;
$msg = new MIME::Lite
To => $ENV{"TO"},
Subject => $ENV{"SUBJ"},
Encoding => "quoted-printable",
Data => <>;'
}
# «emailfile»
function emailfile () {
TO=$1 FILE=$2 email_mimelite '
$msg = new MIME::Lite
To => $ENV{"TO"},
Subject => $ENV{"FILE"},
Data => "";
attach $msg
Encoding => "base64",
Type => "BINARY",
Path => $ENV{"FILE"},
Filename => $ENV{"FILE"};'
}
alias email850pmv='email850 pmveloso@bridge.com.br'
# (find-fline "~/bin/sendemail")
# My "sendemail" script broke after a partial upgrade to woody, but it
# seems that this works:
alias sendemail='sudo -u edrx mail'
# «perlsendfile» (to ".perlsendfile")
# (find-es "mail" "libmime-perl")
# (eev "TO=beth FILETYPE=image/png FILE=~/DANIEL/daniel.png perlsendfile")
#
function perlsendfile () {
perl -- =(<<'%%%'
use MIME::Entity;
$top = MIME::Entity->build(
To => $ENV{TO},
Subject => $ENV{SUBJECT},
Type => "multipart/mixed",
#From => $ENV{FROM},
#'Return-Path:' => $ENV{FROM},
);
$top->attach(
Path => $ENV{FILE},
Type => $ENV{FILETYPE},
Encoding => "base64",
);
open MAIL, "| /usr/lib/sendmail $ENV{TO}" or die "open: $!";
$top->print(\*MAIL);
close MAIL;
%%%
)
}
#####
#
# modem and ppp
#
#####
# «modem_interact» (to ".modem_interact")
# (find-es "modem" "modem_interact")
# modem_interact /dev/ttyS2 5 echo
# modem_interact '' '' echo
function modem_interact () {
$3 expect -c '
spawn -noecho -open [open '${1:-/dev/modem}' r+]
stty speed 115200 < '${1:-/dev/modem}'
stty -icanon
interact ~ return timeout '${2:--1}' return
'
}
# «expect_isp» (to ".expect_isp")
# «inx-up» (to ".inx-up")
# (find-es "modem" "ppp-inx-feb2003")
function inx-up () {
expect -c '
spawn minicom
interact "~r" {send atx3l0\r} "~d00" {send atdt//15000450\r} \
"~\r" {send \001q\r}
'
rm /etc/resolv.conf
/usr/sbin/pppd -detach usepeerdns defaultroute /dev/modem 115200 \
name edrx@inx.com.br remotename inx &
}
# «ppp-up» (to ".ppp-up")
# (find-es "modem" "expect_isp_2")
# This pair of functions (ppp-up/ppp-up_) supersedes both inx-upe and
# ig-up, below; if you just want to understand in rough terms how this
# works then it's better to check ig-up: (to "ig-up")
function inx-up_ () {
/usr/sbin/pppd -detach usepeerdns defaultroute /dev/modem 115200 &
}
function ig-up_ () {
# /usr/sbin/pppd user ig remotename ig \
/usr/sbin/pppd user palmeida32 remotename 22440031 \
-detach usepeerdns defaultroute /dev/modem 115200 &
}
function ppp-up () {
ppp-up_
case $(</tmp/ppp-up-status) in
inx) rm /etc/resolv.conf; inx-up_ ;;
ig) rm /etc/resolv.conf; ig-up_ ;;
*) echo Not trying to run pppd.
esac
}
function ppp-up_ () {
expect -c '
source $env(HOME)/.passwds.tcl
# Create a proc for each telephone number
foreach n {00 01 02 03 04 05 06 08 09 10 11 12 13 14 15 16} \
phone {34619400 25126880 25126881 25126882 25126883 25126884 25126889
25126890 25126891 25126892 25126896 25126897 25126898 25126899
25126904 25126905 25126906} {
proc d$n {} " global USER PWD passwd ISP
set USER edrx; set PWD $passwd(inx); set ISP inx;
send atdt//$phone\\r
"
}
proc ig {} { global USER PWD ISP
set USER ig; set PWD ig; set ISP ig; send atdt//15002000\r
}
set ok 0; spawn minicom; stty raw
interact {
~d00 d00 ~d01 d01 ~d02 d02 ~d03 d03 ~d04 d04 ~d05 d05 ~d06 d06
~d07 d07 ~d08 d08 ~d09 d09 ~d10 d10 ~d11 d11 ~d12 d12 ~d13 d13
~d14 d14 ~d15 d15 ~d16 d16 ~i ig
~r {send atx3l0\r}
~u {send $USER\r}
~p {send $PWD\r}
"~\r" {send \001q\r}
-o rname: {send $USER\r}
ogin: {send $USER\r}
ssword: {send $PWD\r; set ok $ISP}
eof return
}
exec echo $ok > /tmp/ppp-up-status
puts "minicom done"
'
}
# «inx-upe» (to ".inx-upe")
# (find-es "modem" "expect_isp")
# Obsolete.
function inx-upe () {
echo "search ." > /etc/resolv.conf
echo "nameserver 200.240.18.1" >> /etc/resolv.conf
echo "nameserver 200.240.18.5" >> /etc/resolv.conf
expect -c '
source $env(HOME)/.passwds.tcl
set phones {34619400 25126880 25126881 25126882 25126883 25126884 25126889
25126890 25126891 25126892 25126896 25126897 25126898 25126899 25126904
25126905 25126906}
spawn minicom; stty raw
interact {
-re {~d([0-1][0-9])} {
scan $interact_out(1,string) %d index
send atdt//[lindex $phones $index]\r
}
"~\r" {send \001q\r}
"~t" {send ats6?s7?s8?s9?s10?s12?s18?s25?\r}
-o
-re (ogin|rname): {send edrx\r}
ssword: {send $passwd(inx)\r}
eof {return}
}
puts "inx-upe: minicom done"
'
#/usr/sbin/pppd -d -detach defaultroute /dev/modem 115200 &
rm /etc/resolv.conf
/usr/sbin/pppd -detach usepeerdns defaultroute /dev/modem 115200 &
}
# «ig-up» (to ".ig-up")
# This used to work for connecting with IG, a free ISP in Rio de Janeiro.
# It should be very easy to adapt for other ISPs and other modems.
function ig-up () {
expect -c '
spawn minicom
interact {
"~r" {send atx3\r}
"~d00" {send atdt//15002000\r}
"~\r" {send \001q\r}
}
puts "ig-up: minicom done"
'
rm /etc/resolv.conf
/usr/sbin/pppd user ig remotename ig \
debug -detach usepeerdns defaultroute /dev/ttyS2 115200 &
}
function ppp-down () {
echo cat /var/run/ppp0.pid
cat /var/run/ppp0.pid && \
kill $(cat /var/run/ppp0.pid)
rm -v /var/lock/LCK..modem
}
function untilwvdial () { until wvdial $*; do; done }
#####
#
# my page
#
#####
# «makeL» (to ".makeL")
# (find-angg "TH/Makefile")
#export TH=~/TH
alias makeL='mkdir ~/TH/L/; cd ~/TH/L/ &&
DOLOCAL=1 make -f ~/TH/Makefile COPYING=1'
alias makeR='mkdir ~/TH/R/; cd ~/TH/R/ &&
make -f ~/TH/Makefile COPYING=1'
alias makeL1='mkdir ~/TH/R/; cd ~/TH/R/ &&
DOLOCAL=1 make -f ~/TH/Makefile NEEDMAKEFILEAUTO=1 COPYING=1'
alias makeR1='mkdir ~/TH/R/; cd ~/TH/R/ &&
make -f ~/TH/Makefile NEEDMAKEFILEAUTO=1 COPYING=1'
function makeR1C () {
makeR1 $1
Scp ~/TH/R/$1 edrx@angg.twu.net:public_html/$1
echo file://$HOME/TH/R/$1
echo http://angg.twu.net/$1
}
alias makeL-anew='rm -Rv ~/TH/L; makeL'
alias makeR-anew='rm -Rv ~/TH/R; makeR'
alias makeLedrxtgz='makeL page edrx.tgz'
alias makeRedrxtgz='makeR page edrx.tgz'
alias makeLhomeedrxtgz='makeL page ~/edrx.tgz'
# makeP is almost the same as makeR, but uses ~/public_html/
#
alias makeP='mkdir -p ~/public_html/; cd ~/public_html/ &&
make -f ~/TH/Makefile COPYING=1'
alias makeP-anew='rm -Rv ~/public_html; makeP'
alias makePedrxtgz='makeP page edrx.tgz'
# Make a "remote" version:
# «makepage» (to ".makepage")
# Full version,
function makepage () {
# rm -fRv ~/public_html/
rm -Rf ~/public_html/
mkdir ~/public_html/
cd ~/public_html/
tar -xvzf ~/edrx.tgz
# touch $(find .* * -type f)
#
make -f TH/Makefile page edrx.tgz |& tee ~/om
}
function cp_slow_html_to_public () {
# twu's cp loops here, I don't know why... trying with a "head"
# (cd ~/slow_html/; cp -dPpvRl * ~/public_html/) |& head -n 2000
echo "cd ~/slow_html/ && cp -dPpvRl * ~/public_html/ | wc"
cd ~/slow_html/ && cp -dPpvRl * ~/public_html/ | wc
}
# «makepagefromtar» (to ".makepagefromtar")
# (find-es "page" "upload-rsync")
function makepagefromtar () {
cd
gzip -c9 < ~/edrx.tar > ~/edrx.tgz
laf edrx.tar edrx.tgz
makepage
cp_slow_html_to_public
}
# «makepageindexhtmls» (to ".makepageindexhtmls")
# (find-angg "LUA/lstoindexhtml.lua")
function makepageindexhtml () { LC_COLLATE=C lstoindexhtml_lua_maybe $1 .favicon.png }
function makepageindexhtmls () {
for i in $(cd ~/public_html && find .* * -type d); do
cd ~/public_html/$i && LC_COLLATE=C lstoindexhtml_lua_maybe $i .favicon.png
done
}
# «makeindexhtmls» (to ".makeindexhtmls")
# For mat.puc-rio.br.
# (find-angg "TCL/lstoindexhtml")
function makeindexhtmls () {
for i in $(find ~/public_html -type d | sort); do
if [[ ! -e $i/index.html ]]; then
cd $i; pwd; tclsh ~/TCL/lstoindexhtml > index.html
fi
done
}
# function lstoindexhtml_lua () {
# ls -laF | col -x | lua50 ~/LUA/lstoindexhtml.lua
# }
# (find-angg "LUA/lstoindexhtml.lua")
# (find-blogme3 "lstoindexhtml.lua")
# «lstoindexhtml_lua_maybe» (to ".lstoindexhtml_lua_maybe")
function lstoindexhtml_lua_maybe () {
if [[ -e index.html ]]; then
head -n 5 index.html \
| egrep -q 'Generated by' \
&& rm index.html
# && echo "Deleting: $1"
fi
if [[ ! -e index.html ]]; then
echo "Creating: $1"
ls -laF | col -x \
| lua51 ~/LUA/lstoindexhtml.lua $1 $(test -e "$2" && echo $2)\
| lua51 -e 'writefile("index.html", io.read("*a"))'
fi
}
# «lstoindexhtml_lua_dirs» (to ".lstoindexhtml_lua_dirs")
# Usage: cd ~/TH/R/ && lstoindexhtml_lua_dirs $(find .* * -type d | sort)
function lstoindexhtml_lua_dirs () {
for i in $*; do
(cd $i && LC_COLLATE=C lstoindexhtml_lua_maybe $i .favicon.png)
done
}
# «bigmakepage» (to ".bigmakepage")
# Download edrx.tgz from twu and then do a makepage.
# For mat.puc-rio.br.
alias bigmakepage='cd && wget http://angg.twu.net/edrx.tgz &&
mv -fv edrx.tgz.1 edrx.tgz && makepage'
# «unglyph»
# The first parameter is the name of the temp file to use.
function unglyph () {
if [[ -e $1 ]]; then echo "Can't use $1 as temp file!"; return 1; else
for i in $*[2,-1]; do
echo unglyphing $i
sed -e 's/*/-/' -e 's/«/<</' -e 's/»/>>/' < $i > $1
touch -r $i $1
mv $1 $i
done; fi
}
# rm -Rv /tmp/e; mkdir /tmp/e; cp -av $ES/*.e /tmp/e; cd /tmp/e; unglyph _ *.e
# «uploadtoanggtmp» (to ".uploadtoanggtmp")
function uploadtoanggtmp () {
anonftp angg.twu.net \
"put $1 public_html/tmp/$(basename $1)" \
quit
echo http://angg.twu.net/tmp/$(basename $1)
}
function uploadtoanggtmp+ () {
anonftp angg.twu.net \
"put $1 public_html/tmp/$(basename $1)" \
"put $1 slow_html/tmp/$(basename $1)" \
quit
echo http://angg.twu.net/tmp/$(basename $1)
}
function uploadtoanggtmp () {
Scp $1 edrx@angg.twu.net:public_html/tmp/$(basename $1)
echo http://angg.twu.net/tmp/$(basename $1)
}
function uploadtoanggtmp+ () {
Scp $1 edrx@angg.twu.net:public_html/tmp/$(basename $1)
Scp $1 edrx@angg.twu.net:slow_html/tmp/$(basename $1)
echo http://angg.twu.net/tmp/$(basename $1)
}
#####
#
# wikis
# 2000jun??
#
#####
# «wikis»
# (find-es "wiki" "wikit_cgi")
#
# export WIKI=http://angg:8080/wiki
# export RWIKIT=http://mini.net/cgi-bin/wikit
# export TCLKIT=$(cd ~/bin/; pwd)/tclkit
# [[ -e ~/WIKIS ]] && \
# export WIKIDIR=$(cd ~/WIKIS/; pwd)
# #
# # A function to create the two cgis for a wiki in the current dir.
# # Use like: cd /usr/lib/cgi-bin/; create_wiki_cgis metakit
# #
# function create_wiki_cgis () {
# echo '#!/bin/sh' > $1
# echo exec $TCLKIT $WIKIDIR/$1 wikit >> $1
# chmod 755 $1
# #
# echo '#!/bin/sh' > $1.gz
# echo 'echo Content-type: text/plain' >> $1.gz
# echo 'echo' >> $1.gz
# echo 'exec gzip -c6 <' $WIKIDIR/$1 >> $1.gz
# chmod 755 $1.gz
# }
#
# # For wiki hacking:
# # «ewiki_do»
# alias ewiki_do='tclkit ~/WIKIS/ewiki do'
#
# # «ewiki_dof»
# function ewiki_dof () {
# ewiki_do "package require format; namespace import WiKit::Format::*; $1"
# }
#
# # «ewiki_s2h»
# alias ewiki_s2h2='ewiki_dof "puts [StreamToHTML [TextToStream [exec cat]]]"'
# function ewiki_s2h () {
# ewiki_dof ' puts "<html>\n<body>
# [lindex [StreamToHTML [TextToStream [exec cat]]] 0]
# </body>\n</html>"'
# }
#####
#
# cgis
#
#####
# For basic cgi tests:
# «runtmpcgi»
#
# # (find-es "http" "runtmpcgi")
# export EECGIFILE=/usr/lib/cgi-bin/tmp.cgi
# export EECGIURL=http://127.0.0.1/cgi-bin/tmp.cgi
# function tmpcgi () {
# wget -q -O - $EECGIURL$1 $*[2,-1]
# }
# function runtmpcgi () {
# cat > $EECGIFILE
# chmod 755 $EECGIFILE
# tmpcgi $*
# }
# function runperltcgi () {
# { echo '#!/usr/bin/perl'
# echo -E 'print "Content-type: text/plain\n\n";'
# cat } | runtmpcgi $*
# }
# function runbashcgi () {
# { echo '#!/bin/bash'
# echo -E 'echo -e "Content-type: text/plain\n"'
# cat } | runtmpcgi $*
# }
# function runluacgi () {
# { echo "#!$(which lua50)"
# echo -E 'print("Content-type: text/plain\n")'
# cat } | runtmpcgi $*
# }
#
# # For heavier stuff:
# function settmpcgi () {
# cat > $EECGIFILE <<'---'
# #!/usr/bin/perl
# print "Content-type: text/plain\n\n";
# use Data::Dumper; sub pdump{print"\n $_[0] =\n",Dumper($_[1]);}
# use CGI; my $query = new CGI;
# ---
# cat >> $EECGIFILE
# chmod 755 $EECGIFILE
# }
# Other way of testing:
# /usr/lib/cgi-bin/tmp.cgi foo=bar
# «perl_http_request»
# (find-es "http" "file_upload")
# Even heavier stuff, but now on the client side...
# I use this to test for example file uploading via http.
function perl_http_request () {
echo 'use LWP::UserAgent; use HTTP::Request::Common;
print LWP::UserAgent -> new
-> request(' > /tmp/p
cat >> /tmp/p
echo ') -> content();' >> /tmp/p
perl /tmp/p
}
#####
#
# sound
#
#####
# function mp () {
# if [[ $# == 0 ]]; then cd /mp3s/MINE/; \ls -x
# else nice -n -40 /hdc6/usr/bin/freeamp $*
# fi
# }
# function vol () {
# if [[ $# == 0 ]]; then aumix -v query
# else aumix -v $*
# fi
# }
#########
## ##
## etc ##
## ##
#########
# «plip»
# Isso é pro angg. Pro tosh, veja (find-esfile "mini.e" "/L/sbin/plip+nfs")
function plip-up () {
insmod /boot/angg/plip.o
ifconfig plip1 10.0.1.1 up pointopoint 10.0.1.2
ifconfig
route add 10.0.1.2 dev plip1
}
function plip-down () {
ifconfig plip1 down
rmmod plip
}
# function google () {
# lynx 'http://www.google.com/search?q='${(j:+:)*}
# }
function rhugs () {
cat > ${TMPHUGSFILE:-/tmp/h}
runhugs ${TMPHUGSFILE:-/tmp/h}
}
# «heredoc»
# (find-es "zsh" "heredoc")
function heredoc () {
cat > $1
OPTIND=0
while getopts o:m: opt $*[2,-1]; do
case $opt in
o) chown -v $OPTARG $1 ;;
m) chmod -v $OPTARG $1 ;;
esac
done
}
function write+chmod () { cat > $1; chmod -v $2 $1 }
# «.zshrc.local»
# Load specific local stuff.
# (find-fline "~/.zshrc.local")
# (find-fline "~/.zshrc.private")
# (find-fline "~/.zshrc.root")
if [[ -e ~/.zshrc.local ]]; then . ~/.zshrc.local; fi
if [[ -e ~/.zshrc.private ]]; then . ~/.zshrc.private; fi
if [[ $UID == 0 ]]; then . ~/.zshrc.root; fi
#
# X11
#
# «X» (to ".X")
# I set DISPLAY because I often want to invoke X programs from VTs:
[[ -n $DISPLAY ]] || export DISPLAY=:0.0
alias xmulti='xmodmap -e "keysym Alt_R = Alt_R Multi_key"'
alias xwname="xwininfo | grep 'Window id:'"
alias edrxnetscape='su -s /usr/bin/X11/netscape edrx'
alias edrxxchat='su -s /usr/bin/xchat edrx'
function killnetscape () {
kill -9 $(ps ax | grep netscape | grep -v grep | awk '{print $1}')
rm -v ~edrx/.netscape/lock
}
# «xset_MATH» (to ".xset_MATH")
# (find-fline "~/.xinitrc")
# (find-angg "eev-extras.el" "xmath")
alias xset_MATH='xset fp default; xset fp+ ~/MTA/; xset fp rehash'
# «inix» (to ".inix")
function inix () {
iso
inslp
cd ~/LATEX/
startx -- -bpp 16 &
inscd
}
alias inix8='xinit -- :1.0 -bpp 8 &'
# «inix-lea» (to ".inix-lea")
function inix-lea () {
iso
inslp
cd ~/LEA/
# (find-es "x" "second-X-server")
# (find-angg ".xinitrc" "guest_users")
# (find-angg "LEA/XF86Config-800x600")
# (find-angg "LEA/.xinitrc")
# xinit ~/LEA/.xinitrc \
# DISPLAY=:1.0 \
# XINITRC=~/LEA/.xinitrc \
GUEST_USER=lea \
startx -- /usr/bin/X11/XF86_SVGA :1.0 \
-xf86config ~/LEA/XF86Config-800x600 vt14 -bpp 16 &
}
# export FS=angg:7100
# alias fsls='fslsfonts -server angg:7100'
# alias getbdf='fstobdf -s angg:7100 -fn'
#
# # «icq»
# function icq () {
# echo Edrx: 32055141
# echo Bruno: 70121435
# echo use gnomeicu ou licq. Bruno: use icqbruno
# }
# alias icqbruno='su - bruno -- gnomeicu -q 70121435'
# alias tuba=/usr/src/tuba-2.5.b1/tuba
# alias tubak='tuba -i wish'
#
# alias offer-kibitz='~/EXPECT/mykibitz -noescape -silent root'
# alias accept-kibitz='~/EXPECT/mykibitz -noescape -silent -$(</tmp/mykibitz.pid)'
# alias tkibitz='tuba -i expect ~/EXPECT/mykibitz'
# function ftpboto () {
# ~/EXPECT/anonftp $BOTO $*
# }
# function ftpmyftp () {
# ~/EXPECT/anonftp $MATINTA 'cd /export/home/ftp/pub/users/edrx' $*
# }
# function ftpmyhttp () {
# ~/EXPECT/anonftp $BOTO 'cd public_html' $*
# }
# «mame»
alias scramble='smame scramble -videomode 2 -frameskip 0 -nomouse'
alias robotron='smame robotron -videomode 2 -frameskip 0 -nomouse'
alias smame2='cd /usr/lib/games/xmame/roms/; smame -videomode 2 -frameskip 0 -nomouse'
alias smame2s='smame2 -sound'
# MAMEROMS=/usr/lib/games/xmame/roms
function mamegames () {(cd $MAMEROMS; print -l *.zip | sed s/.zip//)}
#export MTOOLS_SKIP_CHECK=1
# export MINICOM="-c on"
# export MAPLE=/usr/local/maple
# «emacs-unibyte» (to ".emacs-unibyte")
# (find-e20node "Initial Options" "EMACS_UNIBYTE")
# (find-enode "Initial Options" "EMACS_UNIBYTE")
#export EMACS_UNIBYTE=yes
# function mbemacs () {( unset EMACS_UNIBYTE; emacs $* )}
# alias 00crim20='emacs20 -nw -unibyte ~/CRIM/016ideas'
# alias 00crim21='emacs21 -nw -unibyte ~/CRIM/016ideas'
# «strace» (to ".strace")
# (find-es "anatocc" "libvforkwrap")
# http://jvns.ca/zines/
# http://jvns.ca/strace-zine-portrait.pdf
alias vfwstrace='LD_PRELOAD="/usr/src/libvforkwrap-0.1/libvforkwrap.so.0 $LD_PRELOAD" strace'
alias strace-to='strace -f -etrace=open,stat,fork,_exit,execve,wait4,chdir -o'
alias vfwstrace-to='vfwstrace -f -etrace=open,stat,fork,_exit,execve,wait4,chdir -o'
# «modules» (to ".modules")
#export boot_image=$(cat /proc/cmdline | sed 's/^.*BOOT_IMAGE=//; s/ .*//')
function modules () {
cat /proc/modules | perl -nle 'print m/^(.*?) /'
}
function modules () {
cat /proc/modules | awk '{print $1}'
}
function rmmodules () {
for i in $(modules); do echo $i; rmmod $i; done
}
# «cdrom» (to ".cdrom")
#function inscdx () {
# rm /dev/cdrom
# ln -s mcdx /dev/cdrom
# rmmod mcd
# insmod mcdx
#}
# function inscd-ide () {
# ln -sf hdb /dev/cdrom
# insmod cdrom
# insmod ide-cd
# insmod isofs
# }
# function inscd () {
# rmmod ide-cd
# insmod cdrom
# insmod scsi_mod
# insmod ide-scsi
# insmod sr_mod
# insmod sg
# insmod isofs
# ln -sf scd0 /dev/cdrom
# }
# function rmcd () {
# rmmod ide-cd
# rmmod sg
# rmmod sr_mod
# rmmod ide-scsi
# rmmod scsi_mod
# rmmod cdrom
# }
# function inslp () {
# insmod parport
# insmod parport_pc io=0x3bc,0x378,0x278 irq=none,7,none
# insmod lp parport=0,1,2
# }
# (find-es "kernel" "scanner")
# function insscanner () {
# inslp
# insmod scsi_mod
# insmod sg
# insmod ppscsi
# insmod epst
# }
# alias fv='unzip -l'
alias ip2name='gethost -a -t addr'
alias name2ip='gethost -a -t name'
#export INX=200.240.18
#export MATINTA=139.82.27.1
#export SACI=139.82.27.51
#export SACI=$MATINTA
#export BOTO=139.82.27.42
#export MULA=139.82.27.44
#export TARDIS=139.82.27.31
#export NAUTILUS=200.224.100.240
#export NNTPSERVER=news.inx.com.br
#export FBOTO='ftp://edrx@'$SACI
#export FBOTO_H='ftp://edrx@'$SACI
#export FBOTO='ftp://boto.mat.puc-rio.br'
#export FBOTOPH='ftp://boto.mat.puc-rio.br/public_html'
#export AFBOTO="/edrx@$SACI:"
#export AFBOTO_H="/edrx@$SACI:/home/yara/edrx"
#export HBOTO='http://www.mat.puc-rio.br/~edrx'
#export AFUNIX1='/eduardoo@unix1:'
#export AFUNIX1_H='/eduardoo@unix1:/home/eduardoo'
# alias mylpr='lpr -h -Psafo'
# (find-fline "$AFBOTO")
# export PAGE=~/TCL/PAGE
# export PAGE2=~/TCL/PAGE2
# export USRC=/usr/src
# export LH=http://localhost
#export HAA=/big/deb20/debian/main/binary-all
#export HAI=/big/deb20/debian/main/binary-i386
#export HAMM=/big/deb20/debian
#export SLINKB1=/big/slinkb1
#export SLINKB2=/big/slinkb2
# export ELISP=/usr/share/emacs/19.34/lisp
# export PL5=/usr/lib/perl5
# «vt» (to ".vt")
# (find-angg "vtutil/vtutil.lua" "vcsatounix")
# (find-angg "vtutil/vtutil.lua" "e_scripts" "vcsatounix")
function vt () {
cat /dev/vcs$1 | expect -c '
set vtstr [read stdin 20000]
for {set nline 0; set offset 0} {$nline<50} {incr nline; incr offset 80} {
puts [string trimright [string range $vtstr $offset [expr $offset+79]]]
}'
}
# «hurd»
#export FSIDMB=ftp://ftp.debian.org/debian/dists/sid/main/binary-hurd-i386
#export SSIDMB=$S/ftp/ftp.debian.org/debian/dists/sid/main/binary-hurd-i386
#export FALPHASIDMB=ftp://alpha.gnu.org/pub/gnu/hurd/debian/dists/unstable/main/binary-hurd-i386
#export SALPHASIDMB=$S/ftp/alpha.gnu.org/pub/gnu/hurd/debian/dists/unstable/main/binary-hurd-i386
#
function realpaths () { for i in $*; do realpath $i; done }
# function dpkgihurd () {(
# A=($(realpaths $*))
# cd /gnu/
# for i ($A) ./dpkg-hurd -i $i
# )}
# # Install with one call to dpkg-hurd:
# function dpkgihurd1 () {(
# A=($(realpaths $*))
# cd /gnu/
# ./dpkg-hurd -i $A
# )}
# function dpkgihurd () {(
# A=($(realpaths $*))
# cd /gnu/
# for i ($A) \
# ./dpkg-hurd --unpack $i --force-depends --force-overwrite
# )}
# These are lua-4.0-isms, I think
# (find-es "lua" "loadtklua")
# (find-es "lua" "luasocket")
#alias mylua='lua ~/LUA/inc.lua'
#which dllua >& /dev/null && {
# alias mylua='dllua ~/LUA/inc.lua'
#}
#alias luae='mylua -e'
#alias mytklua='mylua -e "loadtklua()"'
#alias myluasock='mylua -e "loadluasocket()"'
# «lua» (to ".lua")
# (find-angg "LUA/lua50init.lua")
# (find-es "lua5" "install-5.1.2")
#
export LUA_INIT=@$HOME/LUA/lua50init.lua
# export LUASRC=$HOME/usrc/lua-5.0.2
export LUA50SRC=$HOME/usrc/lua-5.0.2
export LUA51SRC=$HOME/usrc/lua-5.1.2
export LUA51SRC=$HOME/usrc/lua-5.1.4
# «show2» (to ".show2")
# (find-show2-intro "2. Installation (on Debian)")
# (find-show2-intro "2. Installation (on Debian)" "SHOW2LATEXDIR")
export SHOW2LATEXDIR=$HOME/LATEX
# «swig» (to ".swig")
# (find-es "swig" "myswiglua")
# (find-es "swig" "swig-upstream")
# Usage: myswiglua C foo.so foo_wrap.so foo.c
# export SWIGSRC=$HOME/usrc/swig-1.3.29
# function myswiglua () {
# rm -fv $2 $3
# $SWIGSRC/preinst-swig -module $1 -lua $4 &&
# gcc -L $LUA50SRC/lib -llua -llualib \
# -isystem $LUA50SRC/include \
# -g -shared -o $2 $3 $4
# }
# (find-anggfile "vtutil4/Makefile")
# (find-vldifile "liblua50-dev.list")
# if [[ "$LUAINC" == "" && -d /usr/include/lua50 ]]; then
# export LUAINC=/usr/include/lua50
# fi
# export LFORTH=$HOME/LFORTH
# alias lua50=$HOME/tmp/lua-5.0-beta/bin/lua
# ln -sf ../tmp/lua-5.0-beta/bin/lua ~/bin/lua50
# «lua51e» (to ".lua51e")
# (find-fline "~/bin/" " lua")
function lua50e () { lua50 -e $1 /dev/null $*[2,-1] }
function lua51e () { lua51 -e $1 /dev/null $*[2,-1] }
# lua50e 'P(arg[1])' foo bar
# «makelua50» (to ".makelua50")
# (find-es "lua5" "build-simple")
# «make» (to ".make")
# (find-es "make" "makefile_toposort")
# (find-es "make" "makefile_addtrace")
function makefile_toposort () { makefile_getdeps | lua ~/LUA/toposort.lua }
function makefile_getdeps () {
perl -e 'undef $/; $_ = <>; s/\\\n//g; print' \
| grep -v '^[ ]*#' \
| perl -nle 'if (m/^[^\t][^#:=]*:([^=]|$)/) { print }'
}
function makefile_addtrace () {
perl -e 'undef $/; $_ = <>; s/\\\n//g; print' | \
perl -nle '
print;
if (m/^[^\t][^#:=]*:([^=]|$)/) {
$n++; printf "\t# Dbg %d/%d \$\@: \$^\n", $n, $n+$.
};
'
}
# «remote-accounts» (to ".remote-accounts")
# export SUCURI=sucuri.mat.puc-rio.br
#export DVALOIS=dvalois.no-ip.org
# export ANGG=angg.twu.net
alias eegpasswd='eeg4 -c "source $HOME/.passwds.tcl"'
# echo 'l $passwd(puc)' > $EEG; eegpasswd scp 2002h.tex edrx@$SUCURI/LATEX/
# «scp» (to ".scp")
# function scpsucuri () {
# expect -c "
# source $HOME/.passwds.tcl
# spawn scp $*
# interact -o -nobuffer {sword: } {send \$passwd(puc)\\\r}
# "
# }
# «save-input» (to ".save-input")
# (find-es "expect" "splitting_output_0")
function save-input () {
expect -c '
spawn -open [set out_file [open '$1' w]]
set out_spid $spawn_id
spawn '"$*[2,-1]"'
interact -output "$spawn_id $out_spid"
close $out_file
'
}
# (find-es "perl" "eval_in_regsub")
function expandctrls () {
perl -nle '
s/[\000-\037]/"^".chr(ord($&)+64)/eg; print
'
}
# «mydiff» (to ".mydiff")
# (find-node "(zsh)Alternate Forms For Complex Commands")
# (eev "cd /tmp/; echo '1\n2a\n3' > txt; echo '1\n2old\n3' > txt~; mydiff txt")
function mydiff () {
(echo patch -p0 $1 "<<'%%%'"
if [[ -e $1.orig ]] { diff $1.orig $1 } else { diff $1~ $1 }
echo %%%
) | tee ~/o
}
# «makeapacheindex» (to ".makeapacheindex")
# (find-es "page" "makeapacheindex")
# (eev "cd /tmp/; ls -laF | makeapacheindex | tee test.html")
# Superseded by:
# (to "makepageindexhtmls")
#function makeapacheindex () {
# col -bx | perl -e '
# printf "<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n";
# printf "<html><head><title></title></head><body>\n";
# printf "<!-- (find-angg \".zshrc\" \"makeapacheindex\")\n -->\n";
# printf "<pre>\n";
# while (<STDIN>) {
# if (m/^(.{56})(.+?)([\*\=\@\|]| -> .*)?\n/) {
# # printf "%s[%s]%s\n", $1, $2, $3
# printf "%s<a href=\"%s\">%s</a>%s\n", $1, $2, $2, $3
# } # else {
# # printf "??: %s", $_
# # }
# }
# printf "</pre></body></html>\n";
# '
#}
# «X1» (to ".X1")
# For running a second X server on panda, chrooting to Debian
function X1init () {
xinit -- $(w XFree86) :1.0 &
}
function X1mkauth () {
xauth -v generate :1.0 .
xauth -v nextract /tmp/auth :1.0
cat /tmp/auth
chmod 666 /tmp/auth
}
function X1auth () {
export DISPLAY=:1.0
xauth -v nmerge /tmp/auth
}
# «showperms» (to ".showperms")
# (find-man "1 chmod" "rwxXstugo")
# (find-man "2 chmod")
# (find-man "2 stat")
function showperms () {
echo chmod -v $1 --reference=$1
chmod -v $1 --reference=$1
}
alias desliga='shutdown -h now'
alias desligar='shutdown -h now'
# «emacs-cvs» (to ".emacs-cvs")
# (find-angg ".emacs" "emacs-cvs")
# (find-es "emacs" "emacs-from-cvs")
alias emacs-cvs="~/bigsrc/emacs/src/emacs"
# «dout» (to ".dout")
# (find-angg ".emacs" "dout")
# (find-angg "LATEX/dout/Makefile" "doutfont")
# (find-angg "LATEX/dout/doutfont.lua")
alias dout='cd ~/LATEX/dout/; make doutfont.8.setfont'
# «gunzip-nd» (to ".gunzip-nd")
function gunzip-nd () {(
F=$(basename $1 .gz)
if [[ -e $F ]]; then
echo "Not overwriting $F"
else
zcat $1 > $F
touch -r $1 $F
fi
)}
# «partitionids» (to ".partitionids")
function partitionids_ () {
for i in $*; do
printf "%-6s %s\n" $i "$(<$i/.id)"
done
}
PARTITIONS=(/ /hdd2 /hdd3 /hdd5 /hdd6 /hdd7 /hdb1 /hdb2)
alias partitionids='partitionids_ $PARTITIONS'
# «filedevice» (to ".filedevice")
# (find-node "(coreutils)stat invocation" "%d - Device number in decimal")
# (find-node "(zsh)Shell Builtin Commands" "printf FORMAT [ ARG ... ]")
# (find-node "(coreutils)Sorting the output")
# (find-zsh0 "filedevice $S/http/")
# (eev "filedevice ~; filedevice /; filedevice /hdb2")
#
function filedevice () {(
D=$(stat -c %d $1)
DHI=$[($D&-256)/256]
DLO=$[$D&255]
'ls' -lU /dev/* | grep ^b | awk '$5=="'$DHI,'"&&$6=="'$DLO'" {print}'
)}
# «ln-sf-safe» (to ".ln-sf-safe")
# (find-man "ln")
# (find-node "(zsh)Conditional Expressions")
# ln-sf-safe target (<-) source
# (find-es "float" "ln-sf-safe")
function ln-sf-safe () {
if [[ -h $2 ]]; then rm -v $2; fi
if [[ ! -a $2 ]]; then
ln -s $1 $2
else
echo "Not a symlink: $2"; false
fi
}
# (find-fline "/usr/share/doc/zsh/ChangeLog-3.1.gz" "whence/where/which -w")
if [[ $ZSH_VERSION > 3.1.5 ]]; then
function whence-type () { whence -w $1 | cut '-d ' -f 2 }
function unfunction-safe () {
if [[ $(whence-type $1) == function ]]; then
unfunction $1
fi
}
unfunction-safe agrep
if [[ $(whence-type agrep) != command ]]; then
function agrep () { grep $* }
fi
fi
# alias edrxmozilla='sudo -u edrx mozilla'
# «netbotanic» (to ".netbotanic")
# (find-fline "/etc/hosts")
# (find-fline "/etc/network/interfaces")
# (find-fline "/etc/resolv.conf")
#
#function netbotanic-up () {
# insmod mii
# insmod 8139too
# ifconfig eth0 10.127.56.1 netmask 255.255.255.0
# route add default gw 10.127.56.254
# cat > /etc/resolv.conf <<'%%%'
#nameserver 200.184.42.69
#nameserver 200.184.42.67
#%%%
#}
#function netbotanic-down () {
# ifconfig eth0 down
# rmmod 8139too
# rmmod mii
#}
# Tests:
# «to-netbotanic-test» (find-angg ".emacs" "to-netbotanic-test")
# (eev "netbotanic-down; ifconfig; route -n")
# (eev "netbotanic-up; ifconfig; route -n")
# (eev "ifconfig; route -n; ping 10.127.56.1")
# (eev "ifconfig; route -n; ping -c 6 10.127.56.254")
# (eev "ifconfig; route -n; ping -c 6 200.184.42.69")
# (eev "ifconfig; route -n; ping -c 6 200.184.42.67")
#
# (eev "ifconfig; route -n; ping 10.127.56.254")
# (eev "ifconfig; route -n; ping 200.184.42.69")
# (eev "ifconfig; route -n; ping 200.184.42.67")
#
# Netbotanic/Moebius 2540-5170 -> 2294-3772
# (find-progoutput "ifconfig; route -n")
# # For linux-2.4
# function crystal-up () {
# insmod soundcore
# insmod sound
# insmod v_midi
# insmod mpu401
# insmod ac97_codec
# insmod cs46xx
# }
#
# function prep-persephone () {(
# set -v
# iso
# loadkeys emacs2
# netbotanic-up
# crystal-up
# )}
# «prep-home-cdd» (to ".prep-home-cdd")
function prep-home-cdd () {(
set -v
mkdir ~/tmp ~/lib ~/usrc ~/bigsrc ~/info/
ln -s .zshrc.local.cdd .zshrc.local
ln -s .xinitrc.cdd .xinitrc
)
rezshrc
}
# «prep-vt» (to ".prep-vt")
# «prep-X» (to ".prep-X")
# «a» (to ".a")
function prep-vt () {
echo iso; iso
echo loadkeys emacs2; loadkeys emacs2
}
function prep-X () {
echo xsetroot -solid black; xsetroot -solid black
# echo fvwm-replace 1; fvwm-replace 1
echo fvwm-replace; fvwm-replace
echo quickkeys-X; quickkeys-X
}
# «git-show-my» (to ".git-show-my")
# (find-es "git" "git-show-format")
git-show-my () {
git show -s --date=format:'%Y-%m-%d %k:%M:%S' --format='%h %ad %s' $*
}
# «emacs28_» (to ".emacs28_")
# (find-es "git" "git-bisect-by-hand")
# (find-fline "~/bigsrc/" "emacs28")
# (find-fline "~/bigsrc/" "emacs28_")
#
# emacs25_0 () { ~/bigsrc/emacs27/src/emacs -T emacs25_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs26_0 () { ~/bigsrc/emacs27/src/emacs -T emacs26_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs27_0 () { ~/bigsrc/emacs27/src/emacs -T emacs27_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs28_0 () { ~/bigsrc/emacs28/src/emacs -T emacs28_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs28_0 () { ~edrx/bigsrc/emacs28/src/emacs -T emacs28_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs29_0 () { ~edrx/bigsrc/emacs29/src/emacs -T emacs29_0 -fg bisque -bg black -fn $EMACSFONT $* }
# emacs28_ () {
# ~/bigsrc/emacs28_$1/src/emacs -T emacs28_$1 -fg bisque -bg black -fn $EMACSFONT $*[2,-1]
# }
# «ae» (to ".ae")
# (find-es "zsh" "tty-var")
# (find-angg "bin/emacs-default")
# (find-angg "bin/emacs-default-x")
# (find-angg ".fvwm/.fvwm2rc" "style-bare")
# (find-sh "xlsfonts")
# (find-sh "xlsfonts | grep -v ^- | sort")
# (find-angg "bin/emacs-default")
# function emacs-default () {
# if [[ -e ~/bigsrc/emacs/src/emacs ]]
# then ~/bigsrc/emacs/src/emacs $*
# else emacs $*
# fi
# }
export EMACSFONT=6x13
export EMACSFGBGFONT=(-fg bisque -bg black -fn $EMACSFONT)
export EMACSFGBGFONT0=(-fg black -bg white)
export EMACS25DIR=$HOME/bigsrc/emacs25; export EMACS25=$EMACS25DIR/src/emacs
export EMACS26DIR=$HOME/bigsrc/emacs26; export EMACS26=$EMACS26DIR/src/emacs
export EMACS27DIR=$HOME/bigsrc/emacs27; export EMACS27=$EMACS27DIR/src/emacs
export EMACS28DIR=$HOME/bigsrc/emacs28; export EMACS28=$EMACS28DIR/src/emacs
export EMACS29DIR=$HOME/bigsrc/emacs29; export EMACS29=$EMACS29DIR/src/emacs
export EMACS30DIR=$HOME/bigsrc/emacs30; export EMACS30=$EMACS30DIR/src/emacs
export EMACS31DIR=$HOME/bigsrc/emacs31; export EMACS31=$EMACS31DIR/src/emacs
function ae25 () { $EMACS25 $EMACSFGBGFONT -T emacs25 $* ~/TODO }
function ae26 () { $EMACS26 $EMACSFGBGFONT -T emacs26 $* ~/TODO }
function ae27 () { $EMACS27 $EMACSFGBGFONT -T emacs27 $* ~/TODO }
function ae28 () { $EMACS28 $EMACSFGBGFONT -T emacs28 $* ~/TODO }
function ae29 () { $EMACS29 $EMACSFGBGFONT -T emacs29 $* ~/TODO }
function ae30 () { $EMACS30 $EMACSFGBGFONT -T emacs30 $* ~/TODO }
function ae31 () { $EMACS31 $EMACSFGBGFONT -T emacs31 $* ~/TODO }
export EMACS282DIR=$HOME/bigsrc/emacs28.2; export EMACS282=$EMACS282DIR/src/emacs
export EMACS283DIR=$HOME/bigsrc/emacs28.3; export EMACS283=$EMACS283DIR/src/emacs
function ae282 () { $EMACS282 $EMACSFGBGFONT -T emacs28.2 $* ~/TODO }
function ae283 () { $EMACS283 $EMACSFGBGFONT -T emacs28.3 $* ~/TODO }
# export EMACSARGSX0="$EMACSFGBGFONT -geometry +0+0"
# export EMACSARGSX00="$EMACSFGBGFONT -T emacs_bare -geometry 167x49+0+0"
# E0=(-fg bisque -bg black -fn $EMACSFONT -T emacs_bare -geometry 167x49+0+0)
# «aeg» (to ".aeg")
# «aegit» (to ".aegit")
# (find-es "emacs" "several-emacs-versions")
# function ae () { emacs-default1 $* ~/TODO }
# function ae () { emacs-default1 $* ${TODOFILE:-$HOME/TODO} }
#
# function ae () { ae26 $* }
# function aed () { emacs -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae24 () { emacs24 -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae25 () { emacs25 -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae25 () { ~/bigsrc/emacs25/src/emacs -T emacs25 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae26 () { ~/bigsrc/emacs26/src/emacs -T emacs26 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae27 () { ~/bigsrc/emacs27/src/emacs -T emacs27 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae28 () { ~/bigsrc/emacs28/src/emacs -T emacs28 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae29 () { ~/bigsrc/emacs29/src/emacs -T emacs29 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae30 () { ~/bigsrc/emacs30/src/emacs -T emacs30 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function ae31 () { ~/bigsrc/emacs31/src/emacs -T emacs31 \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
# function aeg () { ~/bigsrc/emacs/src/emacs -T emacs-git \
# -fg bisque -bg black -fn $EMACSFONT $* ~/TODO }
#
# function ae28nw () { ~/bigsrc/emacs28/src/emacs -T emacs28 $* ~/TODO }
# «emacs-default» (to ".emacs-default")
function emacs-default-X () {
emacs-default -fg bisque -bg black -fn ${EMACSFONT:-fixed} $*
}
function emacs-default-X0 () {
emacs-default-X -geometry +0+0 $*
}
function emacs-default1 () {
case $TERM in
xterm*) emacs-default-X -T emacs_bare -geometry +0+0 $* &;;
# was -geometry +120+0 $* &;;
*) emacs-default -nw $*
esac
}
function aet () { emacs-default -nw $* ${TODOFILE:-$HOME/TODO} }
function ae0 () { emacs-default -Q $* ${TODOFILE:-$HOME/TODO} }
# (find-enode "Initial Options" "`--quick'")
# «a_old» (to ".a_old")
# New version: (to "a")
# (find-elnode "Multiple Displays" "`HOST:SERVER.SCREEN'")
# function a () {
# if [[ $TERM == "linux" && $TTY == "/dev/tty1" ]]; then
# prep-vt; ae
# elif [[ $TERM == "linux" && $TTY == "/dev/tty5" ]]; then
# xinit -- :1.0 &
# elif [[ $TERM == "linux" && $TTY == "/dev/tty10" ]]; then
# prep-vt; xinit &
# elif [[ $TERM == "linux" && $TTY == "/dev/tty11" ]]; then
# prep-vt; xinit -- :1.0 &
# elif [[ $TERM == "xterm" ]]; then
# # prep-X; echo "# To invoke emacs run \"ae\""
# fvwm &; google-chrome &; ax00 &
# else
# echo "a: TERM=$TERM and TTY=$TTY, don't know what to do"
# fi
# }
# «ax» (to ".ax")
# «ax0» (to ".ax0")
# «x00» (to ".x00")
# "ax0" is like "ax", but for lenny with a display manager.
# "ax00" is for offline laptops, where starting firefox does not always make sense.
# "x00" is like "ax00", but without "a".
# (find-es "x" "X-kbdrate")
# (find-es "x" "xsetroot")
# (find-angg ".Xdefaults")
# (find-es "x" "setxkbmap")
function ax () { a; firefox &; ae }
function ax0 () { xrdb -load ~/.Xdefaults; xset r rate 250 30; xsetroot -solid black; firefox &; ae }
function ax00 () { xrdb -load ~/.Xdefaults; xset r rate 250 30; xsetroot -solid black; ae }
function x00 () {
xrdb -load ~/.Xdefaults
xset r rate 250 20
xsetroot -solid black
setxkbmap us
}
# «fvwm» (to ".fvwm")
# (find-man "fvwm" "-f config-file")
# «fvwm-replace» (to ".fvwm-replace")
# (find-fline "~/.fvwm/.fvwm2rc")
# (find-fline "~/.fvwm/.fvwm2rc0")
# (find-fline "~/.fvwm/.fvwm2rc1")
function fvwm-replace () {
fvwm -replace -f ~/.fvwm/.fvwm2rc$* &
}
# «setxtermtitle» (to ".setxtermtitle")
# (find-udfile "xspecs/ctlseqs.txt.gz" "Change Window Title to Pt")
# (find-udfile "xtermcontrol/ctlseqs.txt.gz" "Change Window Title to Pt")
# (find-udfile "xterm/xterm.faq.gz" "read the title" "stty")
function setxtermtitle () {
echo -ne "\033]2;$*\007"
}
# (eev "setxtermtitle la la la foo; read; setxtermtitle xterm")
# (eev "setxtermtitle la la la foo; read; setxtermtitle login")
# «makecdrdaotoc» (to ".makecdrdaotoc")
# (find-es "cdrom" "jack")
# (find-angg ".emacs" "date")
function makecdrdaotoc () {
echo '// (find-man "1 cdrdao" "TOC FILES")'
echo 'CD_DA'
echo 'CATALOG "'$1'"'
shift
for i in $*; do
echo 'TRACK AUDIO'
echo FILE \"$i\" 0
done
}
# «showcdrdaotoc» (to ".showcdrdaotoc")
function showcdrdaotracks () {
(i=1; for NAME in $*; do echo "$i - $NAME"; i=$[$i+1]; done)
}
# Example:
# (find-zsh "A=(track_1 second third); makecdrdaotoc 2003012055555 $A")
# (find-zsh "A=(track_1 second third); showcdrdaotracks $A")
# «vlca» (to ".vlca")
# (find-es "dvd" "vlc")
function vlca () { vlc --alsadev hw:1,0 $* }
# «myaplay1» (to ".myaplay1")
function realtime () { sudo nice -n -40 sudo -u $USERNAME $* }
function myaplay1 () { realtime aplay -d hw:1,0 $* }
function myaplay1 () { realtime aplay -D hw:1,0 $* }
function myaplay1 () { realtime alsaplayer -i text $* }
function myaplay1 () { realtime alsaplayer -i text -d hw:1,0 $* }
function mymplay1 () { realtime mplayer -ao alsa:device=hw=1.0 $* }
# function myaplay1 () { realtime aplay -d hw:1,0 $* }
function myaplay1 () { realtime aplay -D hw:1,0 $* }
# function myaplay1 () { realtime alsaplayer -i text -d hw:0,0 $* }
function myaplay1 () { realtime alsaplayer -i text -d hw:1,0 $* }
function myaplay1 () { realtime alsaplayer -i text $* }
alias rt=realtime
# «myplay» (to ".myplay")
# «p» (to ".p")
# (find-bashnode "Conditional Constructs" "case $ANIMAL in")
function myplay () { for i in $*; do myplay1 $i; done }
# (find-es "alsa")
function myplay1 () {
case $1 in
# *.[Mm][Pp]3) realtime mpg123 $*[2,-1] $1;;
# *.[Mm][Pp]3) realtime mplayer $*[2,-1] $1;;
# *.ogg) realtime ogg123 $*[2,-1] $1;;
# *.wav) echo $1; realtime bplay $*[2,-1] $1;;
*.[Mm][Pp]3) myaplay1 $*[2,-1] $1;;
*.ogg) myaplay1 $*[2,-1] $1;;
*.wav) myaplay1 $*[2,-1] $1;;
*.wma) mymplay1 $*[2,-1] $1;;
*.m4a) mymplay1 $*[2,-1] $1;;
*) echo "not mp3/ogg/wav/wma"
esac
}
# (find-node "(coreutils)nice invocation")
# function myplaynice () { MYPLAYNICE=(sudo nice -n -19) myplay $* }
#alias p=myplay
function p () { myplay $* }
# «plog» (to ".plog")
# (find-efunction 'date)
# (find-efunction 'date-as-string)
# (find-efunction 'date-as-string "(eq arg 2)")
# (date-as-string 2)
# (find-sh0 "date '+%Y%b%d %k:%M'")
# (find-sh0 "date '+%Y%b%d %k:%M:%S'")
# (find-eevfile "eev-rctool" "function absolute ()")
# (find-angg ".zshrc" "p" "function myplay ")
# (find-angg ".zshrc" "p" "function myplay1 ")
function absolute () { case $1 in /*) echo $1;; *) echo $PWD/$1;; esac; }
function semiabsolute () { absolute $1 | sed "s,^$HOME,~," }
function pfilename () { semiabsolute $1 }
function pdate () { date '+%Y%b%d %k:%M:%S' } ;# echo date
function p1echo () { echo "p $(pfilename $1) ;# $(pdate)" }
function p1log () { p1echo $1 | tee -a ~/.plog }
function p1 () { myplay1 $1 } ;# just play
# function p1 () { p1log $1; myplay1 $1 } ;# log and play
function p () { for i in $*; do p1 $i; done }
function plogtail () { tail ~/.plog }
function plogfollow () { tail -f ~/.plog }
# «silentwav» (to ".silentwav")
# Example of usage:
# (eev "silentwav 200 /tmp/20s-of-silence.wav")
# (eev "time bplay /tmp/20s-of-silence.wav")
# Note that the duration is specified in 1/10s of a second.
#
function silentwav () {
dd if=/dev/zero bs=$[4410*2*2] count=$1 \
| sox -t .raw -r 44100 -s -w -c 2 - $2
}
# «ptowav» (to ".ptowav")
# (find-man "1 mpg321" "-g N, --gain N")
# "Play to .wav" - produce a .wav instead of playing an audio file
function ptowav () {
case $2 in
*.wav) ln -s $2 $1;;
*.[Mm][Pp]3) mpg321 -w $1 $2;;
*.m4a) mplayer -ao pcm $2; mv -iv audiodump.wav $1;;
*) echo "Usage: ptowav target.wav source.{wav,mp3,m4a}"
esac
}
export LAB=$HOME/lab
alias acse='apt-cache search'
alias acsh='apt-cache show'
# «chroot-sarge» (to ".chroot-sarge")
# (find-es "livecd")
#SARGESHROOT=(sudo chroot /sarge-root /bin/sh)
#SARGESHEDRX=(sudo chroot /sarge-root /usr/bin/sudo -u edrx /bin/sh)
#SARGEZSHROOT=(sudo chroot /sarge-root /home/edrx/run-zsh)
#SARGEZSHEDRX=(sudo chroot /sarge-root /usr/bin/sudo -u edrx /home/edrx/run-zsh)
# «mywhoami» (to ".mywhoami")
# (find-node "(libc)Program Basics")
function mywhoami () {
echo "UID=$UID EUID=$EUID"
echo "USERNAME=$USERNAME LOGNAME=$LOGNAME"
echo "GID=$GID EGID=$EGID"
echo "groups=$(groups | tr ' ' ',')"
echo "HOME=$HOME PATH=$PATH"
}
# «testmail» (to ".testmail")
# (find-es "mail" "testmail")
function testmail () {(
DATE=$(date +%R:%S)
USER1=$1
USER2=$2
STR="($DATE) $USER1 -> $USER2"
echo $STR
echo $STR | sudo -u $USER1 mail $*[3,-1] -s $STR $USER2
)}
# «dotxpm» (to ".dotxpm")
# (find-es "x" "xpm")
function dotxpm () {
echo '/* XPM */'
echo 'static char * myfig1x1[] = {'
echo '"1 1 1 1",'
echo '". c '$1'",'
echo '"."};'
}
# «autopasswd» (to ".autopasswd")
# «autopasswdz» (to ".autopasswdz")
# 2019mar10: now "autopasswd" is the script in ~/EXPECT/,
# and "autopasswdz" is the zsh shell function.
# (find-angg "EXPECT/autopasswd")
# (find-es "expect" "passwords")
# (find-expcommand "interact" " -nobuffer ")
# (find-expcommand "interact" " exact ")
# (find-expcommand "interact" " -o ")
# (find-expcommand "interact" " -re ")
# (find-expcommand "expect [[-opts]")
# (find-angg ".passwds.tcl-")
#function autopasswdz () {
#expect =(<<'%%%'
# source ~/.passwds.tcl
# proc sendpasswd {passwd} { sleep 0.5; send $passwd\n }
# set SUCURI sucuri.mat.puc-rio.br
# set TWU angg.twu.net
# eval spawn $argv
# interact {
# -o -nobuffer "edrx@${SUCURI}'s password: " { sendpasswd $passwd(puc) }
# -nobuffer "edrx@${TWU}'s password: " { sendpasswd $passwd(twu) }
# -nobuffer "edrx@parati's password: " { sendpasswd $passwd(parati) }
# "\033\[H\033\[JConnection to sucuri.mat.puc-rio.br closed." {}
# "\033\[H\033\[JConnection to angg.twu.net closed." {}
# "\033\[H\033\[JConnection to parati closed." {}
# }
#%%%
#) $*
#}
#alias Sucuri='autopasswd ssh -C -l edrx sucuri.mat.puc-rio.br'
alias Twu='autopasswd ssh -C edrx@angg.twu.net'
# «pucmailget» (to ".pucmailget")
#function pucmailget () {
# cd ~/MAIL/
# autopasswd \
# rsync -avz -e ssh \
# edrx@${SUCURI}:/var/spool/mail/edrx ~/MAIL/current.pucmail
#}
#function pucmailread () {
# cd ~/MAIL
# mutt -R -f current.pucmail
#}
# (eev "autopasswd ssh -C -l edrx sucuri.mat.puc-rio.br")
# (eev "autopasswd ssh -C edrx@angg.twu.net")
# «R» (to ".R")
# (find-angg "run-zsh")
# alias R="sudo ~/run-zsh"
alias R="PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin sudo ~/run-zsh"
# «umlkill» (to ".umlkill")
function umlkill () {
# sudo kill $(cat ~/.uml/*/pid)
sudo killall -9 linux
sudo rm -Rfv ~/.uml/*
}
# «cddbtrackname» (to ".cddbtrackname")
# (find-zsh0 "echo '/foo/bar.plic.ploc' | sed-extension")
# (find-zsh0 "echo 'TTITLE3=Paint It, Black' | cddbtrackname 04 && echo ok")
# (find-zsh0 "echo 'TTITLE3=Paint It, Black' | cddbtrackname 05 || echo not ok")
# (find-zsh0 "echo \"TTITLE18=(I Can't Get No) S\"| cddbtrackfilename tr19.ogg")
#
alias sed-extension="sed 's/^.*\(\.[^./]*$\)/\1/'"
function cddbtrackname () {
lua50 =(<<<'
N = tonumber(arg[1])
for li in io.lines() do
local _, __, n, str = string.find(li, "^TTITLE([0-9]*)=(.*)")
if _ and N == n+1 then print(str); os.exit(0) end
end
os.exit(1)
') $1
}
function cddbtrackfilename () {(
n=$(echo $1 | tr -cd 0-9)
s=$(cddbtrackname $n | tr "\047/ " __)
ext=$(echo $1 | sed-extension)
echo $n-$s$ext
)}
# http://www.freedb.org/freedb/soundtrack/bf0cdb0e
# (find-zsh "cddb-rename-echo $S/http/www.freedb.org/freedb/soundtrack/bf0cdb0e track{1,2,3}.wav")
function cddb-rename-echo () {
for i in $*[2,-1]; do
echo "mv -iv $i $(cddbtrackfilename $i < $1)"
done
}
function cddb-rename-mv () {
for i in $*[2,-1]; do
mv -iv $i $(cddbtrackfilename $i < $1)
done
}
function setlogname () {
export LOGNAME=$1
export MAIL=/var/mail/$1
}
# «eev-current» (to ".eev-current")
# «to-eev-current» (find-angg ".emacs" "to-eev-current")
# (find-angg ".emacs" "eev-current-make-htmls")
# (find-eevex "tools.el" "make-eev-htmls")
#
# (progn (load-library (ee-eevexfile "tools.el")) (make-eev-htmls))
# (eev "eev-current-make; eev-current-upload")
#
function eev-current-make () {
cd ~/eev-current/
(TZ=GMT date; date) > VERSION
tar -cvzf ~/eev-current.tar.gz $(cat .files)
laf ~/eev-current.tar.gz
}
# «eev-current-upload» (to ".eev-current-upload")
function eev-current-upload () {
eev-current-make
Scp ~/eev-current.tar.gz edrx@angg.twu.net:public_html/
autopasswd rsh edrx@angg.twu.net '
cd ~/public_html
cp -v eev-current.tar.gz ..
cp -v eev-current.tar.gz ../slow_html/
ls -lAF eev-current.tar.gz
'
}
# «upload» (to ".upload")
# (find-angg ".emacs" "upload")
function absolute () { case $1 in /*) echo $1;; *) echo $PWD/$1;; esac; }
function striphome () { absolute $1 | sed "s,^$HOME/,,"; }
function upload_command () {(
FULLSTEM=$(striphome $1)
DIRSTEM=$(dirname $FULLSTEM)
FILESTEM=$(basename $FULLSTEM)
echo "\
cd ~/public_html/$DIRSTEM/ &&
Scp $FILESTEM $FILESTEM.html \\
edrx@angg.twu.net:public_html/$DIRSTEM/"
echo "# http://angg.twu.net/$FULLSTEM"
echo "# http://angg.twu.net/$FULLSTEM.html"
)}
function upload () {(
makeP
for i in $*; do
COMMAND="$(upload_command $1)"
echo -n $COMMAND
eval $COMMAND
done
)}
# (find-zsh0 "upload_command ~/eev-current/README")
# (find-zsh0 "upload_command ~/eev-current/examples/svn.e")
# (find-node "(screen)Detach")
# (find-zsh "xterm -h" "size (in characters)")
#
alias xterm-80x50-screen='xterm -geometry 80x50 -e screen'
# «prep-apti» (to ".prep-apti")
#
function prep-apti-eev-full () {
apti emacs21 emacs21-el elisp-manual emacs-lisp-intro w3m-el zsh expect
}
function prep-apti-lua () {
apti liblua50 liblualib50 libtolua0 lua50 luasocket \
liblua50-dev liblualib50-dev libtolua-dev lua50-doc luasocket-dev
}
function prep-apti-etc () {
apti less console-tools kbd-compat gpm zgv strace grep-dctrl \
lsof netcat ltrace nmap build-essential
}
function prep-apti-autodetect () {
apti read-edid hotplug discover mdetect kudzu
}
function prep-apti-X () {
apti xdebconfigurator x-window-system fvwm xzoom tkdiff
}
function prep-apti-sound () {
apti bplay mpg321 vorbis-tools
}
function prep-apti-dict () {
apti dict dictd dict-gcide dict-wn dict-jargon
# apti dict-freedict-eng-por dict-vera
}
function prep-apti-dev-doc () {
apti glibc-doc bash-doc zsh-doc grub-doc
}
function prep-apti-dev-debian () {
apti apt-howto-en \
debian-installer-manual \
debian-policy \
debian-reference-en \
developers-reference \
doc-debian \
libapt-pkg-doc \
maint-guide \
quick-reference-en
}
function prep-apti-all () {
prep-apti-eev-full
prep-apti-lua
prep-apti-autodetect
prep-apti-etc
prep-apti-X
prep-apti-sound
prep-apti-dict
prep-apti-dev-doc
prep-apti-dev-debian
}
# These are not included in prep-apti-all
function prep-apti-extras () {
apti tetex-base tetex-bin tetex-doc tetex-extra tetex-src \
ssh rsync cvs \
gv a2ps gimp imagemagick mozilla-firefox xzgv unclutter \
tcl8.4-dev tcl8.4-doc tk8.4-dev tk8.4-doc tclreadline libtk-img \
cdparanoia cdrdao cdrecord \
debootstrap
}
function prep-apti-emulation () {
apti qemu user-mode-linux user-mode-linux-doc uml-utilities
}
# «prep-apti-builddeps-emacs» (to ".prep-apti-builddeps-emacs")
# (find-es "emacs" "emacs-from-cvs")
# http://ftp.debian.org/debian/pool/main/e/emacs21/emacs21_21.4a+1-3.dsc
function prep-apti-builddeps-emacs () {
apti cvs mailx libncurses5-dev texinfo liblockfile-dev libungif4-dev \
libtiff4-dev libtiff-dev xaw3dg-dev libpng3-dev libjpeg62-dev \
autotools-dev dpkg-dev quilt debhelper libxaw7-dev sharutils
}
function prep-apti-builddeps-lua () {
apti build-essential libreadline5-dev
}
# «prep-X-reconfigure» (to ".prep-X-reconfigure")
# (find-es "conf")
#
function prep-X-reconfigure () {
# dpkg-reconfigure xserver-xfree86
dpkg-reconfigure xserver-xorg
}
# «prep-X-nodm» (to ".prep-X-nodm")
# (find-apt-answer "nodm?")
# update-rc.d -f xdm remove
# (find-fline "/etc/init.d/xdm" "Not starting X display manager (xdm)")
function prep-X-nodm () {
echo false > /etc/X11/default-display-manager
}
# (find-es "emacs" "erc")
# http://erc.sourceforge.net/snaps/
# http://erc.sourceforge.net/snaps/erc-2004-12-05.tar.gz
function prep-erc () {
if [[ ! -e $S/http/erc.sourceforge.net/snaps/erc-2004-12-05.tar.gz ]]; then
psne http://erc.sourceforge.net/snaps/erc-2004-12-05.tar.gz
fi
rm -Rfv ~/usrc/erc/
tar -C ~/usrc/ -xvzf $S/http/erc.sourceforge.net/snaps/erc-2004-12-05.tar.gz
cd ~/usrc/erc/
make |& tee om
}
# «prep-guest-mount» (to ".prep-guest-mount")
# (find-fline "/etc/fstab" "\n# /guest")
function prep-guest-mount () {
mount /guest
mount /guest/proc
mount /guest/sys
mount /guest/dev/pts
mount /guest/dev/shm
}
function prep-guest-umount () {
umount /guest/dev/shm
umount /guest/dev/pts
umount /guest/sys
umount /guest/proc
umount /guest
}
function aumix-vol () { sudo aumix -v $1 -w $1 }
# «aa» (to ".aa")
#function aa () {
# sudo ifconfig lo 127.0.0.1
# sudo route add -host 127.0.0.1 lo
# sudo modprobe snd_pcm_oss
# sudo chmod 4755 /sbin/kbdrate
# sudo chmod 666 /dev/fd0
# sudo chmod 666 /dev/lp0
# sudo modprobe -r apm
# sudo modprobe apm power-off=1
# # (find-sh "ls -lAF /dev/ | grep audio")
# sudo chmod 666 adsp audio dsp mixer rtc
# sudo aumix -v 90 -w 90
# sudo modprobe ide-cd ;# for linux 2.6
#}
# (find-es "sound" "alsaconf")
#function aa () {
# sudo alsaconf
# sudo alsactl store
# # For persephone (for aumix):
# sudo chmod 777 /dev/.static
# sudo rm -fv /dev/sound && sudo ln -sf .static/dev /dev/sound
# sudo cp -sv /dev/.static/dev/dsp /dev/
# sudo aumix -v 97 -w 98
# sudo aumix -v query
# sudo aumix -w query
#}
# «ASROOT» (to ".ASROOT")
# For tramp: (find-es "emacs" "tramp")
export ASROOT="/sudo:root@localhost:"
# (find-es "mail" "mutt-accents")
#function mymutt () {
# LANG=en_US LANGUAGE=en_US LC_ALL=en_US mutt $*
#}
#function mymutt () {
# LANG=en_US.ISO-8859-1 LANGUAGE=en_US.ISO-8859-1 LC_ALL=en_US.ISO-8859-1 \
# mutt $*
#}
# «intermail» (to ".intermail")
# (find-angg ".emacs" "intermail")
# (find-angg "bin/intermail")
function intermailfiles () {
for i in $*; do echo $i.args; echo $i.input; done
}
function intermailupload () {
cd ~/INTERMAIL/; Scp $(intermailfiles $*) edrx@${SUCURI}:INTERMAIL/
}
function intermailrealsend () {
cd ~/INTERMAIL/ && \
for i in $*; do
echo "Running: sendmail $(cat $i.args) < $i.input"
sendmail $(cat $i.args) < $i.input
done
}
function mycd () { mkdir -p $1; cd $1 }
# «mymkdircd» (to ".mymkdircd")
# Note the "exit"; this function is meant to be used in find-zsh0
# (find-zsh0 "mymkdircd /tmp/shots/; import -window root $(myincr n).png")
# (find-fline "/tmp/shots/")
function mymkdircd () {
mkdir -p $1
cd $1 || (echo "Not a usable directory: $1"; exit 1)
}
# «myincr» (to ".myincr")
# (find-angg "bin/Xscreenshot")
function myincr () {
if [[ ! -e $1 ]]; then echo 0 > $1; fi
echo $[$(< $1)+1] | tee $1
}
# «ncget» (to ".ncget")
# «ncsend» (to ".ncsend")
# REMOTE=24.60.246.134
#REMOTE=24.60.246.134
#NCPORT=1234
#function ncget () {
# mkdir -p /tmp/nc/
# cd /tmp/nc/
# netcat -l -p $NCPORT > $(myincr n).tgz
# tar -tvzf $(cat n).tgz
# echo -n " "; ls -l $PWD/$(cat n).tgz
#}
#function ncsend () {
# tar -cvf - $* | gzip -c9 | netcat -q 0 ${REMOTE:-localhost} $NCPORT
#}
# A demo:
# (eechannel-xterm "A")
# (eechannel-xterm "B")
# (eechannel "A" "ncget\r")
# (eechannel "B" "cd ~/elisp; REMOTE='' ncsend tron.el tron.el.png\r")
function uploadtoworkshop () {
Scp $1 edrx@angg.twu.net:public_html/workshop/$(basename $1)
echo http://angg.twu.net/workshop/$(basename $1)
}
# «myip-ppp0» (to ".myip-ppp0")
# (find-angg ".emacs" "myip")
# (find-zsh "ifconfig ppp0; myip-ppp0")
#
function myip-ppp0 () {
ifconfig ppp0 | awk 'NR==2' | tr : ' ' | awk '{print $3}'
}
# Then I can do "netcat -l -p 1234 > /tmp/file" on my machine
# and someone else can pipe a file through this:
# (find-zsh "echo \"| netcat $(myip-ppp0) 1234\"")
# For qemu
# example: echo foo | toguest
#function toguest () { nc -q 0 172.20.0.2 1234 }
#function fromguest () { nc -l -p 1234 }
#export AMULE=~/usrc/aMule-2.0.0rc8/src/amule
#export AINCOMING=~/.aMule/Incoming
#export ATEMP=~/.aMule/Temp/
# For movies
# PS1="%d(%n$_CHROOTSTR)# "
# PS1="%d# "
# (find-es "x" "fstobdf")
#function myfstobdf () { fstobdf -s 127.0.0.1:7100 -fn $* }
# «fvwm-bw» (to ".fvwm-bw")
function fvwm-bw () {
FvwmCommand 'Style "*" Color white/gray50'
FvwmCommand 'Style "*" HilightFore white'
FvwmCommand 'Style "*" HilightBack gray25'
FvwmCommand 'KillModule FvwmPager'
xsetroot -solid white
}
#export MODDIR=/lib/modules/2.6.8-1-386
#export CONVITE=/var/www/tmp/convite
#export POD=24.60.246.134
function myfiglet () { figlet $* | awk '{printf "%% %s\n", $0}' }
#export VW=/var/www
#export VWT=/var/www/tmp
# «hh» (to ".hh")
# (find-angg ".emacs" "hh")
# http://article.gmane.org/gmane.emacs.eev.devel/22
# http://lists.gnu.org/archive/html/eev/2005-07/msg00019.html
function hh () { history | tee $EEVTMPDIR/hh }
#--------
# UFF
# cd ~/eev-current/; ./eev-rctool prepare
# mkdir -p ~/tmp ~/usrc
# «regv-beamer» (to ".regv-beamer")
# (find-es "ps" "gv")
# (find-node "(gv)Resource files" "~/.gv")
function regv-beamer () {
echo 'GV*background: black' > ~/.gv.beamer
regv $1 --ad=$HOME/.gv.beamer --spartan --scale=3 -geometry 1135x785+916+737
}
function upload-re () {
Scp ~/re edrx@angg.twu.net:public_html/
}
# «Xfontslists» (to ".Xfontslists")
# (find-es "x" "deb-for-a-font")
function Xfontslists () {
find /usr/X11R6/lib/X11/fonts/ -type f -name 'fonts.dir'
find /etc/X11/fonts/ -type f -name '*.alias'
}
# (find-zsh "grep -i Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 $(Xfontslists)")
# (find-zsh "dmissing usr/X11R6/lib/X11/fonts/misc/6x13.pcf.gz")
# «router-config-jan2006» (to ".router-config-jan2006")
# For the router, 2006jan05
# Btw: (find-fline "/etc/resolv.conf")
# terra: nameserver 200.149.55.143
# nameserver 200.165.132.148
# velox:
#function ii () {
# sudo poff -a
# sudo ifconfig eth0 down
# sudo ifconfig eth0 192.168.0.5 up
# sudo route add default gw 192.168.0.1
#}
# (find-fline "/etc/" "resolv.conf")
# (find-fline "/etc/resolv.conf")
# Velox: (find-zsh0 "setresolvconf 200.149.55.142 200.165.132.148")
# Terra: (find-zsh0 "setresolvconf 200.149.55.143 200.165.132.148")
# Scorphus: (find-zsh0 "setresolvconf 200.165.132.147 200.165.132.154")
# Scorphus: (find-zsh0 "setresolvconf 200.149.55.140 200.165.132.148")
# Koolosh: (find-zsh0 "setresolvconf 200.149.55.142 200.165.132.154")
#function setresolvconf () {
# sudo chmod 666 /etc/resolv.conf
# echo namerserver $1 > /etc/resolv.conf
# echo namerserver $2 >> /etc/resolv.conf
# # sudo chmod 644 /etc/resolv.conf
#}
# «wrap» (to ".wrap")
# (find-node "(gawk)ARGC and ARGV")
# (find-zsh "cd ~/TH/L/; grep -il inx $(find *) | sort | wrap -fline '~/TH/L/'")
function wrap () {
awk -v LINK="$1" -v PREFIX="$2" '
{printf "(find%s \"%s%s\")\n", LINK, PREFIX, $0}
'
}
# «cddb2rentracks» (to ".cddb2rentracks")
# (find-angg ".emacs" "freedb-rename")
# (find-angg "bin/gsub.lua")
# (find-zsh "cddb2rentracks < $S/http/www.freedb.org/freedb/rock/cf0d740f")
function cddb2rentracks () {
gsub.lua -f \
'TTITLE([0-9]+)=(.*)' \
'function (n, name) return
format("rentrack %02d %s", n+1,
string.lower(gsub(name, "[ \039]", "_")))
end'
}
# «wavsandtracks» (to ".wavsandtracks")
# Find the "trackNN.cdda.{wav,ogg}" and the wav files in my ~/NICOTINE dir
# (find-zsh "wavsandtracks")
# (find-sh "cd $S/http/www.freedb.org/; grep -i gong $(find * -type f) | gsub.lua '' 'http://www.freedb.org/%1'")
function wavsandtracks () {
cd; find NICOTINE | egrep 'track|wav$' | xargs -n 1 dirname \
| sort | uniq | gsub.lua '' '(find-fline "~/%1/")'
}
# «ruby» (to ".ruby")
# For tons of details see: (find-angg ".ruby/edrxinit.rb")
export RUBYLIB=$HOME/.ruby
# «mplayer» (to ".mplayer")
# (find-es "dvd" "mplayer-upstream")
#export MPLAYERDIR=$HOME/bigsrc/MPlayer-1.0pre8
# «mysqueak» (to ".mysqueak")
# (find-angg ".emacs" "squeak")
# (find-es "squeak" "install-2023")
# (find-es "squeak" "20220302-transpose")
# (find-es "squeak" "squeak-debian-2006")
# (find-fline "~/SQUEAK/Squeak6.0-22104/")
function mysqueak () { cd ~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/; ./squeak.sh }
function mysqueak () { cd ~/SQUEAK/Squeak6.0-22104-64bit-202206021410-Linux-x64/ && ./squeak.sh }
function mysqueak () { cd ~/SQUEAK/Squeak6.0-22104/ && ./squeak.sh & }
# «mypharo» (to ".mypharo")
# (find-es "pharo" "running-PHARO")
function mypharo () { cd ~/PHARO/; ./pharo-ui & }
# «cuis» (to ".cuis")
# (find-es "cuis")
function mycuis () { cd ~/usrc/cuis/MyProject/ && cogspur/squeak Cuis-Smalltalk-Dev/Cuis6.0-5608.image }
# «eth_multicast_diagnose» (to ".eth_multicast_diagnose")
# 2006sep28: I replaced my SiS 86c326 (PCI, 4MB) by a Riva TNT2 (AGP,
# 32MB) and the ethernet card stopped working... The error - at
# (find-fline "$ASROOT/var/log/ppp-connect-errors")
# was: "pppoe: Interface eth0 has broadcast/multicast MAC address??"
#
# (find-zsh "eth_multicast_diagnose")
# (find-zsh "eth_multicast_diagnose" "into ram disk...")
# (find-zsh "eth_multicast_diagnose |& tee ~/tmp/oethmc_eth_eth=via.txt")
# (find-fline "~/tmp/oethmc_eth_eth=via.txt")
# (find-zsh "eth_multicast_diagnose |& tee ~/tmp/oethmc_eth_eth=2=11.txt")
# (find-fline "~/tmp/oethmc_eth_eth=2=11.txt")
# (find-zsh "eth_multicast_diagnose |& tee ~/tmp/oethmc_eth_lowermost.txt")
# (find-zsh "eth_multicast_diagnose |& tee ~/tmp/oethmc_eth_lowermost1=11.txt")
# (find-fline "~/tmp/oethmc_eth_lowermost.txt")
# (find-fline "~/tmp/oethmc_eth_lowermost1=11.txt")
#
function eth_multicast_diagnose () {
# (find-node "(sed)Escapes")
echo " dmesg | sed s/.\\d008//g:"
dmesg | sed s/.\\d008//g; echo
echo " lspci:"
lspci; echo
echo " ifconfig:"
ifconfig; echo
echo " sudo tail /var/log/ppp-connect-errors"
sudo tail /var/log/ppp-connect-errors; echo
echo " cat /proc/interrupts"
cat /proc/interrupts; echo
echo " cat /proc/ioports"
cat /proc/ioports
}
# «asgraftpoints» (to ".asgraftpoints")
# (find-man "8 mkisofs" "-graft-points")
function asgraftpoints () {
awk '{ print "/" $1 "=" $1 }' > /tmp/graft.points
echo -graft-points -path-list /tmp/graft.points
}
# «music_dirs» (to ".music_dirs")
# (progn (eejump nil) (ee-goto-rest '("eq arg 38")))
#MP3=/big/music/mp3 ;# (find-fline "/big/music/mp3/")
#NICOTINE=$HOME/NICOTINE ;# (find-fline "~/NICOTINE/")
#RIPS=/big/music/rips ;# (find-fline "/big/music/rips/")
#RIPSBRA=/big/music/rips-bra ;# (find-fline "/big/music/rips-bra/")
#RIPSRARE=/big/music/rips-rare ;# (find-fline "/big/music/rips-rare/")
#OWAVS=/oldfs/music ;# (find-fline "/oldfs/music/")
#DTOGGS=$VWT/DTO/ogg ;# (find-fline "$VWT/DTO/ogg/")
# ;# (find-fline "~/tmp/rips/troggs-best/excellent/")
# ;# (find-fline "~/tmp/rips/")
# ;# (find-fline "$VWT/")
# «psne-over» (to ".psne-over")
function psne-rm () { rm -v $(urldir $1)$(basename $1) }
function psne-over () { psne-rm $1; psne $1 }
# (find-zsh0 "psne-over http://dto.freeshell.org/e/cell.el")
# (find-dtoefile "cell.e")
# «MAKEDEV_create» (to ".MAKEDEV_create")
# (find-angg ".emacs" "find-cat-to-lp0-script")
# (find-angg ".emacs" "find-cat-to-lp0-script" "MAKEDEV_create /tmp/lp0")
# Use this with "/dev/MAKEDEV -n"...
# (find-sh "cd /tmp/; /dev/MAKEDEV -n audio")
# (find-sh "cd /tmp/; /dev/MAKEDEV -n lp")
# (find-fline "/dev/MAKEDEV" "create $1 $2 $3 $4 $5:$6 $7")
# (find-fline "/dev/MAKEDEV" "mknod $1- $2 $3 $4")
function MAKEDEV_create () {
rm -f $1-
if mknod $1- $2 $3 $4 &&
chown $5 $1- &&
chmod $6 $1- &&
mv $1- $1
then
: # it worked
else
# Didn't work, clean up any mess...
echo "makedev $@: failed"
rm -f $1-
fi
}
function channel () { $EEVDIR/eegchannel $1 $SHELL; }
export LANG=C
function myps2up () { pstops "2:0L@.6(19cm,1cm)+1L@.6(19cm,13.85cm)" $* }
# «eeh» (to ".eeh")
# http://article.gmane.org/gmane.emacs.eev.devel/59
# http://lists.gnu.org/archive/html/eev/2007-09/msg00009.html
# function ee () { set -v; print -s -f "%s" "`cat $EE`"; . $EE $*; set +v; }
function eeh () { set -v; print -s -f "%s" "$(cat $EE)"; echo "(Added to history:)"; cat $EE; set +v; }
function kill-firefox () {
echo "killall $* firefox-bin"
killall $* firefox-bin
}
# «mesk-up» (to ".mesk-up")
# For meskita (my machine at omnisys)
#function mesk-up () {
# sudo dhclient
## sudo ifconfig eth2:1 10.1.0.101 netmask 255.255.0.0
# sudo ifconfig eth2:1 10.1.0.15 netmask 255.255.0.0
# sudo ifconfig
# # Caramba, tem eth2 e eth2:1?
#}
# «pers-up» (to ".pers-up")
# Make persephone available at the birdland net
#function pers-up () {
# sudo ifconfig eth1:1 10.1.0.101 netmask 255.255.0.0
# sudo ifconfig
#}
# «dek-up» (to ".dek-up")
# For dekooning at omnisys <- no longer.
# Make dekooning available at the birdland net
# (find-sh "sudo ifconfig")
#function dek-up () {
# # sudo dhclient
# sudo ifconfig eth0:1 10.1.0.102 netmask 255.255.0.0
# sudo ifconfig
#}
# «mesk-ip» (to ".mesk-ip")
# (find-sh "sudo ifconfig")
# (find-sh "sudo ifconfig eth2")
# (find-sh0 "sudo ifconfig eth2 | tr ' :' '\\n\\n' | grep 192 | head -n 1")
# (find-zsh0 "mesk-ip")
#function mesk-ip () {
# sudo ifconfig eth2 | tr ' :' '\n\n' | grep 192 | head -n 1
#}
# «muttfetchmail» (to ".muttfetchmail")
# (find-es "mail" "mutt-keys")
# Because at omnisys a POP/SSL fetch authorizes sending mail for some minutes
# (find-zsh "TERM=vt100 muttfetchmail")
#function muttfetchmail () {
# expect -c '
# set timeout -1
# log_user 1
# spawn mutt
# send Gx
# expect eof {}
# '
#}
# «tcl-tk» (to ".tcl-tk")
# (find-angg ".emacs" "tcl-tk")
# (find-es "tcl" "tcl8.4-deb-src")
# (find-es "tcl" "tk8.4-deb-src")
# (find-tk84sh "cd unix; LD_LIBRARY_PATH= ldd ./wish")
# (find-tk84sh "cd unix; LD_LIBRARY_PATH=$TCLTK_LD_LIBRARY_PATH ldd ./wish")
# (find-tcl84sh "cd unix; LD_LIBRARY_PATH= ldd ./tclsh")
# (find-tcl84sh "cd unix; LD_LIBRARY_PATH=$TCLTK_LD_LIBRARY_PATH ldd ./tclsh")
#export TKSRCDIR=$HOME/usrc/tk8.4/tk8.4-8.4.12/unix
#export TCLSRCDIR=$HOME/usrc/tcl8.4/tcl8.4-8.4.12/unix
#export TCLTK_LD_LIBRARY_PATH=$TCLSRCDIR:$TKSRCDIR:
# «tarcp» (to ".tarcp")
# (find-zsh0 "function foo () {echo $*[1,-2]}; foo A B C D ;#-> A B C")
# function tarcp () { echo tar -cf - $*[1,-2] "|" tar -xvf - -C $*[-1] }
function tarcp () { tar -cf - $*[1,-2] | tar -xvf - -C $*[-1] }
# «fvwm-netbsd» (to ".fvwm-netbsd")
# (find-es "fvwm" "fvwm-netbsd")
# For NetBSD machines in which I have to compile fvwm inside
# my home directory...
#function fvwm-netbsd () {
# FVWM_MODULEDIR=$HOME/usrc/fvwm-2.5.18/usr/libexec/fvwm/2.5.18 \
# LD_LIBRARY_PATH=/usr/X11R6/lib \
# ~/usrc/fvwm-2.5.18/fvwm/fvwm -replace &
#}
# if machinename == freire then alias fvwm to fvwm-netbsd (?)
# (find-es "http" "disguise-user-agent")
# (find-es "wget" "user-agent")
# (find-fline "$VWT/screenies/set.cgi")
export MOZILLA_USER_AGENT='Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)'
# (find-udw3m "lynx/lynx_help/Lynx_users_guide.html" "-auth=ID:PW")
# (find-udw3m "lynx/lynx_help/Lynx_users_guide.html" "-useragent=STRING")
function dpsne () {
# psne $* --http-user=owzFHY --http-password=KpzHPuX@ -U $MOZILLA_USER_AGENT -c
psne $* --http-user=4hzcdX --http-password=arXtY8xR -U $MOZILLA_USER_AGENT -c
}
function dlynx () {
lynx -auth=owzFHY:KpzHPuX@ -useragent=$MOZILLA_USER_AGENT $*
}
function dlynxz () {
dlynx -dump $1 | tr ' ' \\n | grep http | grep zip
}
#function hpsne () {
# psne $* --http-user=eduardoochs --http-password=Pogob0l -U $MOZILLA_USER_AGENT -c
#}
# «unpackimgzips» (to ".unpackimgzips")
function unpackimgzip_at () {
echo mkdir -p $1$(basename $2 .zip)/
mkdir -p $1$(basename $2 .zip)/
echo unzip -d $1$(basename $2 .zip)/ $2
unzip -d $1$(basename $2 .zip)/ $2
}
function unpackimgzips_at () {
for i in $*[2,-1]; do
unpackimgzip_at "$1" $i
done
}
function unpackimgzips () {
unpackimgzips_at unpacked/ $*
}
function UNPACKimgzips () {
unpackimgzips_at UNPACKED/ $(find $* -type f)
}
# «pppp» (to ".pppp")
# (find-es "ppp")
# How to use this:
# "pp" kills the current pppoe connection,
# "ppp" tries to establish a pppoe connection
# (it usually takes ~8 seconds to succeed),
# "pppp" prints the last lines of the pppd log.
# This is very useful for Oi Velox - a (slow) broadband service
# in which the connection ofter breaks when the phone rings or
# someone picks up the phone.
#
#function pp () { echo "sudo poff -a"; sudo poff -a; }
#function ppp () { echo "sudo pon dsl-provider"; sudo pon dsl-provider; }
#function pppp () { echo "sudo plog"; sudo plog; }
#function rrrr () {
# sudo route del -net 0.0.0.0 gw 192.168.254.254 netmask 0.0.0.0 dev eth0
# sudo route del -net 192.168.254.0 gw 0.0.0.0 netmask 255.255.255.0 dev eth0
#}
#
# My lenny partition at persephone sets up a default gateway at eth0 at boot:
# Lenny:
# Kernel IP routing table
# Destination Gateway Genmask Flags Metric Ref Use Iface
# 200.222.118.26 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
# 192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
# 0.0.0.0 192.168.254.254 0.0.0.0 UG 0 0 0 eth0
#
# Etch:
# Kernel IP routing table
# Destination Gateway Genmask Flags Metric Ref Use Iface
# 200.222.118.26 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
# 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
#
# and?... 8-\
# «BMPtodjvu» (to ".BMPtodjvu")
# (find-es "scan" "bmps-to-djvu")
#function BMPtodjvu () {
# for i in $*; do
# j=$(basename $i .BMP).pbm
# k=$(basename $i .BMP).djvu
# echo convert $i $j
# convert $i $j
# echo cjb2 -dpi 600 -lossy $j $k
# cjb2 -dpi 600 -lossy $j $k
# done
#}
#function BMPtodjvu_filenames () {
# for i in $*; do echo $(basename $i .BMP).djvu; done
#}
#function BMPstopdf () {
# BMPtodjvu $*[2,-1]
# echo djvm -create $1.djvu $(BMPtodjvu_filenames $*[2,-1])
# djvm -create $1.djvu $(BMPtodjvu_filenames $*[2,-1])
# echo ddjvu -format=pdf $1.djvu $1.pdf
# ddjvu -format=pdf $1.djvu $1.pdf
#}
# «djvu-unpack» (to ".djvu-unpack")
# (find-es "scan" "djvu-unpack")
function djvu-unpack () {
rm -Rv /tmp/djvu-unpack/
mkdir /tmp/djvu-unpack/
# cd /tmp/djvu-unpack/
npage=0
for fname_djvu in $A; do
npages=$(djvused -e 'n' $fname_djvu)
echo "$fname_djvu: $npages ($[$npage+1] to $[$npage+$npages])"
for i in $(seq 1 $npages); do
npage=$[$npage+1]
npage_djvu=/tmp/djvu-unpack/$(printf "p%03d.djvu" $npage)
djvused -e "select $i; save-page-with $npage_djvu" $fname_djvu
done
done
}
function djvu-repack () {
djvm -create $1 /tmp/djvu-unpack/*.djvu
}
function mypdf2djvu () { pdf2djvu --monochrome --lossy -o $1.djvu $1 }
function rmmkdircd () { rm -Rfv $1; mkdir $1; cd $1; }
# (find-es "hardware" "nokia-x2-01")
# export CEL=/media/0000-EAF4/Playlists
# «p8» (to ".p8")
# 8.8.8.8 is Google DNS
p8 () { echo ping 8.8.8.8; ping 8.8.8.8; }
# «tt» (to ".tt")
tt () { while true; do date; sleep 1; done; }
# «Twus-and-Twup» (to ".Twus-and-Twup")
# (find-angg ".emacs" "tramp-twu")
# These are in tramp syntax.
export Twup=/scp:edrx@angg.twu.net:/home/edrx/public_html
export Twus=/scp:edrx@angg.twu.net:/home/edrx/slow_html
# «TWUS-and-TWUP» (to ".TWUS-and-TWUP")
# These are in ssh syntax.
export TWUS=edrx@angg.twu.net:slow_html
export TWUP=edrx@angg.twu.net:public_html
# «Lins-and-Linp» (to ".Lins-and-Linp")
# «LINS-and-LINP» (to ".LINS-and-LINP")
# (find-angg ".emacs" "linode")
export Linp=/scp:edrx@linode:/home/edrx/public_html
export Lins=/scp:edrx@linode:/home/edrx/slow_html
export LINS=edrx@linode:slow_html
export LINP=edrx@linode:public_html
# «git-test» (to ".git-test")
# (find-es "git" "git-test-2")
git-test () {
N=0
N () { echo $N; }
++N () { N=$[$N+1]; echo $N; }
Dump1 () { echo $1 \($(cat $1)\); }
Dumps () { for i in $*; do Dump1 $i; done; }
Dump () { Dumps $(find * -type f | sort); }
Modify1 () { ++N >> $1; Dump1 $1; }
Modify () { for i in $*; do Modify1 $i; done; }
Commit () { git commit -a -m $(N); }
Diagram () { PAGER=cat git log --oneline --graph --decorate --all; }
}
function t () { transmission-gtk &; }
# «flac2mp3» (to ".flac2mp3")
# (find-es "mp3" "flac2all")
flac2mp3 () {
mkdir $2
# flac2all mp3 "$1" -o "$2" -l 'b 320'
flac2all mp3 "$1" -o "$2" -l 'b 256'
}
# «m4a2mp3» (to ".m4a2mp3")
m4a2mp3 () {
mkdir -p $2/
for i_m4a in $1/*.m4a; do
i=$2/$(basename $i_m4a .m4a)
echo avconv -i $i_m4a -b:a 256k $i.mp3
avconv -i $i_m4a -b:a 256k $i.mp3
done
}
# «mp32mp3256» (to ".mp32mp3256")
mp32mp3256 () {
mkdir -p $2/
for i_320 in $1/*.mp3; do
i=$2/$(basename $i_320 .mp3)
echo avconv -i $i_320 -b:a 256k $i.mp3
avconv -i $i_320 -b:a 256k $i.mp3
done
}
# «rot0» (to ".rot0")
# (find-angg ".emacs" "rotate")
rot0 () {
convert $1 -rotate 0 -auto-orient $1
}
# «python» (to ".python")
# (find-angg ".pythonrc.py")
# (find-es "python" "PYTHONSTARTUP")
# (find-es "python" "PYTHONSTARTUP" ".pythonrc.py")
export PYTHONSTARTUP=$HOME/.pythonrc.py
# «linkdasruas» (to ".linkdasruas")
# (find-es "localvideos" "command-line" "Generate /tmp/linkdasruas.{cps,dls}")
makelinkdasruashtml () {
cd ~/TH/L/
lua51 ~/blogme3/blogme3.lua \
-lv_blogme ~/blogme3/local-videos.blogme \
-big_videos_ls /sda5/videos/manifs/ \
-videos_ls manifs/ \
-text ~/linkdasruas.txt \
-lv_html ~/TH/L/linkdasruas.html \
-cps /tmp/linkdasruas.cps \
-dls /tmp/linkdasruas.dls
}
makelinkdasruashtmlcp () {
makelinkdasruashtml
cp -v ~/TH/L/linkdasruas.html ~/linkdasruas.html
}
export HOST
# (getenv "HOME")
# (getenv "HOST")
# «eev2-files» (to ".eev2-files")
# (find-eev2-links)
# (find-angg "eev-videos/")
# (find-angg "eev-videos/0.sh")
# (find-es "eev" "eev2.tgz")
# (find-eevsh "grep ^.require eev2-all.el")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print $2}'")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print substr($2, 2, length($2)-2)}'")
# (find-eevsh "grep ^.require eev2-all.el | awk '{print substr($2, 2, length($2)-2) \".el\"}'")
# (find-zsh "eev2-files")
# (find-zsh "eev2-files-all")
eev2-files () {
grep ^.require ~/eev-current/eev2-all.el |
awk '{print substr($2, 2, length($2)-2) ".el"}'
}
eev2-files-all () {
echo VERSION
echo README.md
echo ChangeLog
echo eev-readme.el
echo eev2-all.el
eev2-files
}
eev2-build-tgz () {
cd ~/eev-current/
(TZ=GMT date; date) > VERSION
tar -cvzf /tmp/eev2.tgz $(eev2-files-all)
laf /tmp/eev2.tgz
}
eev2-files-all-git () {
(cd ~/eev-current/; git ls-files)
}
eev2-build-tgz-git () {
cd ~/eev-current/
(TZ=GMT date; date) > VERSION
tar -cvzf /tmp/eev2.tgz $(eev2-files-all-git)
laf /tmp/eev2.tgz
}
eev2-test-unpack () {
rm -Rv /tmp/eev/
mkdir /tmp/eev/
cd /tmp/eev/
tar -xvzf ../eev2.tgz
}
eev2-test () {
eev2-build-tgz
eev2-test-unpack
FvwmCommand "CursorMove +0 +100" &&
emacs-default-X0 -Q -l eev-readme.el eev-readme.el
# emacs -Q -fn 6x13 -fg bisque -bg black eev-readme.el
# (find-enode "Action Arguments")
}
eev2-upload0 () {
Scp-np $* /tmp/eev2.tgz edrx@angg.twu.net:slow_html/eev-current/
Scp-np $* /tmp/eev2.tgz edrx@angg.twu.net:public_html/eev-current/
# Scp-np $* ~/eev-videos/2.el edrx@angg.twu.net:public_html/eev-videos/
}
eev2-upload () {
# eev2-upload0 $* | grep -v password
eev2-upload0 $*
}
eev2-upload0-tar () {
Scp-np $* /tmp/eev2.tar edrx@angg.twu.net:slow_html/eev-current/
Scp-np $* /tmp/eev2.tar edrx@angg.twu.net:public_html/eev-current/
}
eev2-upload-tar () {
eev2-upload0-tar $*
}
# «Scp-np» (to ".Scp-np")
# (find-angg "EXPECT/Scp")
Scp-np () {
Scp $* | grep -v password
}
function mkdire () {
sudo mkdir $1; sudo chown -v edrx. $1
}
# «flsfiles» (to ".flsfiles")
# (find-angg "LUA/flsfiles.lua")
# (find-es "zsh" "positional-parameters")
# (find-latex-upload-links "2018dednat6-extras")
function flsfiles () { ~/LUA/flsfiles.lua $1 | grep -v "^/" }
function flsfiles-tgz () { tar -chvzf "$2" $(flsfiles $1) $*[3,-1] }
function flsfiles-zip () { rm -fv "$2"; zip "$2" $(flsfiles $1) $*[3,-1] }
# «print-quadro-sexps» (to ".print-quadro-sexps")
# (find-es "awk" "ARGV")
# (find-zsh "cd ~/2017.2-LA/; find *.jpg | cut -b-8")
# (find-zsh "cd ~/2017.2-LA/; find *.jpg | cut -b-8 | print-quadro-sexps laQ172")
function print-quadro-sexps () {
Q=$1 awk '{printf(";; (%s %2d \"%s\")\n", ENVIRON["Q"], NR, $0)}'
}
# «my-cmp-tkdiff» (to ".my-cmp-tkdiff")
# (find-es "git" "eev-fix-git-2018may31")
# (find-es "zsh" "expansion")
# (find-angg "bin/gsub.lua")
function my-git-list-files () { (cd $1 && git ls-files $*[2,-1]) }
function my-git-laf-files () { (cd $1 && laf $(git ls-files $*[2,-1])) }
function my-git-cp-files () { (cd $1 && cp -iav $(git ls-files $*[3,-1]) $2) }
function my-tkdiff-links () { gsub.lua '.+' '(find-tkdiff "'$1'%1" "'$2'%1")' }
function my-cmp () { for i in $(cat); do echo $i; cmp $1$i $2$i; done }
function my-cmp-list () { for i in $(cat); do cmp -s $1$i $2$i || echo $i; done }
function my-cmp-tkdiff () { my-cmp-list ${~1} ${~2} | my-tkdiff-links $1 $2 }
# «locale» (to ".locale")
# (find-es "locale" "collation")
export LC_ALL=C
# «bracketed-paste» (to ".bracketed-paste")
# (find-es "zsh" "backeted-paste")
if [[ "$TERM" = dumb ]]; then unset zle_bracketed_paste; fi
# «nim» (to ".nim")
# (find-es "nim" "nim-1.6.10")
# export PATH=$HOME/usrc/Nim/bin:$PATH
# «texlive-2016» (to ".texlive-2016")
# «texlive-2017» (to ".texlive-2017")
# «texlive-2018» (to ".texlive-2018")
# «texlive-2019» (to ".texlive-2019")
# «texlive-2020» (to ".texlive-2020")
# See: (find-es "arxiv" "texlive-2016")
# (find-es "arxiv" "texlive-2017")
# export PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH
# export PATH=/usr/local/texlive/2017/bin/x86_64-linux:$PATH
# export PATH=/usr/local/texlive/2017/bin/x86_64-linux:$PATH
# export PATH=/usr/local/texlive/2018/bin/x86_64-linux:$PATH
# export PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH
export PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
# export PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH
# (find-sh "echo $PATH | tr : '\n'")
# «cabal» (to ".cabal")
# (find-es "cabal" "cabal-PATH")
# (find-es "haskell" "cabal-PATH")
# (find-angg ".emacs" "cabal-path")
# (find-fline "~/.cabal/bin/")
#export PATH=$HOME/.cabal/bin:$PATH
export PATH=$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH
# «opam» (to ".opam")
# (find-es "ocaml" "opam-init")
# (find-fline "~/.opam/opam-init/variables.sh")
# OPAM configuration
test -r ~/.opam/opam-init/init.zsh && . ~/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true
# «pip-path» (to ".pip-path")
# (find-es "python" "pip")
# (find-fline "~/bin/")
# (find-fline "~/.local/bin/")
# (find-fline "~/.local/bin/" "yt-dlp")
# (find-fline "~/.elan/bin/")
# «nvm» (to ".nvm")
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# (find-fline "~/bin/")
# The script youtube-dl is installed in '/home/edrx/.local/bin' which
# is not on PATH.
# Consider adding this directory to PATH or, if you prefer to suppress
# this warning, use --no-warn-script-location.
#export PATH=$HOME/.local/bin:$PATH
#export PATH=$HOME/bin:$HOME/.local/bin:$PATH
export PATH=$HOME/bin:$PATH
export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.elan/bin:$PATH
# «plan9» (to ".plan9")
# (find-es "plan9" "plan9port-2022")
#export PLAN9=/home/edrx/usrc/plan9port
#export PATH=$PATH:$PLAN9/bin
#export PATH=$PATH:$HOME/.nimble/bin
# «luarocks» (to ".luarocks")
# (find-fline "~/.luarocks/bin/" "luacheck")
# (find-fline "~/.luarocks/bin/luacheck")
# «movedotemacs» (to ".movedotemacs")
# For Doom. Doesn't work well.
#movedotemacsto () {
# cd &&
# mkdir -fv $1 &&
# mv -ifv .emacs .emacs.d $1/
#}
#movedotemacsfrom () {
# cd &&
# mv -ifv $1/.emacs $1/.emacs.d . &&
# rmdir -v $1/
#}
# «screenkey» (to ".screenkey")
# (find-es "screencasts" "screenkey")
screenkey-on () {
screenkey -s small --mods-mode emacs --opacity 0.3 --timeout 0.5
}
screenkey-off () {
killall screenkey
}
# «sk» (to ".sk")
# (to "x00")
# (find-es "x" "setxkbmap")
# (find-es "x" "X-kbdrate")
sk () {
setxkbmap us
}
# «basename_tgz» (to ".basename_tgz")
# (find-es "unix" "tar")
basename_tgz () { basename $(tar -tzf $FNAME | head -n 1); }
# ecg () { mpv https://live0.emacsconf.org/gen.webm }
# ecd () { mpv https://live0.emacsconf.org/dev.webm }
# «termux» (to ".termux")
# OBSOLETE: Superseded by:
# (find-angg ".emacs.templates" "find-termux-links")
# (find-es "termux")
# (find-es "android" "termux-rsync")
# (find-angg ".emacs" "termux")
exporttermuxvars () {
$1 export TERMUXIP=192.168.1.2
$1 export TERMUXIP=192.168.0.111
$1 export TERMUXIP=192.168.43.1
$1 export TERMUXIP=10.16.249.61
$1 export TERMUXIP=10.3.184.122
$1 export TERMUXUSER=u0_a037
$1 export TERMUXE="ssh -l $TERMUXUSER -p 8022"
$1 export TERMUXS="ssh://$TERMUXUSER@$TERMUXIP:8022"
$1 export TERMUXWHATSAPP=$TERMUXIP:/storage/emulated/0/Android/media/com.whatsapp/Whatsapp
$1 export TERMUXWPIMAGES="$TERMUXWHATSAPP/Media/WhatsApp\\ Images"
$1 export TERMUXWPVIDEO="$TERMUXWHATSAPP/Media/WhatsApp\\ Video"
$1 export TERMUXCAMERA="$TERMUXIP:/storage/emulated/0/DCIM/Camera"
#
$1 export TERMUXTRAMP="/scp:${TERMUXUSER}@${TERMUXIP}#8022:"
$1 export TERMUXTRAMPWP="$TERMUXTRAMP/storage/emulated/0/Android/media/com.whatsapp/Whatsapp"
$1 export TERMUXTRAMPWPIMAGES="$TERMUXTRAMPWP/Media/WhatsApp Images"
$1 export TERMUXTRAMPWPVIDEO="$TERMUXTRAMPWP/Media/WhatsApp Video"
$1 export TERMUXTRAMPCAMERA="$TERMUXTRAMP/storage/emulated/0/DCIM/Camera"
}
#exporttermuxvars
# (find-zsh "exporttermuxvars echo")
# «video-duration» (to ".video-duration")
# (find-angg "bin/extract-frame")
# (find-es "ffmpeg" "video-duration")
video-duration () {
ffprobe -v error -select_streams v:0 -show_entries stream=duration \
-of default=noprint_wrappers=1:nokey=1 $1
}
# Arguments are: infile position outfile
extract-frame-ipo () { ffmpeg -loglevel error -y -ss $2 -i $1 -frames:v 1 $3 }
extract-frame-io () { extract-frame-ipo $1 $[$(video-duration $1)/2] $2 }
edev () { mpv https://live0.emacsconf.org/dev.webm }
egen () { mpv https://live0.emacsconf.org/gen.webm }
export A=Aaaa
export B=Bbbb
export C=Cccc
# Keep this at the end.
# (find-es "zsh" "zshrc-hash-bang-eval")
eval $1
# Local Variables:
# coding: raw-text-unix
# ee-anchor-format: "«%s»"
# End: