This page kind of serves three purposes: part of my Unix tutorial track, a place to recommend stuff to more experienced Unixers, and a personal checklist for when I set up a new system. Not everything's aimed at all three.
For packages that I recommend installing through language package managers instead of distribution ones, I'll indicate it with a prefix.
Basic terminal utilities
-
nano
- text editor. Easy to learn (it shows help on the bottom by default) and yet quite configurable and powerful.Nano's often derided as primitive among experienced Unixers (editors more popular with them are Vim and Emacs), but I think this reputation's undeserved. I've written more about the unsung power and efficiency of Nano.
-
fish
- "friendly interactive shell". My current shell of choice. The main sellings points are syntax highlighting, history-based autosuggestions, and better tab completion without needing to install extra stuff and configure a whole bunch of crap (like you do to get those things withzsh
). I've written more about Fish and what's so great about it. -
git
- one of the most popular version control systems. I use it for all kinds of stuff, even besides code.
Window manager and main graphical applications
-
sway
- A tiling window manager with no desktop and an incredibly productive way to use a computer. Great configuration and can reload the config without restarting. It's a remake of i3 for Wayland instead of X.Unfortunately Sway outright prevents running as root, so I had to modify the source to get a satisfactory version. Building was easy enough though.
-
alacritty
- my currently preferred terminal emulator. Actually leaves out tabbing, which is a pain if you use a floating-only window manager but I think Sway actually makes it unnecessary. -
conky
- a configurable tool to easily get system status information. Most useful as a statusbar for Sway or DWM. -
dmenu
- an easy launcher solution for simple, tiling window managers like DWM and Sway.
Networking
-
(pip)
httpie
,curl
,wget
- swiss army knives of HTTP (and some other protocols).curl
andwget
are both classics written in C;wget
is GNU software andcurl
is MIT licensed.httpie
is a much younger implemention in Python (also BSD-licensed) and is nicer in just about every way, but doesn't support everything the others do. I keep all three installed. -
(pip)
youtube-dl
- Download videos from Youtube and a few other sites. Yeah, apparently this isn't illegal... -
nmap
- "network mapper". A tool for network exploration and security auditing, widely known as a port scanner. The package also containsncat
, which is a more sophisticated version ofnc
that supports TLS! -
tor
- The Onion Router, a network anonymity tool. I recommend you read about this if you haven't heard of it. -
wireshark
- a renowned packet analysis tool. -
openvpn
- open source VPN server and client. I followed this tutorial to set one up.
Resources and monitoring
-
lsof
- list open files. It's a little different fromfstat
; I'm not sure if either can do anything the other can't, but I findlsof
convenient to have. -
htop
- liketop
, but looks nicer (has color). -
iftop
- liketop
, but for network traffic. -
vnstat
- analyze network traffic statistics over long times.
Misc CLI utilities
-
gnupg
- GNU Privacy Guard, a renowned encryption tool. Antiquated, but still used. -
rsync
- swiss army knife of copying and backups. The--delete
flag is one of the biggest things that makes it worth having overcp
in my opinion. -
pv
- "pipe view". Monitor progress of data through a pipeline.cmd1 | pv | cmd2
and it pipescmd1
intocmd2
, but shows you the progress. -
tmux
- "terminal multiplexer". It has a lot of features I don't know about, but among them are the ability to use a terminal window in the fashion of a tiling window manager and to reconnect to sessions that get interrupted (for example, if the network cuts out while you're usingssh
). I haven't taken the time to really learntmux
but I want to. -
entr
- "Event Notify Test Runner". Monitors files and runs a given command when they change. As of this writing I'm using it on this server. -
sudo
- more sophisticated account permission control thansu
. Due to the way Unix treats the root account, even if your system is single-user, this is probably worth setting up if it isn't already. -
jq
- I'm not sure what it stands for, but it pretty-prints and manipulates JSON data. "sed
for JSON". -
(cargo)
tokei
- Count lines of code in a directory. Distinguishes blank lines and comments from code lines and categorizes by language. Lots of other handy functionality. -
rlwrap
- ever used a CLI application that really needed some goddamn line editing? Use the ReadLine Wrapper.
Hardware and filesystems
-
dmidecode
- massive amount of info on all hardware. I can't think of any commonly useful information I don't know how to get without this command, butdmidecode
simplifies things. -
zfsnap
- makes automatic ZFS snapshots slightly easier. -
snapper
- like zfsnap for BTRFS.
Media and file formats
-
mpv
- terminal-based music and video player. -
sox
- "SOund eXchange" is what this is apparently supposed to stand for. It's not as nice asmpv
for playing music, but it's the most convenient way I know of to record audio from my laptop microphone. -
obs
- flexible all-in-one app for recording and streaming. -
ffmpeg
- swiss army knife of multimedia manipulation. -
libreoffice
- open source tool that can read "document" formats like.xlsx
, if you ever have the displeasure of needing to work with those. -
antiword
- convert.doc
files to plaintext. -
zip
- tool to work with the Windows-standard.zip
file format.unzip
may be a separate package. -
rar
,unrar
- tools for.rar
files. -
eog
- "eye of GNOME" (image viewer). It's not like you need a program like this to view images, but I find it useful for viewing all the image files in a directory in a single window. -
tesseract
- Optical Character Recognition for Unix! FOSS, and works out of the box. -
speech-dispatcher
,espeak
- speech synthesis CLI tools. I've had success with espeak on Linux and speech-dispatcher on FreeBSD. -
zbar
- read QR codes.
Art production tools
-
lmms
- Linux MultiMedia Studio, for writing music. Not great, but it's the only free one I know of. -
gimp
- the GNU Image Manipulation Program. Again, I have plenty of gripes with it, mostly interface-related, but it's free and has been indispensible to me. -
ImageMagick
- libraries and CLI tools for image manipulation.
Other
- To get Linux compatibilty on FreeBSD, install
linux_base-c7
and load kernel moduleslinux
,linux64
, andlinux_common
.