the key to memory. the key to memory. the key to memory.
if [ 0 ] then echo "true" else echo "false" fi
it makes sense in the context of “if this program runs without error”. but i get tripped in every other context.
for i in in *.webm do echo $i done
will echo those files. be aware that you're probably going to want to enclose $i in quotes, e.g.:
for i in *.webm do ffmpeg -i "$i" "$i.ogg" done
there’s a package in apt called rename. (not part of the perl distribution; google lead me to some lying liar on the internet. maybe he was right at one time.)
so let's say you found a sick-awesome album. so you've done a nice yt-dlp -x –audio-format mp3 –split-chapters https://www.youtube.com/watch?v=aJIDqYZ7qM0. now you got all these things that are titled like, this soundtrack caused me to ACTUALLY DIE and i am a GHOST now (not clickbait) link to my onlyfans in bio, music for men women children best music great music - 001 photograph [aJIDqYZ7qM0].webm, and a 002, and so on.
ls | rename -d 's/ \[[^]]*\]\././'
pipe ls to rename. -d for “not the directory, only rename the file”, and then do a sed-style replacement string.
bonus, you can use -n or –nono for “no rename” (or as I like to call it, “not really tho”) - i.e., don't actually rename, just do a rename. It spits out a preview. Be sure to put the -n before the sed pattern.
you can use named capture groups, but you have to do \1, etc. And then the console will bitch at you that you should have done $1, but $1 doesn't work.
curl arg.rip/beefhaving
“wow, that was perfect for me, now all of my problems have been solved forever” - a customer
watch this.
echo "# phase 5: blah blah blah" goodreads=0 badreads=0 find "ocr" -iname "*.txt" -print0 | while read -d $'\0' file do n=$(grep -Poh "(?<=N)[0-9]{2}\\.[0-9]+" "$file") w=$(grep -Poh "(?<=W)[0-9]{2}\\.[0-9]+" "$file") if [ -n "$n" ] && [ -n "$w" ]; then goodreads=$(($goodreads+1)) echo "$filename was OCR'd well; $goodreads good so far" else badreads=$(($badreads+1)) echo "$filename is not perfect; $badreads bad so far" fi done echo "$goodreads good, $badreads bad."
it resets them to 0 after the loop. This is because bash uses dyanmic scope. https://en.wikipedia.org/wiki/Scope_(computer_science)#Dynamic_scope dynamic scope is stupid, the correct implementation is lexical scope.
so how do we force bash to operate correctly, with lexical scope? according to the internet, you use `local`. doesn't work. once you do that, the subscope doesn't just work with its own copy, it annihilates yours! there's also declare, doesn't work. Export is for sub processes, but again that doesn't send back up.