X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc;h=971cb02b7de02678fc5d9ce89a77df8fc5c4924a;hb=b37f31cdee02eab5a7a9bb083688c0a90a973e31;hp=97f22e1ca96ecbdb65bdabb69aea925305850f1c;hpb=dc34d23c63cd83a7cc7a79525445aad3293c7241;p=distro-setup diff --git a/brc b/brc index 97f22e1..971cb02 100644 --- a/brc +++ b/brc @@ -664,6 +664,21 @@ khcopy() { ssh-copy-id $1 } +# ya, hacky hardcoded hostnames in 2023. we could do better +hssh-update() { + local -a failed_hosts + for host in kd x3.office.fsf.org syw; do + e $host + if ! scp /b/fai/fai/config/files/usr/local/bin/hssh/IANK root@$host:/usr/local/bin/hssh; then + failed_hosts+=($host) + fi + done + if (( ${#failed_hosts[@]} >= 1 )); then + echo failed_hosts=${failed_hosts[*]} + return 1 + fi +} + a() { local x x=$(readlink -nf "${1:-$PWD}") @@ -687,24 +702,46 @@ hexipv4() { } vp9() { - local f out outdir in + local f out outdir in fname origdir skip1 + origdir="$PWD" outdir=vp9 - case $1 in - --out) - outdir=$2 - shift 2 - ;; - esac + skip1=false + while [[ $1 == -* ]]; do + case $1 in + # if we got interrupted after 1st phase + -2) + skip1=true + shift + ;; + --out) + outdir=$2 + shift 2 + ;; + esac + done m mkdir -p $outdir + # first pass only uses about 1 cpu, so run in parallel for f; do - out=$PWD/$outdir/$f - in=$PWD/$f - m cd $(mktemp -d) - pwd - m ffmpeg -threads 0 -i $in -g 192 -vcodec libvpx-vp9 -vf scale=-1:720 -max_muxing_queue_size 9999 -b:v 750K -pass 1 -an -f null /dev/null - m ffmpeg -y -threads 0 -i $in -g 192 -vcodec libvpx-vp9 -vf scale=-1:720 -max_muxing_queue_size 9999 -b:v 750K -pass 2 -c:a libvorbis -qscale:a 5 $out - cd - + { + fname="${f##*/f}" + if [[ $f == /* ]]; then + in="$f" + else + in=$origdir/$f + fi + out="$origdir/$outdir/$fname" + mkdir -p /tmp/vp9/$fname + cd /tmp/vp9/$fname + if ! $skip1 && [[ ! -s ffmpeg2pass-0.log ]]; then + # -nostdin or else wait causes ffmpeg to go into stopped state. dunno why, random stackoverflow answer. + m ffmpeg -nostdin -hide_banner -loglevel error -i $in -g 192 -vcodec libvpx-vp9 -vf scale=-1:720 -max_muxing_queue_size 9999 -b:v 750K -pass 1 -an -f null /dev/null + fi + if [[ -e $out ]]; then rm -f $out; fi + m ffmpeg -nostdin -hide_banner -loglevel error -y -i $in -g 192 -vcodec libvpx-vp9 -tile-rows 2 -vf scale=-1:720 -max_muxing_queue_size 9999 -b:v 750K -pass 2 -c:a libvorbis -qscale:a 5 $out + } & done + wait -f + cd "$origdir" } utcl() { # utc 24 hour time to local hour 24 hour time @@ -1025,6 +1062,10 @@ etail2() { } ccomp tail etail etail2 +# ran into this online, trying it out +detach() { + ( "$@" &>/dev/null & disown ) +} showkeys() { ssh "$@" cat .ssh/authorized_keys{,2} @@ -1179,6 +1220,7 @@ ffremux() { # absolute path of file/dir without resolving symlinks. # +# Most of the time, I want this where I would normally use readlink. # This is what realpath -s does in most cases, but sometimes it # actually resolves symlinks, at least when they are in /. # @@ -1381,6 +1423,16 @@ ccomp grep gr grr rg() { grr "$@"; } ccomp grep rg +# recursive everything. search for files/dirs and lines. rs = easy chars to press +re() { + local query + query="$1" + find "$@" -not \( -name .svn -prune -o -name .git -prune \ + -o -name .hg -prune -o -name .editor-backups -prune \ + -o -name .undo-tree-history -prune \) 2>/dev/null | grep -iP --color=auto "$query" + grr -m 5 "$@" +} + hr() { # horizontal row. used to break up output printf "$(tput setaf 5 2>/dev/null ||:)█$(tput sgr0 2>/dev/null||:)%.0s" $(eval echo "{1..${COLUMNS:-60}}") echo @@ -1473,9 +1525,17 @@ ipp() { git push } - ifn() { - # insensitive find + local glob + glob="$1" + shift + find -L "$@" -not \( -name .svn -prune -o -name .git -prune \ + -o -name .hg -prune -o -name .editor-backups -prune \ + -o -name .undo-tree-history -prune \) -iname "*$glob*" 2>/dev/null +} + +ifh() { + # insensitive find here. args are combined into the search string. # -L = follow symlinks find -L . -not \( -name .svn -prune -o -name .git -prune \ -o -name .hg -prune -o -name .editor-backups -prune \ @@ -1611,7 +1671,7 @@ ksu() { # history search unique histrm() { history -n HISTTIMEFORMAT= history | awk -v IGNORECASE=1 '{ a=$1; sub(/^ *[^ ]+ */, "") }; /'"$*"'/' - read -p "press anything but contrl-c to delete" + read -r -p "press anything but contrl-c to delete" for entry in $(HISTTIMEFORMAT= history | awk -v IGNORECASE=1 '{ a=$1; sub(/^ *[^ ]+ */, "") }; /'"$*"'/ { print a }' | tac); do history -d $entry done @@ -1782,7 +1842,7 @@ r() { # scp is insecure and deprecated. scp() { - rsync --inplace "$@" + rsync -Pt --inplace "$@" } ccomp rsync scp @@ -1889,6 +1949,11 @@ reresolv() { fi } +# add annoyingly long argument which should be the default +sedi() { + sed -i --follow-symlinks "$@" +} + rmstrips() { ssh fencepost head -n 300 /gd/gnuorg/EventAndTravelInfo/rms-current-trips.txt | less }