If you don't mind, I'd like to hear more about your setup. I have a bunch of bash scripts and python programs I've used to make working in the terminal easier (and more fun). Are you saving your dotfiles are a git project and then just syncing and pulling them down from there? I'm not an expert, just a tinkerer, but I like tinkering in the terminal. :)
Not the parent but a project (glorified Bash script) called vcsh[1] has served me well over the years for managing multiple Git repositories containing my dotfiles (separation of concerns).
Lately I have migrated some of that to Guix Home because the other half of the problem is having all the dependent programs necessary for the dotfiles installed automatically at the appropriate versions.
The latter one especially falls into the realm of tinkering. :)
Yeah my dotfiles, notes, and scripts are in a single repo. I think the most important thing to do is organize. I just match the system. So I put everything that a rc file in ~/ in one directory and everything in ~/.config in another. Then if you have your repo downloaded all you need is to run 2 find commands like this
It baffles me that people are so unorganized in their dotfiles. A little goes a long way to making your life easier. But then again people suck at bash so they're probably not thinking of using find this way. You could also use xargs to parallelize if you want but there'd be no practical speed difference for me
Another key component is to break out files. For example I have the directory ~/.dotfiles/rc_files/zsh. My zshrc file sources different files from that location. So I have a Linux file and OSX file there for anything that is specifically system dependent. If you want different configs on different machines you can check the hostname and use the same pattern!
Speaking of which, use functions! At first this is going to sound crazy but it's worth the effort and let's be honest, the effort is very low (though the initial rebase might not be depending on how messy you are)
function _exists() {
command -v "$1" &> /dev/null
}
alias_ls() {
alias_lsd() {
alias ls='lsd'
alias la='lsd -A' # A drops . and ..
alias ll='lsd -l' # h is automatic
}
alias_base_ls() {
alias ls='ls -v --color=auto -h' # numerical sort, color, human readable
alias la='ls -A' # ignore . and ..
alias ll='ls -lh'
}
if ( _exists lsd );
then
alias_lsd
else
alias_base_ls
fi
}
main() {
alias_ls || echo -e "\033[1;31mls aliasing fucked up!\033[0m"
}
main
Yeah, it is a bit more cumbersome but it's really not that bad and
1) debugging gets so much easier
2) you know where everything is and what everything does.
3) trying new aliases, command tools, scripts, etc also becomes a lot easier.
Following Unix philosophy has more advantages than disadvantages. I also strongly suggest adding comments because you'll forget why you did something. I'll often link to posts for this and for giving credit.
Fwiw, my main language is Python but for pretty much everything in the terminal I write in bash. You can often make oneliners that would traditionally be a lot of lines in Python. Not to mention it's usually faster. It's a good way to help you learn bash too! ^__^
Thanks for the detailed reply, examples, and links! Yeah, I definitely rely heavily on bash script functions, but had never thought about using git to share or sync my scripts and little programs. Thanks again, I really appreciate it!
Interesting article, though I wonder why they didn't mention the Fram -- Nansen's ship that WAS designed to resist the crushing ice, and DID survive a trip across the northern seas purposely trapped in the crushing ice (but just missing the north pole)... If my memory serves, Shackleton knew about Nansen, and even talk with him before his (Shackleton's) expedition. shrug
If I remember correctly, this sound is part of Pink Floyd's song "Money"... part of the background rhythm. I wonder how many of the "Never heard of these" crowd would recognize it if they hard it in person... smile
I have three kids, now just turning adult. My wife and I took the point of view that we are modeling a healthy lifestyle for our children. So, we only used technology as tools -- looking up stuff, scheduling, reading PDFs, etc.... AND we made sure they could see what we were doing -- no "hidden" screens or hidden computer time.
After doing this for the last 15+ years, I think it's turned out well. The oldest two seem to have a healthy relationship with their devices (as tools) and are just as happy to put them down and go outside or spend time with other people. The youngest is similar, but still needs to use tech a lot for his studies (by curriculum design). However, he'd also prefer to go outside or watch a movie than be on a device.
I live in Japan, and have lived here for the last 25 years. Yes, bread is far more popular for breakfast than rice is. If you go to a Japanese-style Inn, they will serve rice and fish and miso for a "traditional" breakfast, but at home, many people eat toast. There's been an increase in jams and spreads to put on toast, as well. My family here in Japan (I'm American, wife is Japanese, kids are both), we've always eaten bread and yogurt with milk nearly every single day.
PS -- We nearly always have rice with lunch and dinner, though. Japanese-grown. IMHO, it tastes very different from imported rice, and we HAVE tried.
reply