1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-11-14 08:29:03 -08:00
rc/README.md

1168 lines
34 KiB
Markdown
Raw Normal View History

2013-06-28 05:51:52 -07:00
## obligatory personal dotfiles repository
2013-06-28 05:22:14 -07:00
_(plus some little shell scripts)_
2019-06-03 09:33:02 -07:00
quick install for random boxes:
```
cd && curl -L https://github.com/notwa/rc/archive/master.tar.gz | tar zx && mv rc-master rc && rc/install
```
2021-08-06 08:10:06 -07:00
the following shells are taken into consideration, ordered from most to least compatible:
* zsh
* bash
* dash
* ash (busybox)
2021-09-22 18:43:23 -07:00
refer to the [compatibility table](#compatibility) for specifics.
2021-08-01 00:35:56 -07:00
**NOTE:** everything below this line is overwritten and automatically [regenerated.](/regenerate)
2016-06-27 06:02:53 -07:00
<!-- DOCUMENT -->
2021-07-30 17:59:30 -07:00
## shell functions
2021-08-01 00:38:05 -07:00
### [argc](/sh/argc#L7)
2021-08-01 09:27:25 -07:00
validate the number of arguments in a function.
2021-08-06 08:20:02 -07:00
2021-08-01 00:38:05 -07:00
```sh
2021-08-01 09:27:25 -07:00
# usage: myfunc() { argc -(eq|le|ge) [0-9] "$0" "$@" || return; }
2021-08-01 00:38:05 -07:00
myfunc() {
2021-08-01 02:14:30 -07:00
# use one of the following:
argc -eq N "$0" "$@" || return
argc -le N "$0" "$@" || return
argc -ge N "$0" "$@" || return
# where N is an integer between 0 and 9.
2021-08-01 00:38:05 -07:00
}
```
2021-09-23 06:54:10 -07:00
### [arith](/sh/arith#L10)
2021-07-30 17:59:30 -07:00
perform arithmetic using the shell and display the result.
2021-08-01 09:27:25 -07:00
see also [`hex`](#hex) and [`bin`](#bin).
2021-08-01 09:46:52 -07:00
this example requires zsh:
2021-08-01 09:27:25 -07:00
```
% db=6
% noglob arith 10**(db/20.)
1.9952623149688795
```
2021-07-30 17:59:30 -07:00
2021-09-23 07:17:40 -07:00
### [aur](/sh/aur#L8)
2021-07-30 17:59:30 -07:00
download, edit, make, and install packages from the
[AUR.](https://aur.archlinux.org/)
it's a little broken.
2021-08-01 09:27:25 -07:00
```
$ aur -eyoI cmdpack-uips applyppf
```
2021-09-23 06:54:10 -07:00
### [autosync](/sh/autosync#L9)
2021-07-30 17:59:30 -07:00
combine `inotifywait` and `rsync`.
this is sometimes nicer than `ssh`-ing into a server and running `vim` remotely.
2021-09-23 06:54:10 -07:00
### [bak](/sh/bak#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:46:52 -07:00
backup files by creating copies and appending ".bak" to their names.
2021-08-01 09:27:25 -07:00
this calls itself recursively to avoid clobbering existing backups.
```
$ touch -d '2001-12-25 16:30:00' butts
$ bak butts
$ touch butts
$ bak butts
$ ls -l
total 0
-rw-r--r-- 1 notwa None 0 Aug 1 08:02 butts
-rw-r--r-- 1 notwa None 0 Aug 1 08:02 butts.bak
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts.bak.bak
```
2021-08-01 00:38:05 -07:00
2021-08-23 04:53:27 -07:00
### [baknow](/sh/baknow#L7)
2021-08-01 00:38:05 -07:00
2021-08-23 04:53:27 -07:00
backup files by appending their timestamps given by [`now`.](#now)
2021-08-01 09:27:25 -07:00
```
$ touch -d '2001-12-25 16:30:00' butts
$ baknow butts
$ baknow butts
cp: overwrite 'butts.2001-12-26_01800000.bak'? n
$ ls -l
total 0
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts.2001-12-26_01800000.bak
```
2021-09-23 06:54:10 -07:00
### [baks](/sh/baks#L8)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
backup files by copying each and appending *the current* date-time,
irrespective of when the files were modified or created.
```
$ touch -d '2001-12-25 16:30:00' butts
$ baks butts
$ baks butts
$ ls -l
total 0
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts.21-08-01_14-54-07.bak
-rw-r--r-- 1 notwa None 0 Dec 25 2001 butts.21-08-01_14-54-09.bak
```
2021-09-23 06:54:10 -07:00
### [bin](/sh/bin#L10)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
perform arithmetic using the shell and display the result as
an unsigned 8-bit integer in binary.
see also [`arith`](#arith) and [`hex`](#hex).
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
```
$ bin 123
01111011
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [cdbusiest](/sh/cdbusiest#L7)
2021-07-30 17:59:30 -07:00
cd to the directory with the most files in it, counted recursively.
2021-08-01 09:27:25 -07:00
```
$ cd
$ cdbusiest
152364 src
$ pwd
/home/notwa/src
```
2021-09-23 06:54:10 -07:00
### [colors](/sh/colors#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
display all combinations of foreground and background terminal colors.
this only includes the basic 16-color palette.
2021-07-30 17:59:30 -07:00
excluding boilerplate, this script is a mere a 76-characters long!
2021-08-01 09:27:25 -07:00
![terminal colors](https://eaguru.guru/t/terminal-colors.png)
2021-07-30 18:08:59 -07:00
### [compandy](/sh/compandy#L5)
2021-07-30 17:59:30 -07:00
generate compand arguments for ffmpeg audio filters.
this is kinda pointless now that acompressor is wildly supported.
2021-09-23 06:54:10 -07:00
### [setup_clang_ubuntu (sh/compile)](/sh/compile#L7)
2021-08-01 09:27:25 -07:00
print (but don't execute) the commands necessary to install
a fairly recent version of clang on ubuntu-based distros.
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
```sh
$ setup_clang_ubuntu bionic
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
echo -n "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
# deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
# 12
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
# deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
" > /etc/apt/sources.list.d/llvm-toolchain-bionic.list
apt-get update
apt-get install clang-12
apt-get install lld-12
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 1200
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-12 1200
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-12 1200
```
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [compile](/sh/compile#L50)
2021-07-30 17:59:30 -07:00
compile single-file C and C++ programs, messily.
supports gcc and clang on \*nix, and mingw64 gcc, msvc clang,
and regular msvc on Windows. tested on x86\_64 and on ARMv7 as well.
does not support MacOS, maybe someday…
defaults to gnu11 and gnu++1z as C and C++ standards respectively.
defaults to clang, gcc, and msvc in that order.
`compile` attempts to guess the most sane switches for any program, so that compilation may reduce to:
2021-08-01 09:27:25 -07:00
```sh
# debug build
compile rd.c
compile debug rd.c
# debug build with warning/error flags defined in .-shrc
# (requires .zshrc for global alias expansion)
compile WHOA rd.c
# likewise for C++
compile WHOA WELP rd.cc
compile WHOA WELP rd.cpp
# "derelease" build (release build with debug information)
compile derelease WHOA rd.c
# release build (with symbols stripped)
compile release WHOA rd.c
# hardened build (only useful on *nix)
compile hardened WHOA rd.c
# specifying compiler
compile gcc WHOA rd.c
compile msvc WHOA rd.c
compile release clang WHOA rd.c
# compile and execute (FIXME: writing to /tmp is a security concern)
compile derelease rd.c && /tmp/rd
```
2021-07-30 17:59:30 -07:00
2021-09-23 07:17:40 -07:00
### [confirm](/sh/confirm#L7)
2021-07-30 17:59:30 -07:00
display a simple yes-or-no prompt and return 0-or-1 respectively.
```
$ confirm && echo yay || echo nay
Continue? [y/N] y
yay
$ confirm && echo yay || echo nay
Continue? [y/N] n
nay
```
2021-08-01 09:46:52 -07:00
a real world example:
```
% g1 && confirm && git commit -a --amend --no-edit
daf84e3 document a ton of stuff
Continue? [y/N] y
[master 92bdf76] document a ton of stuff
Date: Sun Aug 1 09:27:25 2021 -0700
20 files changed, 406 insertions(+), 29 deletions(-)
```
2021-09-23 07:17:40 -07:00
### [countdiff](/sh/countdiff#L9)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
count the number of lines changed between two files.
**TODO:** don't use git for this. also, use patience algorithm.
```
$ countdiff README-old.md README.md
739
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [cutv](/sh/cutv#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
(WIP) create a short clip of a long video file.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [days](/sh/days#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 00:38:05 -07:00
compute the number of days since a given date.
2021-07-30 17:59:30 -07:00
```
$ days 'January 1 1970'
18838
```
2021-09-23 06:54:10 -07:00
### [dbusiest](/sh/dbusiest#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
list directories ordered descending by the number of files in them,
counted recursively. see also [`cdbusiest`.](#cdbusiest)
```
$ cd
$ dbusiest | head -n3
152364 src
46518 work
20903 play
```
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [dfu](/sh/dfu#L9)
2021-07-30 17:59:30 -07:00
pretty-print `df` in GiB.
2021-08-01 09:27:25 -07:00
```
$ dfu
Filesystem Used Max Left Misc
/dev 0.00 0.46 0.46 0.00
/ 17.20 23.22 6.01 1.27
```
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [disf](/sh/disf#L8)
2021-07-30 17:59:30 -07:00
disassemble a single function from an unstripped executable, unreliably.
2021-08-06 08:20:02 -07:00
### [document](/sh/document#L144)
2021-08-01 00:38:05 -07:00
generate a markdown file out of docstrings in shell scripts.
**TODO:** describe. i have a rough outline written in my scrap file.
2021-09-23 06:54:10 -07:00
### [e](/sh/e#L7)
2021-07-30 17:59:30 -07:00
wrap around `$EDITOR` to run it as root if necessary.
this still needs some work to detect root-owned directories.
```
$ e /etc/sudoers
[sudo] password for notwa:
```
2021-09-23 06:54:10 -07:00
### [ea](/sh/ea#L8)
2021-08-01 00:38:05 -07:00
2021-08-01 10:29:45 -07:00
**TODO:** document.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [echo2](/sh/echo2#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
print arguments joined by spaces to stderr without parsing anything.
```
$ echo -e 'this\nthat' those
this
that those
$ echo2 -e 'this\nthat' those
-e this\nthat those
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [explore](/sh/explore#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
open a single directory in `explorer.exe`, defaulting to `$PWD`.
2021-08-01 00:38:05 -07:00
2021-09-23 07:17:40 -07:00
### [ff](/sh/ff#L7)
2021-08-01 00:38:05 -07:00
2021-08-02 06:50:53 -07:00
select a file from a given or current directory using
[`fzy`.](https://github.com/jhawthorn/fzy)
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [ghmd](/sh/ghmd#L10)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
convert a markdown file to HTML in the style of GitHub.
note that this uses GitHub's API, so it requires internet connectivity.
this script utilizes the CSS provided at
[sindresorhus/github-markdown-css.](https://github.com/sindresorhus/github-markdown-css)
2021-08-01 00:38:05 -07:00
2021-08-01 09:46:52 -07:00
```
~/sh/ghmd < ~/rc/README.md > ~/rc/README.html
```
2021-09-23 06:54:10 -07:00
### [has](/sh/has#L7)
2021-07-30 17:59:30 -07:00
print the result of `which` if the program is found, else simply return 1.
2021-08-01 09:46:52 -07:00
```
export CC="$(has clang || has clang-3.8 || has gcc)"
```
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [hex](/sh/hex#L10)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
perform arithmetic using the shell and display the result as
an unsigned 32-bit integer in hexadecimal.
see also [`arith`](#arith) and [`bin`](#bin).
```
$ hex 0x221EA8-0x212020
0000FE88
```
2021-07-30 17:59:30 -07:00
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists a hex(1) program provided by
the *basez* package that i don't use.
2021-09-23 06:54:10 -07:00
### [ify](/sh/ify#L7)
2021-07-30 17:59:30 -07:00
pipe one command through another, so you can still pass arguments to the former.
this is mainly useful for aliases. 99% of the time you'll use this with `less`.
```
$ alias ll="ify less ls -ACX --group-directories-first --color=force"
$ ll /etc
```
2021-09-23 06:54:10 -07:00
### [is_empty](/sh/is_empty#L7)
2021-07-30 17:59:30 -07:00
return 0 if the directory given by argument is empty.
2021-09-23 06:54:10 -07:00
### [isup](/sh/isup#L7)
2021-07-30 17:59:30 -07:00
return 0 if a given website returns a 2xx HTTP code.
2021-08-02 06:50:53 -07:00
```
$ isup google.com && echo yay || echo nay
yay
$ isup fdhafdslkjgfjs.com && echo yay || echo nay
nay
```
2021-09-23 06:54:10 -07:00
### [maybesudo_ (sh/maybesudo)](/sh/maybesudo#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
mimic certain features of `sudo` for systems without it installed.
as it stands, this mostly just handles some environment variables.
2021-08-01 00:38:05 -07:00
2021-08-01 09:46:52 -07:00
try this: `maybesudo_ -u "$USER" printenv`
2021-09-23 06:54:10 -07:00
### [minutemaid](/sh/minutemaid#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 09:46:52 -07:00
return 0 and/or execute a command if the current minute
is divisible by a given number. note that a minute is
relative to the seconds since the epoch, not the minute of the hour.
this ensures that commands will run roughly every N minutes,
regardless of the minute hand on the clock.
2021-07-30 17:59:30 -07:00
```
# crontab usage:
* * * * * minutemaid 9 ~/work/do_my_bidding # runs every nine minutes
```
2021-09-23 06:54:10 -07:00
### [monitor](/sh/monitor#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
this is [watch(1)](https://www.man7.org/linux/man-pages/man1/watch.1.html)
loosely reimplemented as a shell script.
2021-08-01 09:46:52 -07:00
```
usage: monitor [-fs] [-n {period}] {command} [{args...}]
```
2021-07-30 17:59:30 -07:00
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists monitor(1) programs provided by
the *389-ds-base* and *dmucs* packages that i don't use.
2021-09-23 06:54:10 -07:00
### [noccom](/sh/noccom#L9)
2021-07-30 17:59:30 -07:00
strip C-like comments; both multi-line and single-line.
2021-09-23 06:54:10 -07:00
### [note](/sh/note#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
act like [`echo2`,](#echo2) but use a bright color to stand out more.
2021-08-01 00:38:05 -07:00
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists a [note(1)](https://www.daemon.de/projects/note/)
program provided by the *note* package that i don't use.
2021-09-23 06:54:10 -07:00
### [now](/sh/now#L7)
2021-07-30 17:59:30 -07:00
print a date-time (UTC) in a sortable format.
this takes a date or file as an argument,
else it defaults to the current time.
```
$ now
2019-05-27_35083906
$ now ~/sh/monitor
2017-03-14_82387259
$ now '@1234567890'
2009-02-13_84690000
```
2021-09-15 22:03:42 -07:00
### [oxo](/sh/oxo#L17)
upload files (or stdin) to [0x0.st.](https://0x0.st)
this script exits with the number of failed uploads; up to 255 at once.
file retention period (30 to 365 days) is only computed for arguments.
directories are skipped. please review the terms of service
[on the website](https://0x0.st) before uploading files.
```
$ echo test | oxo
https://0x0.st/sj2.txt
oxo: successfully uploaded 1 file
$ oxo ~/play/{hey,you,fake,empty}
https://0x0.st/-3rz.txt
2021-09-15 23:03:46 -07:00
oxo: expires in 365 days: /home/notwa/play/hey
2021-09-15 22:03:42 -07:00
https://0x0.st/-3ri.txt
2021-09-15 23:03:46 -07:00
oxo: expires in 365 days: /home/notwa/play/you
2021-09-15 22:03:42 -07:00
oxo: no such file: /home/notwa/play/fake
oxo: skipping empty file: /home/notwa/play/empty
oxo: successfully uploaded 2 files
oxo: failed to upload 2 files
```
2021-09-23 06:54:10 -07:00
### [pacbm](/sh/pacbm#L9)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
display and order installed pacman packages by their filesize ascending,
and their sum. requires `expac`.
2021-07-30 17:59:30 -07:00
```
$ pacbm | head -n -1 | tail -2
2021-08-01 02:14:30 -07:00
204.78M clang
235.44M linux-firmware
2021-07-30 17:59:30 -07:00
```
2021-09-23 06:54:10 -07:00
### [pause](/sh/pause#L7)
2021-07-30 17:59:30 -07:00
2021-08-01 09:27:25 -07:00
pause — the companion script of [`confirm`.](#confirm)
2021-07-30 17:59:30 -07:00
```
$ pause
Press any key to continue
$
```
2021-09-23 06:54:10 -07:00
### [pegg](/sh/pegg#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
download and (pip) install a Python "egg" from a project on GitHub,
defaulting to the master branch. this uses [`pippy`](#pippy) internally.
```sh
# install the development version of https://github.com/rthalley/dnspython
$ pegg rthalley dnspython
# or instead install the latest stable version (as of writing)
$ pegg rthalley dnspython 3933b49
```
2021-08-01 00:38:05 -07:00
### [pippy](/sh/pippy#L7)
2021-08-01 09:27:25 -07:00
install Python packages using pip,
but only update their dependencies as required.
this uses [`maybesudo`](#maybesudo_-shmaybesudo) internally.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [pre](/sh/pre#L7)
2021-07-30 17:59:30 -07:00
dump all the `#define`s that `$CC $CPPFLAGS $CFLAGS $LDFLAGS` would result in.
2021-08-01 09:27:25 -07:00
```
$ pre | shuf | head -n10
#define __GNUC_MINOR__ 3
#define __SIZEOF_LONG__ 4
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __ORDER_BIG_ENDIAN__ 4321
#define __SIZEOF_FLOAT__ 4
#define __INTMAX_MAX__ 0x7fffffffffffffffLL
#define __INT64_C(c) c ## LL
#define __UINT16_MAX__ 0xffff
#define __DEC64_MANT_DIG__ 16
#define __DBL_HAS_INFINITY__ 1
```
2021-07-30 17:59:30 -07:00
2021-08-02 14:09:31 -07:00
### [preload](/sh/preload#L3)
handle dependencies within the [`~/sh/`](/sh) directory.
2021-08-06 08:20:02 -07:00
2021-08-02 14:09:31 -07:00
this function contains more comments than code, so you should read it.
2021-09-23 06:54:10 -07:00
### [psbm](/sh/psbm#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
display and order processes by their memory usage ascending, and their sum.
```
$ psbm | head -n -1 | tail -2
185.08M 1163 chromium
199.95M 1060 chromium
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [randir](/sh/randir#L9)
2021-07-30 17:59:30 -07:00
display a random directory in the current working directory.
```
$ randir
./sh
```
2021-09-23 06:54:10 -07:00
### [refresh](/sh/refresh#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
invoke `hash -r`.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [rot13](/sh/rot13#L9)
2021-08-02 06:50:53 -07:00
rot13 with numbers rotated as well.
```
$ rot13 <<< abc123
nop678
```
**NOTE:** there also exists rot13(1) programs provided by
the *bsdgames* and *hxtools* packages that i don't use.
2021-09-23 06:54:10 -07:00
### [rs](/sh/rs#L7)
2021-07-30 17:59:30 -07:00
record screen. does not record audio.
currently only works on Windows (gdigrab).
i'm sure there's something equivalent for Linux.
2021-08-02 06:50:53 -07:00
**TODO:** consider renaming because rs(1) already exists.
2021-09-23 06:54:10 -07:00
### [sc](/sh/sc#L40)
2021-07-30 17:59:30 -07:00
upload given files to a webserver and return a direct link for sharing them.
you'll want to tweak this if you use it yourself.
this contains some extra logic for screenshots created by `scropt`.
2021-08-02 06:50:53 -07:00
**TODO:** consider renaming because sc(1) already exists.
2021-09-23 06:54:10 -07:00
### [scramble](/sh/scramble#L9)
2021-07-30 17:59:30 -07:00
scrambles text in a predictable way using regex.
sacbremls ttex in a pdrceailtbe way unsig reegx.
2021-08-02 06:50:53 -07:00
**TODO:** consider renaming because scramble(1) already exists.
2021-09-23 06:54:10 -07:00
### [screeny](/sh/screeny#L7)
2021-07-30 17:59:30 -07:00
2021-08-02 06:50:53 -07:00
handle GNU screens.
these days, i typically use tmux instead.
2021-07-30 17:59:30 -07:00
2021-08-02 14:09:31 -07:00
### [scropt](/sh/scropt#L4)
2021-07-30 17:59:30 -07:00
run `scrot` through `optipng` and save the result to `~/play/$(now).png`.
2021-08-02 06:50:53 -07:00
```
$ ~/sh/sc $(~/sh/scropt -s -d0.5)
```
2021-07-30 17:59:30 -07:00
2021-08-02 23:32:30 -07:00
### [shcom](/sh/shcom#L7)
comment out text from stdin and wrap it in a markdown blockquote
for docstrings. this contains some extra logic for
handling already-commented and already-quoted text.
this allows `shcom` to be used with vim's visual selections
to update existing code examples.
as a simple example, `echo hey | shcom` produces, verbatim:
```
hey
```
2021-09-23 06:54:10 -07:00
### [similar](/sh/similar#L9)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
highlight adjacent lines up to the first inequivalent character.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [slit](/sh/slit#L9)
2021-07-30 17:59:30 -07:00
view specific columns of text.
2021-09-23 06:54:10 -07:00
### [slitt](/sh/slitt#L9)
2021-07-30 17:59:30 -07:00
view specific columns of text.
this version of `slit` uses tabs for its field separators.
2021-08-23 04:53:27 -07:00
### [sortip](/sh/sortip#L7)
sort lines numerically by IPv4 segments.
2021-09-23 07:17:40 -07:00
### [sram](/sh/sram#L7)
2021-07-30 17:59:30 -07:00
convert between a couple saveram formats for N64 emulators.
2021-08-02 23:32:30 -07:00
### [stfu](/sh/stfu#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
invoke a command, silencing stdout and stderr *unless* the command fails.
**NOTE:** don't use `stfu` for handling sensitive data or commands!
use it for 7zip.
2021-08-02 23:32:30 -07:00
note that the tail commands in the example below are from `stfu` itself;
they are echoed to reveal the temp paths for any further investigation.
2021-08-01 09:27:25 -07:00
```
$ touch butts
2021-08-02 23:32:30 -07:00
$ STFU_TAIL=5
2021-08-01 09:27:25 -07:00
$ stfu 7z a butts.7z butts
$ stfu 7z a butts.7z asses
command failed with exit status 1:
7z a butts.7z asses
2021-08-02 23:32:30 -07:00
$ tail -n 5 /tmp/stfu.CoJ0vmJsqA/out_1627942118
2021-08-01 09:27:25 -07:00
Scan WARNINGS for files and folders:
asses : The system cannot find the file specified.
----------------
Scan WARNINGS: 1
2021-08-02 23:32:30 -07:00
$ tail -n 5 /tmp/stfu.CoJ0vmJsqA/err_1627942118
2021-08-01 09:27:25 -07:00
WARNING: The system cannot find the file specified.
asses
2021-08-02 23:32:30 -07:00
2021-08-01 09:27:25 -07:00
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [mpvs (sh/streamcrap)](/sh/streamcrap#L8)
2021-08-01 00:38:05 -07:00
invoke mpv with some extra flags suited for streamed sources.
2021-09-23 06:54:10 -07:00
### [mpv_watch (sh/streamcrap)](/sh/streamcrap#L70)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
play some media in mpv with a bunch of unnecessary filters.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [mpv_stream (sh/streamcrap)](/sh/streamcrap#L91)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
watch a stream in mpv with a bunch of unnecessary filters.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [twitch (sh/streamcrap)](/sh/streamcrap#L100)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
watch a twitch stream in mpv with a bunch of unnecessary filters.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [yt (sh/streamcrap)](/sh/streamcrap#L107)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
watch a youtube video in mpv with a bunch of unnecessary filters.
2021-07-30 17:59:30 -07:00
this can be given a full URL or just a video ID.
remaining arguments are passed to mpv.
there exist several variants for more specific use cases.
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists a yt(1) program provided by
the *python3-yt* package that i don't use.
2021-09-23 06:54:10 -07:00
### [ytg (sh/streamcrap)](/sh/streamcrap#L121)
2021-07-30 17:59:30 -07:00
watch a youtube video. like `yt`, but with a preference for different formats.
2021-09-23 06:54:10 -07:00
### [ytll (sh/streamcrap)](/sh/streamcrap#L128)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
watch a stream from youtube in mpv, etcetera etcetera.
2021-07-30 17:59:30 -07:00
this is the low latency version that does not support seeking.
2021-09-23 06:54:10 -07:00
### [ytgll (sh/streamcrap)](/sh/streamcrap#L135)
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
watch a stream from youtube in mpv. like `ytll`, but with a preference for different formats.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [sum](/sh/sum#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
compute the summation of its arguments without forking processes.
this relies on the shell's built-in arithmetic operators.
```
$ sum 1 2 3
6
```
**TODO:** consider renaming because sum(1) already exists.
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [sv](/sh/sv#L9)
2021-07-30 17:59:30 -07:00
collect the lastmost value of every key.
2021-08-01 09:27:25 -07:00
the field separator can be given as its sole argument,
it defaults to a single space otherwise.
```
$ echo "alpha=first\nbeta=second\nalpha=third" | sv =
alpha=third
beta=second
```
this next example uses `sv` to only print the lastmost line
matching a pattern in each file. in other words, it uses
the filename printed by grep as the key in its key-value pairs.
2021-07-30 17:59:30 -07:00
```
2021-08-01 09:27:25 -07:00
$ cd ~/play/hash && grep -r 'ing$' . | sv :
./dic_win32.txt:WriteProfileString
./cracklib-small.txt:zoning
./english-words.txt:zooming
./usernames-125k.txt:flats_gaming
./cain.txt:zoografting
./pokemon.txt:Fletchling
./pokemon8.txt:Fletchling
2021-07-30 17:59:30 -07:00
```
2021-08-01 09:27:25 -07:00
**TODO:** rename because busybox(1) sv already exists.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [tpad](/sh/tpad#L7)
2021-07-30 17:59:30 -07:00
add a 1px transparent border around an image to prevent twitter from mangling it into a jpg.
sadly, this trick doesn't work anymore.
2021-09-23 06:54:10 -07:00
### [trash](/sh/trash#L7)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
output a given number of bytes from `/dev/random`.
```
2021-08-01 11:04:27 -07:00
$ trash 10 | xxp
3A A5 4F C7 6D 89 E7 D7 F7 0C
2021-08-01 09:27:25 -07:00
```
2021-08-01 00:38:05 -07:00
2021-09-23 06:54:10 -07:00
### [trunc](/sh/trunc#L9)
2021-07-30 17:59:30 -07:00
truncate text to fit within your terminal using the unicode character `…`.
2021-08-01 09:27:25 -07:00
```
$ echo $COLUMNS
84
$ seq 1 100 | tr '\n' ' ' | trunc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31…
```
2021-09-23 06:54:10 -07:00
### [unscreen](/sh/unscreen#L7)
2021-07-30 17:59:30 -07:00
2021-08-02 06:50:53 -07:00
handle closing of screens — this works alongside [`screeny`](#screeny).
these days, i typically use tmux instead.
2021-07-30 17:59:30 -07:00
2021-09-23 06:54:10 -07:00
### [wat](/sh/wat#L9)
2021-08-01 00:38:05 -07:00
2021-08-01 09:27:25 -07:00
wat — a better and recursive which/whence. for zsh only.
written by [leah2.](https://leahneukirchen.org/)
2021-08-01 00:38:05 -07:00
2021-09-23 07:17:40 -07:00
### [wipe](/sh/wipe#L9)
2021-07-30 17:59:30 -07:00
clear the screen and its scrollback, then print a high-contrast horizontal line.
using this, you'll know with absolute certainty that you're looking at the top of your history,
and that your terminal's scrollback didn't cap out and eat text.
**TODO:** rename because wipe(1) already exists.
2021-09-23 06:54:10 -07:00
### [xxp](/sh/xxp#L7)
2021-08-01 10:44:56 -07:00
act like `xxd -p`, but nicely formatted.
**TODO:** support `-r` (reverse) argument.
```
$ xxd -p ~/rc/install | head -n2
23212f7573722f62696e2f656e762073680a232074686973207363726970
7420697320636f6d70617469626c65207769746820666f6c6c6f77696e67
$ xxp ~/rc/install | head -n2
23 21 2F 75 73 72 2F 62 69 6E 2F 65 6E 76 20 73
68 0A 23 20 74 68 69 73 20 73 63 72 69 70 74 20
```
2021-07-30 17:59:30 -07:00
## miscellaneous
2021-09-23 06:54:10 -07:00
### [dummy (zshrc)](/home/zshrc#L67)
2021-08-02 14:09:31 -07:00
return 0, ignoring arguments.
2021-09-23 06:54:10 -07:00
### [dirprev (zshrc)](/home/zshrc#L74)
2021-07-30 17:59:30 -07:00
rotate and change to the previous directory in the directory stack
without consuming the prompt.
2021-09-23 06:54:10 -07:00
### [dirnext (zshrc)](/home/zshrc#L81)
2021-07-30 17:59:30 -07:00
rotate and change to the next directory in the directory stack
without consuming the prompt.
2021-09-23 06:54:10 -07:00
### [dirup (zshrc)](/home/zshrc#L88)
2021-07-30 17:59:30 -07:00
change to the parent directory of the current working directory
without consuming the prompt.
2021-09-23 06:54:10 -07:00
### [dirview (zshrc)](/home/zshrc#L95)
2021-07-30 17:59:30 -07:00
use a fuzzy finder to select a recent directory in the directory stack
and change to it without consuming the prompt.
2021-09-23 06:54:10 -07:00
### [OMFG (zshrc)](/home/zshrc#L177)
2021-07-30 17:59:30 -07:00
silence stdout.
2021-09-23 06:54:10 -07:00
### [STFU (zshrc)](/home/zshrc#L178)
2021-07-30 17:59:30 -07:00
silence stderr.
2021-09-23 06:54:10 -07:00
### [WHOA (zshrc)](/home/zshrc#L179)
2021-07-30 17:59:30 -07:00
expand to several C/C++ flags to ease development.
2021-09-23 06:54:10 -07:00
### [WELP (zshrc)](/home/zshrc#L180)
2021-07-30 17:59:30 -07:00
expand to C++ flags to enable a C++-as-C facade.
2021-09-23 06:54:10 -07:00
### [pl (zshrc)](/home/zshrc#L184)
2021-07-30 17:59:30 -07:00
print each argument on its own line.
2021-09-23 06:54:10 -07:00
### [tw (zshrc)](/home/zshrc#L187)
2021-07-30 17:59:30 -07:00
invoke `twitch` as a job with both stdout and stderr silenced.
2021-09-23 06:54:10 -07:00
### [reload (zshrc)](/home/zshrc#L231)
2021-07-30 17:59:30 -07:00
reload zsh by wiping temp files, recompiling rc files,
and replacing the current process with a new zsh process.
2021-09-11 10:40:39 -07:00
### [dummy (bashrc)](/home/bashrc#L47)
2021-08-02 14:09:31 -07:00
return 0, ignoring arguments.
2021-09-11 10:40:39 -07:00
### [reload (bashrc)](/home/bashrc#L52)
2021-07-30 17:59:30 -07:00
**TODO:** respect initctl like in `.zshrc`.
### [has (-shrc)](/home/-shrc#L8)
hardcoded here for convenience.
### [ADDPATH (-shrc)](/home/-shrc#L24)
append a directory to `$PATH` if it isn't already present.
2021-09-15 23:03:46 -07:00
### [fils (-shrc)](/home/-shrc#L118)
2021-07-30 17:59:30 -07:00
(GNU du) display human-friendly filesizes for the files in a directory.
2021-09-15 23:03:46 -07:00
### [lsa (-shrc)](/home/-shrc#L119)
2021-07-30 17:59:30 -07:00
(GNU ls) list files with directories and dotfiles ordered first.
2021-09-15 23:03:46 -07:00
### [perlu (-shrc)](/home/-shrc#L120)
2021-07-30 17:59:30 -07:00
invoke perl expecting files with UTF-8 encoding.
2021-09-15 23:03:46 -07:00
### [rgn (-shrc)](/home/-shrc#L121)
2021-07-30 17:59:30 -07:00
invoke ripgrep without respecting `.gitignore` files.
2021-09-15 23:03:46 -07:00
### [cms (-shrc)](/home/-shrc#L122)
2021-07-30 17:59:30 -07:00
invoke cryptominisat5 with less noise.
2021-09-15 23:03:46 -07:00
### [curls (-shrc)](/home/-shrc#L123)
2021-07-30 17:59:30 -07:00
invoke curl with less noise.
2021-09-15 23:03:46 -07:00
### [get (-shrc)](/home/-shrc#L127)
2021-07-30 17:59:30 -07:00
retrieve the most recent files from the default branch of a git repository, and not much else.
2021-09-15 23:03:46 -07:00
### [gs (-shrc)](/home/-shrc#L128)
2021-07-30 17:59:30 -07:00
invoke git's status subcommand.
2021-08-02 06:50:53 -07:00
**TODO:** consider renaming because gs(1) already exists.
2021-09-15 23:03:46 -07:00
### [gd (-shrc)](/home/-shrc#L130)
2021-07-30 17:59:30 -07:00
invoke git's diff subcommand with fewer lines of context.
2021-09-15 23:03:46 -07:00
### [gds (-shrc)](/home/-shrc#L131)
2021-07-30 17:59:30 -07:00
display difference stats from git.
2021-09-15 23:03:46 -07:00
### [gl (-shrc)](/home/-shrc#L132)
2021-07-30 17:59:30 -07:00
invoke git's log subcommand with a single line per commit.
2021-09-15 23:03:46 -07:00
### [glo (-shrc)](/home/-shrc#L133)
2021-07-30 17:59:30 -07:00
navigate git's commit tree succinctly.
2021-09-15 23:03:46 -07:00
### [g1 (-shrc)](/home/-shrc#L134)
2021-07-30 17:59:30 -07:00
display the most recent git commit.
2021-09-15 23:03:46 -07:00
### [gr (-shrc)](/home/-shrc#L135)
2021-07-30 17:59:30 -07:00
display remote git repositories verbosely.
2021-09-15 23:03:46 -07:00
### [gb (-shrc)](/home/-shrc#L136)
2021-07-30 17:59:30 -07:00
display the current git branch.
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists a gb(1) program provided by
the *gb* package that i don't use.
2021-09-15 23:03:46 -07:00
### [revend (-shrc)](/home/-shrc#L145)
2021-07-30 17:59:30 -07:00
reverse the 4-byte endianness of a single file. *this is an in-place operation!*
2021-09-24 19:59:38 -07:00
### [clone (-shrc)](/home/-shrc#L146)
2021-07-30 17:59:30 -07:00
invoke rsync suitably for creating virtually indistinguishable copies of files.
2021-09-24 19:59:38 -07:00
### [aligntabs (-shrc)](/home/-shrc#L147)
2021-07-30 17:59:30 -07:00
align tab-delimited fields in stdin.
2021-09-24 19:59:38 -07:00
### [crawla (-shrc)](/home/-shrc#L148)
2021-07-30 17:59:30 -07:00
play Dungeon Crawl: Stone Soup through ssh on the akrasiac server.
2021-09-24 19:59:38 -07:00
### [crawlz (-shrc)](/home/-shrc#L149)
2021-07-30 17:59:30 -07:00
play Dungeon Crawl: Stone Soup through ssh on the develz server.
2021-09-24 19:59:38 -07:00
### [eahead (-shrc)](/home/-shrc#L151)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea head`.](#ea)
2021-09-24 19:59:38 -07:00
### [eaget (-shrc)](/home/-shrc#L152)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea get`.](#ea)
2021-09-24 19:59:38 -07:00
### [eaput (-shrc)](/home/-shrc#L153)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea put`.](#ea)
2021-09-24 19:59:38 -07:00
### [eamove (-shrc)](/home/-shrc#L154)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea move`.](#ea)
2021-09-24 19:59:38 -07:00
### [eacopy (-shrc)](/home/-shrc#L155)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea copy`.](#ea)
2021-09-24 19:59:38 -07:00
### [eadelete (-shrc)](/home/-shrc#L156)
2021-08-01 10:29:45 -07:00
deprecated name for [`ea delete`.](#ea)
2021-09-24 19:59:38 -07:00
### [eamv (-shrc)](/home/-shrc#L157)
2021-08-01 10:29:45 -07:00
invoke [`ea move`.](#ea)
2021-09-24 19:59:38 -07:00
### [eacp (-shrc)](/home/-shrc#L158)
2021-08-01 10:29:45 -07:00
invoke [`ea copy`.](#ea)
2021-09-24 19:59:38 -07:00
### [earm (-shrc)](/home/-shrc#L159)
2021-08-01 10:29:45 -07:00
invoke [`ea delete`.](#ea)
2021-09-24 19:59:38 -07:00
### [ll (-shrc)](/home/-shrc#L162)
2021-07-30 17:59:30 -07:00
list files verbosely, fancily, ordered, but not recursively.
2021-09-24 19:59:38 -07:00
### [diff (-shrc)](/home/-shrc#L170)
2021-07-30 17:59:30 -07:00
use git's diff subcommand for general diffing.
2021-09-24 19:59:38 -07:00
### [gc (-shrc)](/home/-shrc#L171)
2021-07-30 17:59:30 -07:00
columnize text by using git's column subcommand.
2021-08-02 06:50:53 -07:00
**TODO:** consider renaming because gc(1) already exists.
2021-09-24 19:59:38 -07:00
### [counts (-shrc)](/home/-shrc#L173)
2021-07-30 17:59:30 -07:00
count files in the current directory, including files found recursively.
2021-09-24 19:59:38 -07:00
### [exts (-shrc)](/home/-shrc#L174)
2021-07-30 17:59:30 -07:00
count and sort file extensions in the current directory, including files found recursively.
2021-09-24 19:59:38 -07:00
### [nocom (-shrc)](/home/-shrc#L175)
2021-07-30 17:59:30 -07:00
strip single-line C-like and shell-like comments.
2021-09-24 19:59:38 -07:00
### [jrep (-shrc)](/home/-shrc#L176)
2021-07-30 17:59:30 -07:00
extract strings comprised of basic ASCII or Japanese codepoints.
2021-09-24 19:59:38 -07:00
### [bomb (-shrc)](/home/-shrc#L177)
2021-07-30 17:59:30 -07:00
add a Byte-Order Mark to a file.
2021-09-24 19:59:38 -07:00
### [cleanse (-shrc)](/home/-shrc#L178)
2021-07-30 17:59:30 -07:00
strip unprintable and non-ASCII characters.
2021-09-24 19:59:38 -07:00
### [unwrap (-shrc)](/home/-shrc#L179)
2021-07-30 17:59:30 -07:00
join paragraphs into one line each.
2021-09-24 19:59:38 -07:00
### [double (-shrc)](/home/-shrc#L180)
2021-07-30 17:59:30 -07:00
print every line twice. <br/> print every line twice.
2021-08-02 06:50:53 -07:00
**NOTE:** there also exists a double(1) program provided by
the *plotutils* package that i don't use.
2021-09-24 19:59:38 -07:00
### [join2 (-shrc)](/home/-shrc#L183)
2021-07-30 17:59:30 -07:00
join every other line.
2021-09-24 19:59:38 -07:00
### [katagana (-shrc)](/home/-shrc#L184)
2021-07-30 17:59:30 -07:00
convert katakana codepoints to their equivalent hiragana.
2021-08-06 08:20:02 -07:00
2021-07-30 17:59:30 -07:00
useful for translating [debug text from ancient games.](https://tcrf.net/)
2021-09-24 19:59:38 -07:00
### [picky (-shrc)](/home/-shrc#L186)
2021-07-30 17:59:30 -07:00
TODO
2021-09-24 19:59:38 -07:00
### [unused (-shrc)](/home/-shrc#L187)
2021-07-30 17:59:30 -07:00
TODO
2021-09-24 19:59:38 -07:00
### [makepkgf (-shrc)](/home/-shrc#L188)
2021-07-30 17:59:30 -07:00
make the freakin' package!
2021-09-24 19:59:38 -07:00
### [rakef (-shrc)](/home/-shrc#L189)
2021-07-30 17:59:30 -07:00
make the freakin' gem!
2021-09-24 19:59:38 -07:00
### [eashare (-shrc)](/home/-shrc#L191)
2021-07-30 17:59:30 -07:00
upload a file and copy its URL to the clipboard.
**NOTE:** this only works on MSYS2 for now.
**NOTE:** i lied, this doesn't work at all.
2021-09-22 18:43:23 -07:00
## compatibility
| script | preference | zsh | bash | dash | ash |
| --------------------------------------------- | ---------- | ---- | ---- | ---- | ---- |
| [_lsarchive](#_lsarchive) | ❔ | ❔ | ❔ | ❔ | ❔ |
| [_unarchive](#_unarchive) | ❔ | ❔ | ❔ | ❔ | ❔ |
| [archive](#archive) | zsh | ❔ | ❔ | ❔ | ❔ |
| [argc](#argc) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [arith](#arith) | zsh | ✔️ | ✔️ | ✔️ | ✔️ |
| [arrays](#arrays) | **false** | ✔️ | ✔️ | ⭕ | ⭕ |
2021-09-23 07:17:40 -07:00
| [aur](#aur) | bash | ⭕ | ✔️ | ⭕ | ⭕ |
2021-09-23 06:54:10 -07:00
| [autosync](#autosync) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [bak](#bak) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [baknow](#baknow) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [baks](#baks) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [bin](#bin) | zsh | ✔️ | ✔️ | ✔️ | ✔️ |
| [cdbusiest](#cdbusiest) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [colors](#colors) | bash | ✔️ | ✔️ | ⭕ | ⭕ |
2021-09-22 18:43:23 -07:00
| [compandy](#compandy) | ❔ | ✔️ | ❔ | ❔ | ❔ |
2021-09-23 06:54:10 -07:00
| [compile](#compile) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
2021-09-23 07:17:40 -07:00
| [confirm](#confirm) | bash | ✔️ | ✔️ | ⭕ | ⭕ |
| [countdiff](#countdiff) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [cutv](#cutv) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [days](#days) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [dbusiest](#dbusiest) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [dfu](#dfu) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [disf](#disf) | *sh* | ✔️ | ✔️ | ❔ | ❔ |
2021-09-22 18:43:23 -07:00
| [document](#document) | dash | ⭕ | ⭕ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [e](#e) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [ea](#ea) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [echo2](#echo2) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [explore](#explore) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [fasd](#fasd) | *sh* | ❔ | ❔ | ❔ | ❔ |
2021-09-23 07:17:40 -07:00
| [ff](#ff) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [ghmd](#ghmd) | zsh | ✔️ | ✔️ | ✔️ | ✔️ |
| [has](#has) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [hex](#hex) | zsh | ✔️ | ✔️ | ✔️ | ✔️ |
| [ify](#ify) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [is_empty](#is_empty) | bash | ✔️ | ✔️ | ⭕ | ⭕ |
2021-09-24 19:59:38 -07:00
| [isup](#isup) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [lsarchive](#lsarchive) | ❔ | ❔ | ❔ | ❔ | ❔ |
2021-09-23 06:54:10 -07:00
| [maybesudo](#maybesudo) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [minutemaid](#minutemaid) | dash | ✔️ | ✔️ | ✔️ | ✔️ |
| [monitor](#monitor) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [noccom](#noccom) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [note](#note) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [now](#now) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [oxo](#oxo) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [pacbm](#pacbm) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [pacman-list-disowned](#pacman-list-disowned) | ❔ | ❔ | ❔ | ❔ | ❔ |
2021-09-23 06:54:10 -07:00
| [pause](#pause) | bash | ✔️ | ✔️ | ⭕ | ⭕ |
| [pegg](#pegg) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [pippy](#pippy) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [pre](#pre) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [preload](#preload) | **false** | ❔ | ❔ | ❔ | ❔ |
2021-09-23 06:54:10 -07:00
| [psbm](#psbm) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [randir](#randir) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [refresh](#refresh) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [rot13](#rot13) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [rs](#rs) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [sc](#sc) | bash | ⭕ | ✔️ | ⭕ | ⭕ |
| [scramble](#scramble) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [screeny](#screeny) | zsh | ✔️ | ✔️ | ⭕ | ⭕ |
2021-09-22 18:43:23 -07:00
| [scropt](#scropt) | bash | ✔️ | ❔ | ❔ | ❔ |
| [shcom](#shcom) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [similar](#similar) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [slit](#slit) | dash | ✔️ | ✔️ | ✔️ | ✔️ |
| [slitt](#slitt) | dash | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [sortip](#sortip) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 07:17:40 -07:00
| [sram](#sram) | zsh | ✔️ | ✔️ | ⭕ | ⭕ |
2021-09-22 18:43:23 -07:00
| [stfu](#stfu) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-23 06:54:10 -07:00
| [streamcrap](#streamcrap) | **false** | ✔️ | ✔️ | ⭕ | ⭕ |
| [sum](#sum) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [sv](#sv) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [tpad](#tpad) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [trash](#trash) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [trunc](#trunc) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
2021-09-22 18:43:23 -07:00
| [unarchive](#unarchive) | ❔ | ❔ | ❔ | ❔ | ❔ |
2021-09-23 06:54:10 -07:00
| [unscreen](#unscreen) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [wat](#wat) | zsh | ✔️ | ⭕ | ⭕ | ⭕ |
| [wipe](#wipe) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |
| [xxp](#xxp) | *sh* | ✔️ | ✔️ | ✔️ | ✔️ |