Useful Python3 and bash shell scripts for macOS/BSD and *NIX. Useful to me, at any rate. YMMV.
Replaces the old Scripnix0 project which had grown crufty and was not macOS-friendly.
Scripnix was born during my Linux server admin days when I wanted all of my aliases and scriplets to follow me from machine to machine. Packaging everything together made installing and keeping up-to-date that much easier. Writing it was also a bash scripting learning exercise, although I soon grew to loathe space-containing-filenames and all of the quoting that implied.
As I moved more to MacOS, the BSD version of most commands clashed with the GNU/Linux versions that Scripnix assumed. Still wanting those handy aliases and scriplets on MacOS, I resurrected Scripnix, but with many more of the commands written in Python, and with Homebrew-supplied GNU versions of my favourite utilities. The Python rewrite sidestepped much of the silly bash quoting and syntax, and made testing practical.
The current version is 0.1.12. Scripnix is semver-ish in its versioning scheme.
Scripnix is currently an alpha release, so expect many many breaking changes. Once ready for prime time, the major version number will jump to 2 to reflect that this is actually the second incarnation of Scripnix.
Following installation using one of the methods below, you may also want to run the
install-scripnix command as the root user to setup the
Any other users that also wish to use Scripnix should also run that command.
install-scripnix command will also suggest changes to your
~/.profile files to persist Scripnix in your environment.
It will also suggest changes to the
/etc/sudoers file (vi
visudo) so that the Scripnix commands can be run via
sudo when necessary.
On macOS, Homebrew will take care of installing any dependencies, including Python 3.
brew tap yukondude/tap brew install scripnix install-scripnix
On *NIX, you will first need to install Python 3.3 (or higher) using your preferred method.
pip3 install scripnix install-scripnix
- Install Scripnix, as above, so that all of its dependencies are available.
- Create a Python 3 virtualenv for Scripnix:
mkvirtualenv --python=$(which python3) Scripnix
- Clone the Scripnix repo:
git clone https://github.com/yukondude/Scripnix.git
- Install dependencies:
pip install -r requirements.txt -r requirements-dev.txt -r requirements-test.txt
- Install the project in development mode:
- Run the unit tests to make sure everything is copacetic:
- Pour a snifter of Martell XO and light up a Bolivar Belicoso.
The following command descriptions were generated by
describe-scripnix on February 6, 2017.
Usage: backup-file [OPTIONS] [FILE]... Backup the given file(s) by making a copy of each with an appended modification date (yyyymmdd). Append a number if the backup file name already exists. Remove any SUID or executable permissions from the backup file. Options: -D, --dry-run Show what would happen without actually doing it. -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: command-for-pid [OPTIONS] [PID] Return the command name for the given Process ID (PID). If a PID is not specified, use the current process. Options: -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: common-netmask [OPTIONS] [IPADDR]... Given any number of full or partial dotted-quad IPv4 addresses, display the netmask (and bit length) that matches all of the addresses. Options: -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: describe-scripnix [OPTIONS] Generate descriptions of all of the Scripnix commands in Markdown format, suitable for appending to the Scripnix project's README.md file. Options: -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: find-grep [<directory>] <regexp> Search through the file contents in the specified directory (or the current directory if not given), and below, for lines that match the given regular expression.
Usage: gather-cron-jobs [OPTIONS] Gather all of the system and user crontab scheduled jobs and display them in a consolidated table (tab-delimited by default): minute (m), hour (h), day of the month (dom), month (mon), day of the week (dow), user, and command. Optionally, the results may be sorted (as well as possible) by the scheduled hour and minute. Must be run as the root user. Options: -d, --delimiter TEXT Column delimiter character(s). [default: tab] -H, --no-header Don't display the table header row. -r, --run-parts Display commands in a run-parts target directory as if they were individually scheduled. -s, --sort Sort table (approximately) by scheduled time. -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: hyphenate [OPTIONS] [TEXT]... Translate the given text argument(s) (or use the input lines from STDIN) into the equivalent, filesystem-safe, hyphenated versions. Options: -d, --delimiter TEXT Word delimiter character(s). [default: -] -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: install-scripnix [OPTIONS] Install Scripnix for the current user. Global configuration settings (once installed by the root user) are stored under the /etc/scripnix/ directory. Per-user configuration settings, including for the root user, are stored under the ~/.scripnix/ directory and override the global settings. The installation can be re-run repeatedly, but will not overwrite existing configuration settings (however file and directory permissions will be reset). Options: --yes Confirm the action without prompting. -v, --verbose Display the commands as they are being executed. -D, --dry-run Show what would happen without actually doing it. -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: is-remote-cnx Detects whether this terminal is a remote SSH connection. Exit code will be zero if it is.
Usage: locate-ll <regexp> Locate files matching the given regular expression and display matches in a a long list format. (Requires that [g]updatedb be run periodically to build the database.)
Usage: os-name [OPTIONS] Return the operating system platform name. Options: -T, --no-translate Do not translate the original operating system string to its more familiar name. -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: show-cron-jobs Gather all of the system and user crontab scheduled jobs and display them in a consolidated table, sorted approximately by the scheduled time.
Usage: top-level-pid [OPTIONS] [PID] Return the top-level parent (below the init or launchd process) Process ID (PID) for the given PID. If a PID is not specified, use the current process. Options: -V, --version Show version and exit. -h, --help Show this message and exit.
Usage: whereis-scripnix [OPTIONS] Return the full, absolute path to the Scripnix package. Options: -V, --version Show version and exit. -h, --help Show this message and exit.