-
16 votes
-
Share your personal dotfile treats and Unix tool recommendations
I am currently preparing for a new job and cleaning up my dotfile repository. During the process, I had the idea that it would be nice to create a list of amazing tools, aliases, functions, and...
I am currently preparing for a new job and cleaning up my dotfile repository. During the process, I had the idea that it would be nice to create a list of amazing tools, aliases, functions, and recommendations together.
I will start.
First, here is a list of nice tools to
apt-get install
orbrew install
that I can wholeheartedly recommend:nvim
is just an amazing text editor.fzf
is a very good fuzzy finder util. For example, you can quickly find files with it.eza
is a goodls
replacement (and the successor ofexa
).bat
is a great replacement forcat
with nice integrations and many options.stow
is great for managing your dotfiles. Thanks to @TangibleLight for telling me about it some while ago. I really love it.tmux
is a terminal multiplexer, i.e. you can have many sessions in one single terminal window. It's easy to use and super helpful. (When on a mac, I prefer iTerm tabs, though.)nvm
is practically a must if you are working with Node.glow
is an excellent markdown reader.tldr
is a niceman
replacement. (You must runtldr -u
after installing it to update available texts.)z
, an amazing tool for switching directories quickly.
Also, I can recommend Oh My ZSH! which I have been using for years.
Here is a small list of aliases I enjoy (I have 100+ aliases and I tried to pick some others may enjoy as well):
# Serve current dir alias serve="npx serve ." # What's my IP? alias ip="curl --silent --compressed --max-time 5 --url 'https://ipinfo.io/ip' && echo ''" # This should be the default alias mkdir="mkdir -p" # Nice git helpers alias amend="git add . && git commit --amend --no-edit" alias nuke="git clean -df && git reset --hard" # Make which more powerful which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot' # This saves so many keystrokes, honestly alias -- +x="chmod +x" # Turns your path into a nice list and prints it alias path='echo -e ${PATH//:/\\n}' # Map over arguments and run a command # Usage: map <command> # Example: ls | map cat alias map="xargs -n1"
And, finally, here are some fun functions:
# Get cheat sheets for almost anything! # https://github.com/chubin/cheat.sh cheat() { WITH_PLUS=$(echo $@ | sed 's/ /+/g') CAT_TOOL=$(command -v batcat || command -v bat || command -v cat) curl "cheat.sh/$WITH_PLUS" | $CAT_TOOL } # Send everything to /dev/null nullify() { "$@" >/dev/null 2>&1 } # Create a new dir and enter it mk() { mkdir -p "$@" && cd "$_" } # Create a data URL from a file # Source: https://github.com/mathiasbynens/dotfiles/blob/master/.functions data-url() { local mimeType=$(file -b --mime-type "$1"); if [[ $mimeType == text/* ]]; then mimeType="${mimeType};charset=utf-8"; fi echo "data:${mimeType};base64,$(openssl base64 -in "$1" | tr -d '\n')"; }
74 votes -
best way to go about with a script that seems to need both bash and python functionality
Gonna try and put this into words. I am pretty familiar with bash and python. used both quite a bit and feel more or less comfortable with them. My issue is I often do a thing where if I want to...
Gonna try and put this into words.
I am pretty familiar with bash and python. used both quite a bit and feel more or less comfortable with them.
My issue is I often do a thing where if I want to accomplish a task that is maybe a bit complex, I feel like I have to wind up making a script, let's call it
hello_word.sh
but then I also make a script called.hello_world.py
and basically what I do is almost the first line of the bash script, I call the python script like
./hello_world.py $@
and take advtange of theargparse
library in python to determine what the user wants to do amongst other tasks that are easier to do in python like for loops and etc.I try to do the meat of the logic in the python scripts before I write to an
.env
file from it and then in the bash script, I will doset -o allexport source "${DIR}"/"${ENV_FILE}" set +o allexport
and then use the variable from that env file to do the rest of the logic in bash.
why do I do anything in bash?
cause I very much prefer being able to see a terminal command being executed in real-time and see what it does and be able to
Ctrl+c
if I see the command go awry.in python, you can run a command with
subprocess
or other similar system libraries but you can't get the output in real-time or terminate a command preemptively and I really hate that. you have to wait for the command to end to see what happened.But I feel like there is something obvious I am missing (like maybe bash has an argparse library I don't know about and there is some way to inject the concept of types into it) or if there is another language entirely that fits my needs?
6 votes -
OpenBSD has reached OpenBSD of Theseus
22 votes -
A messaging app in five lines of Bash
14 votes -
Containers are chroot with a marketing budget
7 votes -
Truly understand your BASH programs with these debugging techniques
1 vote -
Harden your Linux server using SSH keys (and turn off password auth)
8 votes -
SerenityOS at Handmade Seattle
4 votes -
Unix philosophy without left-pad, Part 2: Minimizing dependencies with a utilities package
9 votes -
Following the Unix philosophy without getting left-pad
4 votes -
Benno Rice: What UNIX Cost Us
10 votes -
rc.d belongs in libexec, not etc
5 votes -
The UNIX and the Echo
5 votes -
Desed: a debugger for sed
14 votes -
Oil 0.8.pre4: The Biggest Shell Programs in the World
7 votes -
Technical reasons to choose FreeBSD over GNU/Linux
4 votes -
The most surprising Unix programs
15 votes -
The growth of command line options, 1979 - present
8 votes -
LPE and RCE in OpenSMTPD (CVE-2020-7247)
6 votes -
[CVE-2019-14899] Inferring and hijacking VPN-tunneled TCP connections
7 votes -
Redox OS: Real hardware breakthroughs, and focusing on rustc
14 votes -
OpenBSD 6.6
10 votes -
Ken Thompson's Unix password
27 votes -
xv6: A Reimplementation Of Unix Version 6 (PDF)
5 votes -
Which language would you pick to completely rewrite BSD, Linux, etc.?
It'd my understanding that C has stuck around in the UNIX world for so long, nearly half a century, mostly due to the inertia of legacy code. If you could snap your fingers and magically port/fork...
It'd my understanding that C has stuck around in the UNIX world for so long, nearly half a century, mostly due to the inertia of legacy code.
If you could snap your fingers and magically port/fork the entire stack of open source codebases to the language of your choice, which would you pick and why?
20 votes -
Awk by example
11 votes -
aerc: Email Client for the Terminal
17 votes -
…and in the end there will be the command line.
18 votes -
OpenBSD 6.5 Is Released!
11 votes -
Write Yourself A Git - write your own version control to help understand git internals
7 votes -
Why OpenBSD Rocks
16 votes -
What DE and distro do you use and why?
I'm curious as to what the Tildes Linux/BSD community (and I suppose other answers like Windows or MacOS would be acceptable, though they may feel a bit more dry) use for their desktop. I imagine...
I'm curious as to what the Tildes Linux/BSD community (and I suppose other answers like Windows or MacOS would be acceptable, though they may feel a bit more dry) use for their desktop. I imagine that Ubuntu and Gnome will dominate the answers as you would expect, but maybe you'll surprise me. Personally, I'm on Arch Linux with i3-gaps. I use Arch because I enjoy the DIY aspect of Linux as well as the aur and slim nature of Arch. I'd also be lying if I didn't say I use it partially just because I like the "pacman" pun.
As for i3-gaps, I think that WMs are generally more customizable and good for 'ricing', plus they go with my workflow and are convenient in that they load faster and the likes, though I have to admit I have only ever used i3 (I've been considering trying out bspwm). So, what do you guys use? You can also of course share more information such as your shell or DM if you wanted, though I highly doubt anyone cares what display manager you us or anything.
24 votes -
Using Vim to take time-stamped notes
8 votes -
Switching from Linux to BSD: What do you miss?
There seems to be a trend lately of people switching over to BSD operating systems. Having read some blog posts on the matter and now given the recent system-d controversy, I'm genuinely curious...
There seems to be a trend lately of people switching over to BSD operating systems. Having read some blog posts on the matter and now given the recent system-d controversy, I'm genuinely curious to give FreeBSD or OpenBSD a go as my main OS.
For those who have switched over to BSD, what are some problems you've encountered and/or what are some things you miss?
31 votes -
The Source History of Cat
19 votes -
Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs
7 votes -
Getting started with qemu
9 votes -
Where Vim Came From
20 votes -
The Tragedy of systemd
13 votes -
SDF Public Access UNIX System .. Est. 1987
11 votes -
Michael MacInnis: Oh a new Unix shell - BSDCan 2018
6 votes -
Battle of the Schedulers: Linux's CFS vs FreeBSD's ULE
7 votes -
Where GREP Came From - Computerphile
21 votes -
NetBSD 8.0 Release Candidate 2
7 votes -
What's in a git repo?
Okay, I know the obvious answer is the history of the files. But how can I, from the command line, really understand what is hiding inside that .git directory? Today I was doing one of my periodic...
Okay, I know the obvious answer is the history of the files. But how can I, from the command line, really understand what is hiding inside that .git directory?
Today I was doing one of my periodic disk space audits, trying to figure out where my usage goes. This comes from having a 64GB drive mounted as /home on my Linux laptop. I found some 15G of old video files to delete today, so I'm no longer as pressed for space. But my interest was piqued by one thing I have downloaded from Github that is ~120 megs for a very simple program. Poking around further I find that most of that usage is a single file:
$ ls -lh withExEditorHost/.git/objects/pack/pack-df07816cd15fb091439112029c28ebc366501652.pack -r--r--r-- 1 elijah elijah 102M Mar 14 23:28 withExEditorHost/.git/objects/pack/pack-df07816cd15fb091439112029c28ebc366501652.pack $ file withExEditorHost/.git/objects/pack/pack-df07816cd15fb091439112029c28ebc366501652.pack withExEditorHost/.git/objects/pack/pack-df07816cd15fb091439112029c28ebc366501652.pack: Git pack, version 2, 299 objects $
Is there a
unzip
ortar xzf
equivalent for Git pack files? Naive usage ofgit unpack-file
is only generating errors for me.17 votes -
OpenBSD on my fanless desktop computer - Roman Zolotarev
6 votes -
OpenBSD pledge and unveil [security] [system calls]
4 votes -
Post your setup!
A thread to post your desktop (or laptop) setups - what OS you use, what desktop environment you use, what window manager you use, what editor you use, what terminal emulator you use etc.
24 votes