I thought there should be a “standard” utility for overwriting the content of files with random garbage on most Linux systems. Unsurprisingly, it’s called shred. Surprisingly, to me, is that it’s part of GNU coreutils.
My private motto has always been “Behind every silver lining is a cloud.”.
— Glenn Gould
TIL about bundle _VERSION_ … to force Bundler to use VERSION of Bundler, regardless of whatever Bundler guesses that it should be using.
E.g. bundle _2.5.17_ … will only use v2.5.17 of Bundler and will fail if it cannot.
“Where did the art go?”
Bah. All these “low footprint” Docker images turn you into a Linux distro builder having to assemble a list of packages that you need/want.
TIL, services fronted by Cloudflare won’t let you use “/etc/passwd” or “/etc/group” in their input.
🙄
Do not use pyenv, rbenv, non-root-user whatever language runtime manager.
Build and lock down your runtimes. There should be a sudo chmod -R ugo-w …; sudo chown -R nobody: … somewhere in the build/install process.
I semi-regularly use the . (plain files) and * (executable files) Zsh glob qualifiers.
(The way to remember these is to think of ls output.)
Why, yes, I am trawling through the Zsh docs looking for means of picking out a subset of files out of a directory, why do you ask?
Zsh D glob qualifier:
sets the GLOB_DOTS option for the current pattern
∙> echo *git*
zsh: no matches found: *git*
1> echo *git*(D)
.git .gitattributes .github .gitignore
∙>
Zsh N glob qualifier:
sets the NULL_GLOB option for the current pattern
•> echo nosuchfile*
zsh: no matches found: nosuchfile*
1> echo nosuchfile*(N)
•>
From the Zsh documentation:
If a word begins with an unquoted ‘=’ and the EQUALS option is set, the remainder of the word is taken as the name of a command. If a command exists by that name, the word is replaced by the full pathname of the command.
•> echo =vim
/Users/elliot/opt/bin/vim
George Antheil’s Ballet Mécanique, which requires 16 synchronized player-pianos was never fully realized in his lifetime. (backstory) 🎵
TIL that the /lib/systemd/systemd --user process for a user with linger enabled does not automatically pick up group membership changes. Also, there does not appear to be a clean way to get it to pick up the changes, e.g. systemctl --user reexec doesn’t work. Resorted to killing it and relogging in.
Talking about music is like dancing about architecture.
I first heard this epigram from Laurie Anderson, but its origin is seriously complicated.
I find it weird that /var/lib/systemd/linger contains usernames instead of UIDs.