programs we use

System Util

ncdu - TUI command line disk usage analyzer

also lets you delete stuff.

# analyze current working dir, stay in the same filesystem
ncdu -x

Bscp - Secure and efficient copying of block devices

Bscp copies a single file or block device over an SSH connection, transferring only the parts that have changed.

In other words, it handles the edge case where rsync fails.

# The default BLOCKSIZE is 65536 (64 KiB).
# The default HASH algorithm is sha256 (SHA-256).
bscp SRC HOST:DEST [BLOCKSIZE] [HASH]

link: https://bscp.njh.eu/

Midnight Commander - TUI file manager

mc

Try using it over the network too, once you have it open:

cd sftp://user@host

or if that doesnt work

cd sh://user@host

selectdefaultapplication - Set MIME type handlers and finally have it work

https://github.com/magnus-ISU/selectdefaultapplication which is a fork of https://github.com/sandsmark/selectdefaultapplication.

This is the only tool we’ve found that actually lets us easily set all the things we need to to get programs to open the way we want.

grep & find - search stuff

these don’t really need introduction. here’s some recipes.

# recursive grep but better because it ignores dev nodes
find /path -print0 -type f | xargs -0 grep 'pattern'

# same thing but don't traverse mounts
find /path -print0 -xdev -type f | xargs -0 grep 'pattern'
# filter the contents of a single directory (better than `ls | grep`)
# -mindepth 1 prevents printing parent dir
# -maxdepth 1 prevents recursing deeper
find /path -mindepth 1 -maxdepth 1 [args...]
# Learn what changes to the filesystem a different process is making
# This detects files with modification dates newer than the checkpoint
touch /tmp/checkpoint
some_command_you_want_to_learn_about
find / -newer /tmp/checkpoint

# Same thing but for access time. Only works if you're using atime as a mount
# option, and not relatime or noatime.
touch /tmp/checkpoint
some_command_you_want_to_learn_about
find / -neweraa /tmp/checkpoint

ssh-keygen - ssh key management for OpenSSH

# change the passphrase on a private key (or remove it)
ssh-keygen -p -f path/to/key

Multimedia

cdw - TUI CD/DVD/Bluetooth reader/writer

cdw

mpv - CLI media player

mpv <file|url|whatever>

swiss army knife of playing media. if you install yt-dlp too it can even play youtube videos directly!

cmus - TUI music player

good tutorial in

man 7 cmus-tutorial

works well even with networked filesystems!

Data Processing

yq (tomlq, etc.) - jq wrapper for YAML/XML/TOML documents

https://github.com/kislyuk/yq

Basically, use a jq query, but run yq or tomlq instead of jq. It’ll parse the input, convert it to json, then feed it to jq. By default it will output whatever jq returns as-is, but you can ask it to convret it back to the original format too.

Gentoo

# run this on the thingy that builds binary packages to
# rebuild the metadata index
emaint binhost --fix

eclean - clean up source/binary package cache

# delete source for anything without an ebuild in any repos
eclean-dist

# delete source for anything that isn't installed
eclean-dist -d

# delete binary packages from /usr/portage/packages for anything
# without an ebuild
eclean-pkg

# delete binary packages from /usr/portage/packages for anything
# that isn't installed
eclean-pkg -d

### clear out old kernels
eclean-kernel

Git

Sublime Merge - GUI git frontend

in general, it’s a good program for dealing with merges/rebases. we use it regularly. Free version only has light mode :/.

rewrite author while keeping commit dates

git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -f <commit/branch before wrong author and email, or --root to rebase all>

via stackoverflow

git-backdate - helps you to change the date of one or multiple commits to a new date or a range of dates.

git-backdate

Code

tokei - lines-of-code counter

https://github.com/XAMPPRocky/tokei

vi@localhost ~/p/artemis.sh (mistress)> tokei
===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 JavaScript              1           93           63           17           13
 JSON                    2           11           11            0            0
 Nix                     1           63           44            6           13
 Ruby                    1          119           90           11           18
 Sass                    4          162          118           14           30
 Shell                   3           86           73            4            9
 Plain Text              7          498            0          408           90
 YAML                    1           43           21           17            5
-------------------------------------------------------------------------------
 HTML                   11         2323         2209           97           17
 |- CSS                  5          126          114           12            0
 |- JavaScript           2          661          576           40           45
 (Total)                           3110         2899          149           62
-------------------------------------------------------------------------------
 Markdown               98        10262            0         7307         2955
 |- BASH                 2           22           21            0            1
 |- Python               1           19            6            9            4
 (Total)                          10303           27         7316         2960
===============================================================================
 Total                 129        13660         2629         7881         3150
===============================================================================

Irssi Scripts

hlscroll - scroll through highlighted messages

Not our script, but we modified it slightly to make it work with modern irssi. Put it in ~/.irssi/scripts/autorun/. Read the script for how to set up keybinds

hlscroll.pl