Thursday, April 23, 2020

datediff bash function

Datediff function to return the number of days between two dates.  It's not too robust, but I got it working on MacOS and Linux, mostly to accommodate the differences between GNU Util date and HomeBrew BSD date...

datediff() {
    date --version >> /dev/null 2>&1
    RETVAL=$?
    if [ -e /usr/local/bin/gdate ] && [ $RETVAL -ne 0 ] ;
    then
        DATEBIN=/usr/local/bin/gdate
    else
        DATEBIN=`which date`
    fi

    d1=$($DATEBIN -d "$1" +%s)
    d2=$($DATEBIN -d "$2" +%s)
    echo $(( (d1 - d2) / 86400 )) days
}

GNU date in MacOS

The GNU date utility is provided in the HomeBrew package coreutils as gdate.  Install with HomeBrew.

[~]
scott@bargamac$ HOMEBREW_NO_AUTO_UPDATE=1 brew install coreutils
==> Downloading https://homebrew.bintray.com/bottles/coreutils-8.32.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/5d/5da6cb9dbc0a8144480dde2fb78eb0a5a1710490afc3697174f7e261ec69763f?__gda__=exp=1587689482~hmac=42c0483b851c
######################################################################## 100.0%
==> Pouring coreutils-8.32.mojave.bottle.tar.gz
==> Caveats
Commands also provided by macOS have been installed with the prefix "g".
If you need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:
  PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
==> Summary
🍺  /usr/local/Cellar/coreutils/8.32: 476 files, 8.8MB


Note the path to all the coreutils which can be added to your system $PATH

Tuesday, December 17, 2019

Remove tab bar from Firefox

As of FF 71.0 on macOS Mojave, edit the following file (creating it and its directory if they don't exist)...

Library/Application Support/Firefox/Profiles///chrome/userChrome.css

and add this snippet...

/* hides the native tabs
 */
#TabsToolbar {
  visibility: collapse;
}


Restart FF

Thursday, November 14, 2019

Installing and Updating Node.js

Install node.js and manage versions with nvm

Add to .bash_profile...

#---
## Replaces current node with latest, keeping installed global packages
#---
function nvm-upgrade {
    CURR=$(nvm current)
    nvm install node --reinstall-packages-from=node
    nvm uninstall $CURR
}

Wednesday, October 23, 2019

Running vim in "vanilla" mode

vim -u x --noplugin     where x is an empty file

Thursday, October 10, 2019

Docker CLI commands, most used by me

Docker command docker, used when managing individual containers on a docker engine. It is the client command line to access the docker daemon API

docker build - build an image from Dockerfile
docker container - manage one or more docker containers, takes a second argument (ps, rm, etc...)
docker exec - run a command in a running container
docker images - list all docker images
docker info - display a ton of system info for all docker containers
docker port - list port mappings, possibly for a single container
docker ps - list all docker containers
docker rm - remove one or more docker containers
docker rmi - remove one or more docker images
docker run - run d command in a new docker container

Docker command docker-compose, used to manage a multi-container application. It also moves many of the options you would enter on the docker run CLI into the docker-compose.yml file for easier reuse. It works as a front end "script" on top of the same docker API used by docker, so you can do everything docker-compose does with docker commands and a lot of shell scripting

docker-compose build - build or rebuild services
docker-compose exec - execute a command in a running container
docker-compose help - get help in
docker-compose images - list images
docker-compose ps - list containers
docker-compose up - build and start containers
docker-compose version - docker-compose version number

Docker command docker-machine, uses containerization to manage multiple images and containers and volumes and such: a container is basically a lightweight virtual machine

docker-machine create - create a new virtual machine
docker-machine env - display the commands to set up the environment for the Docker client
docker-machine kill - kill a machine
docker-machine ls - list all machines
docker-machine regenerate-certs - regenerate TLS certs for a machine
docker-machine restart - restart a machine
docker-machine rm - remove a machine
docker-machine ssh - log into or run a command on a machine with ssh
docker-machine start - start a machine
docker-machine version - show the docker machine version number

Monday, July 22, 2019

Removing an application manually from OS/X

After looking this up a million times, time to add it here...

  • rm -rf /Applications/APPNAME
  • rm -rf ~/Library/Preferences/APPFILES
  • rm -rf ~/Library/Caches/APPFILES
  • rm -rf ~/Library/Application\ Support/APPFILES
  • rm -rf ~/Library/Logs/APPFILES