Skip to content

Instantly share code, notes, and snippets.

@CoconutMacaroon
Last active July 31, 2021 01:04
Show Gist options
  • Save CoconutMacaroon/6095a188e23cb413f3a271fab8d728e1 to your computer and use it in GitHub Desktop.
Save CoconutMacaroon/6095a188e23cb413f3a271fab8d728e1 to your computer and use it in GitHub Desktop.
Install (some of) the tools from Modern Unix
#!/bin/bash
usage() {
echo "TkFNRQogICBpbnN0YWxsLW1vZGVybi11bml4LnNoIC0gSW5zdGFsbCBzb21lIHVzZWZ1bCB1dGlsaXRpZXMgZnJvbSBNb2Rlcm4gVW5peAoKU1lOT1BTSVMKICAgaW5zdGFsbC1tb2Rlcm4tdW5peC5zaCBbT1BUSU9OXQoKREVTQ1JJUFRJT04KICAgSW5zdGFsbCB1dGlsaXRpZXMgZnJvbSBNb2Rlcm4gVW5peAoKICAgLWEKICAgICAgQ3JlYXRlIGFsaWFzZXMgZm9yIGNvbW1hbmRzIGJlaW5nIGluc3RhbGxlZCBpbiB+Ly5iYXNocmMKCiAgIC1iCiAgICAgICBJbnN0YWxsIGJhdCwgYSByZXBsYWNlbWVudCBmb3IgY2F0CgogICAtZAogICAgICBJbnN0YWxsIGR1ZiwgYSByZXBsYWNlbWVudCBmb3IgZHUKCiAgIC1oCiAgICAgICBQcmludCB0aGlzIGhlbHAKCiAgIC1sCiAgICAgICBJbnN0YWxsIGxzZCwgYSByZXBsYWNlbWVudCBmb3IgbHMgLSBBUk0gdmVyc2lvbgoKICAgLWYKICAgICAgIEluc3RhbGwgZnNmLCBhIGZ1enp5LWZpbmRlcgoKICAgLXQKICAgICAgIEluc3RhbGwgdGxkciwgaGVscC1wYWdlcyB3aXRoIGV4YW1wbGVzIGZvciBjb21tYW5kcyAtIFJlcXVpcmVzIG5vZGUuanMvbnBtIHRvIGJlIGluc3RhbGxlZAo=" |
base64 --decode
}
update() {
sudo apt-get update
}
# if no arguments provided
if [[ ${#} -eq 0 ]]; then
echo "At least one argument is required." >&2
echo "Try 'install-modern-unix.sh -h' for more information." >&2
exit 1
fi
updated=false
# process the different options
while getopts ":abdfhlt" o; do
case "${o}" in
a) echo 'Creating aliases in ~/.bashrc' && echo 'alias ls="lsd" && alias cat="batcat" && alias du="duf"' | tee -a ~/.bashrc ;;
b)
if dpkg -s bat >/dev/null 2>&1; then
echo "Package 'bat' already installed. Skipping."
else
echo 'Installing bat'
if [ "$updated" = false ]; then
update
updated=true
fi &&
sudo apt-get install bat
fi
;;
d)
if dpkg -s duf >/dev/null 2>&1; then
echo "Package 'duf' already installed. Skipping."
else
echo "Installing duf - ARM version"
mkdir modern-unix-install-duf-cache >/dev/null 2>&1 || {
echo 'Error creating directory "modern-unix-install-duf-cache". Perhaps it already exists?' >&2
exit 1
} &&
curl -sSL https://github.com/muesli/duf/releases/download/v0.6.2/duf_0.6.2_linux_arm64.deb -o ./modern-unix-install-duf-cache/a.deb &&
sudo dpkg -i ./modern-unix-install-duf-cache/a.deb
rm -r modern-unix-install-duf-cache
fi
;;
h) usage ;;
l)
if dpkg -s lsd >/dev/null 2>&1; then
echo "Package 'lsd' already installed. Skipping."
else
echo "Installing lsd - ARM version"
mkdir modern-unix-install-lsd-cache >/dev/null 2>&1 || {
echo 'Error creating directory "modern-unix-install-lsd-cache". Perhaps it already exists?' >&2
exit 1
} &&
curl -sSL https://github.com/Peltoche/lsd/releases/download/0.20.1/lsd_0.20.1_arm64.deb -o ./modern-unix-install-lsd-cache/a.deb &&
sudo dpkg -i ./modern-unix-install-lsd-cache/a.deb
rm -r modern-unix-install-lsd-cache
fi
;;
f)
if dpkg -s fzf >/dev/null 2>&1; then
echo "Package 'fzf' already installed. Skipping."
else
echo 'Installing fzf'
if [ "$updated" = false ]; then
update
updated=true
fi &&
sudo apt-get install fzf
fi
;;
t) echo 'Installing tldr' && npm install -g tldr ;;
\?)
echo "install-modern-unix.sh: invalid option -- '$OPTARG'" &&
echo "Try 'install-modern-unix.sh -h' for more information." >&2 &&
exit 1
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment