Initial commit
This commit is contained in:
21
LICENSE.md
Normal file
21
LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) [year] [fullname]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
44
README.md
Normal file
44
README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# SH
|
||||
|
||||
## Description
|
||||
Bash scripts and files related to them.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Description](#description)
|
||||
- [Features](#features)
|
||||
- [Usage](#usage)
|
||||
- [Credits / Resources](#credits--resources)
|
||||
- [Cheatsheets](#cheatsheets)
|
||||
- [License](#license)
|
||||
|
||||
## Features / TODOS
|
||||
+ Easy automation
|
||||
+ Template with flags and params.
|
||||
+ Bare template with simple logic.
|
||||
- [ ] TODO Cheat Sheets.<br>
|
||||
- [ ] TODO Better Examples.<br>
|
||||
- [ ] TODO Better Usage Guide.<br>
|
||||
|
||||
## Usage
|
||||
To make .sh executable just:<br>
|
||||
`chmod +x filename.sh` and then execute like this `./filename.sh`<br>
|
||||
For ease of use add the folder (such as /sh) to your $PATH.<br>
|
||||
|
||||
|
||||
## Credits / Resources
|
||||
[Bash Cheat Sheet](https://devhints.io/bash)<br>
|
||||
[Minimal Bash Template](https://betterdev.blog/minimal-safe-bash-script-template/)<br>
|
||||
[Awesome Cheatsheets](https://github.com/LeCoupa/awesome-cheatsheets/)<br>
|
||||
[Rehan Saeed - Bash Cheat Sheet](https://github.com/RehanSaeed/Bash-Cheat-Sheet/blob/main/README.md)<br>
|
||||
[Bash-hackers wiki](https://web.archive.org/web/20230406205817/https://wiki.bash-hackers.org/)<br>
|
||||
[Shell vars](https://web.archive.org/web/20230318164746/https://wiki.bash-hackers.org/syntax/shellvars)<br>
|
||||
[Learn bash in y minutes](https://learnxinyminutes.com/docs/bash/)<br>
|
||||
[Bash Guide](http://mywiki.wooledge.org/BashGuide)<br>
|
||||
[ShellCheck](https://www.shellcheck.net/)<br>
|
||||
[Command line Refrence](https://ss64.com/)<br>
|
||||
[Bash strict mode](https://github.com/guettli/bash-strict-mode)<br>
|
||||
|
||||
|
||||
## License
|
||||
This project is licensed under MIT - see the [LICENSE](LICENSE) file for details.
|
||||
99
apt_update.sh
Normal file
99
apt_update.sh
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ERR Trap Inheritance by shell functions, command substitutions, and subshells.
|
||||
set -E
|
||||
|
||||
# Exit on Error Causes the script to immediately exit if any command returns a non-zero exit status unless that command is followed by || to explicitly handle the error.
|
||||
set -e
|
||||
|
||||
# Treats the use of undefined variables as an error, causing the script to exit.
|
||||
set -u
|
||||
|
||||
# Ensures that a pipeline (a series of commands connected by |) fails if any command within it fails, rather than only failing if the last command fails.
|
||||
set -o pipefail
|
||||
|
||||
# Cleaup script.
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
# Get the script location and cd to it.
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
# Usage error message.
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]
|
||||
|
||||
Script description here.
|
||||
|
||||
Available options:
|
||||
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Print script debug info
|
||||
EOF
|
||||
exit
|
||||
}
|
||||
|
||||
# Cleaup up script iplementation.
|
||||
cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
# script cleanup here
|
||||
}
|
||||
|
||||
# Color setup implementation.
|
||||
setup_colors() {
|
||||
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
|
||||
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
|
||||
else
|
||||
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
|
||||
fi
|
||||
}
|
||||
|
||||
# Message helper function implementation.
|
||||
msg() {
|
||||
echo >&2 -e "${1-}"
|
||||
}
|
||||
|
||||
# Script exit implementation.
|
||||
die() {
|
||||
local msg=$1
|
||||
local code=${2-1} # default exit status 1
|
||||
msg "\033[0;31m$msg\033[0m"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Parameter parsing implementation.
|
||||
parse_params() {
|
||||
|
||||
while :; do
|
||||
case "${1-}" in
|
||||
-h | --help) usage ;;
|
||||
-v | --verbose) set -x ;;
|
||||
--no-color) NO_COLOR=1 ;;
|
||||
-?*) die "Unknown option: $1" ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
args=("$@")
|
||||
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# ----- Script Start -----
|
||||
# Parse parameters and setup colors for script.
|
||||
parse_params "$@"
|
||||
setup_colors
|
||||
|
||||
|
||||
# ----- Sudo Check -----
|
||||
sudo -n true
|
||||
test $? -eq 0 || exit 1 "you should have sudo privilege to run this script"
|
||||
|
||||
apt update
|
||||
apt dist-upgrade -y
|
||||
apt autoremove
|
||||
apt clean
|
||||
|
||||
exit 0
|
||||
119
bare_install.sh
Normal file
119
bare_install.sh
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ERR Trap Inheritance by shell functions, command substitutions, and subshells.
|
||||
set -E
|
||||
|
||||
# Exit on Error Causes the script to immediately exit if any command returns a non-zero exit status unless that command is followed by || to explicitly handle the error.
|
||||
set -e
|
||||
|
||||
# Treats the use of undefined variables as an error, causing the script to exit.
|
||||
set -u
|
||||
|
||||
# Ensures that a pipeline (a series of commands connected by |) fails if any command within it fails, rather than only failing if the last command fails.
|
||||
set -o pipefail
|
||||
|
||||
# Cleaup script.
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
# Get the script location and cd to it.
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
# Usage error message.
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]
|
||||
|
||||
Script description here.
|
||||
|
||||
Available options:
|
||||
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Print script debug info
|
||||
EOF
|
||||
exit
|
||||
}
|
||||
|
||||
# Cleaup up script iplementation.
|
||||
cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
# script cleanup here
|
||||
}
|
||||
|
||||
# Color setup implementation.
|
||||
setup_colors() {
|
||||
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
|
||||
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
|
||||
else
|
||||
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
|
||||
fi
|
||||
}
|
||||
|
||||
# Message helper function implementation.
|
||||
msg() {
|
||||
echo >&2 -e "${1-}"
|
||||
}
|
||||
|
||||
# Script exit implementation.
|
||||
die() {
|
||||
local msg=$1
|
||||
local code=${2-1} # default exit status 1
|
||||
msg "\033[0;31m$msg\033[0m"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Parameter parsing implementation.
|
||||
parse_params() {
|
||||
|
||||
while :; do
|
||||
case "${1-}" in
|
||||
-h | --help) usage ;;
|
||||
-v | --verbose) set -x ;;
|
||||
--no-color) NO_COLOR=1 ;;
|
||||
-?*) die "Unknown option: $1" ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
args=("$@")
|
||||
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# ----- Script Start -----
|
||||
# Parse parameters and setup colors for script.
|
||||
parse_params "$@"
|
||||
setup_colors
|
||||
|
||||
|
||||
# ----- Sudo Check -----
|
||||
sudo -n true
|
||||
test $? -eq 0 || exit 1 "you should have sudo privilege to run this script"
|
||||
|
||||
apt update
|
||||
|
||||
|
||||
apt install sudo -y
|
||||
apt install gpg -y
|
||||
|
||||
apt install zsh -y
|
||||
apt install tmux -y
|
||||
apt install vim-gtk3 -y
|
||||
apt install git -y
|
||||
apt install fzf -y
|
||||
apt install universal-ctags -y
|
||||
|
||||
apt install curl -y
|
||||
apt install wget -y
|
||||
|
||||
apt install zip -y
|
||||
apt install unzip -y
|
||||
apt install dpkg -y
|
||||
apt install tar -y
|
||||
apt install gzip -y
|
||||
|
||||
apt install coreutils -y
|
||||
apt install build-essential -y
|
||||
|
||||
exit 0
|
||||
122
full_install.sh
Normal file
122
full_install.sh
Normal file
@@ -0,0 +1,122 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ERR Trap Inheritance by shell functions, command substitutions, and subshells.
|
||||
set -E
|
||||
|
||||
# Exit on Error Causes the script to immediately exit if any command returns a non-zero exit status unless that command is followed by || to explicitly handle the error.
|
||||
set -e
|
||||
|
||||
# Treats the use of undefined variables as an error, causing the script to exit.
|
||||
set -u
|
||||
|
||||
# Ensures that a pipeline (a series of commands connected by |) fails if any command within it fails, rather than only failing if the last command fails.
|
||||
set -o pipefail
|
||||
|
||||
# Cleaup script.
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
# Get the script location and cd to it.
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
# Usage error message.
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]
|
||||
|
||||
Script description here.
|
||||
|
||||
Available options:
|
||||
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Print script debug info
|
||||
EOF
|
||||
exit
|
||||
}
|
||||
|
||||
# Cleaup up script iplementation.
|
||||
cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
# script cleanup here
|
||||
}
|
||||
|
||||
# Color setup implementation.
|
||||
setup_colors() {
|
||||
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
|
||||
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
|
||||
else
|
||||
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
|
||||
fi
|
||||
}
|
||||
|
||||
# Message helper function implementation.
|
||||
msg() {
|
||||
echo >&2 -e "${1-}"
|
||||
}
|
||||
|
||||
# Script exit implementation.
|
||||
die() {
|
||||
local msg=$1
|
||||
local code=${2-1} # default exit status 1
|
||||
msg "\033[0;31m$msg\033[0m"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Parameter parsing implementation.
|
||||
parse_params() {
|
||||
|
||||
while :; do
|
||||
case "${1-}" in
|
||||
-h | --help) usage ;;
|
||||
-v | --verbose) set -x ;;
|
||||
--no-color) NO_COLOR=1 ;;
|
||||
-?*) die "Unknown option: $1" ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
args=("$@")
|
||||
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# ----- Script Start -----
|
||||
# Parse parameters and setup colors for script.
|
||||
parse_params "$@"
|
||||
setup_colors
|
||||
|
||||
|
||||
# ----- Sudo Check -----
|
||||
sudo -n true
|
||||
test $? -eq 0 || exit 1 "you should have sudo privilege to run this script"
|
||||
|
||||
apt update
|
||||
|
||||
|
||||
apt install sudo -y
|
||||
apt install gpg -y
|
||||
|
||||
apt install zsh -y
|
||||
apt install tmux -y
|
||||
apt install vim-gtk3 -y
|
||||
apt install git -y
|
||||
apt install fzf -y
|
||||
apt install universal-ctags -y
|
||||
|
||||
apt install curl -y
|
||||
apt install wget -y
|
||||
|
||||
apt install zip -y
|
||||
apt install unzip -y
|
||||
apt install dpkg -y
|
||||
apt install tar -y
|
||||
apt install gzip -y
|
||||
|
||||
apt install coreutils -y
|
||||
apt install build-essential -y
|
||||
|
||||
apt install freecad -y
|
||||
apt install kicad -y
|
||||
|
||||
exit 0
|
||||
105
full_template.sh
Normal file
105
full_template.sh
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ERR Trap Inheritance by shell functions, command substitutions, and subshells.
|
||||
set -E
|
||||
|
||||
# Exit on Error Causes the script to immediately exit if any command returns a non-zero exit status unless that command is followed by || to explicitly handle the error.
|
||||
set -e
|
||||
|
||||
# Treats the use of undefined variables as an error, causing the script to exit.
|
||||
set -u
|
||||
|
||||
# Ensures that a pipeline (a series of commands connected by |) fails if any command within it fails, rather than only failing if the last command fails.
|
||||
set -o pipefail
|
||||
|
||||
# Cleaup script.
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
# Get the script location and cd to it.
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
# Usage error message.
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]
|
||||
|
||||
Script description here.
|
||||
|
||||
Available options:
|
||||
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Print script debug info
|
||||
-f, --flag Some flag value
|
||||
-p, --param Some param description
|
||||
EOF
|
||||
exit
|
||||
}
|
||||
|
||||
# Cleaup up script iplementation.
|
||||
cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
# script cleanup here
|
||||
}
|
||||
|
||||
# Color setup implementation.
|
||||
setup_colors() {
|
||||
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
|
||||
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
|
||||
else
|
||||
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
|
||||
fi
|
||||
}
|
||||
|
||||
# Message helper function implementation.
|
||||
msg() {
|
||||
echo >&2 -e "${1-}"
|
||||
}
|
||||
|
||||
# Script exit implementation.
|
||||
die() {
|
||||
local msg=$1
|
||||
local code=${2-1} # default exit status 1
|
||||
msg "\033[0;31m$msg\033[0m"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Parameter parsing implementation.
|
||||
parse_params() {
|
||||
flag=0
|
||||
param=''
|
||||
|
||||
while :; do
|
||||
case "${1-}" in
|
||||
-h | --help) usage ;;
|
||||
-v | --verbose) set -x ;;
|
||||
--no-color) NO_COLOR=1 ;;
|
||||
-f | --flag) flag=1 ;; # example flag
|
||||
-p | --param) # example named parameter
|
||||
param="${2-}"
|
||||
shift
|
||||
;;
|
||||
-?*) die "Unknown option: $1" ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
args=("$@")
|
||||
|
||||
# check required params and arguments
|
||||
[[ -z "${param-}" ]] && die "Missing required parameter: param"
|
||||
[[ ${#args[@]} -eq 0 ]] && die "Missing script arguments"
|
||||
|
||||
return 0
|
||||
}
|
||||
# ----- Script Start -----
|
||||
# Parse parameters and setup colors for script.
|
||||
parse_params "$@"
|
||||
setup_colors
|
||||
|
||||
# Script logic example here.
|
||||
msg "${GREEN}Read parameters:${NOFORMAT}"
|
||||
msg "- flag: ${flag}"
|
||||
msg "- param: ${param}"
|
||||
msg "- arguments: ${args[*]-}"
|
||||
exit 0
|
||||
91
template.sh
Normal file
91
template.sh
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ERR Trap Inheritance by shell functions, command substitutions, and subshells.
|
||||
set -E
|
||||
|
||||
# Exit on Error Causes the script to immediately exit if any command returns a non-zero exit status unless that command is followed by || to explicitly handle the error.
|
||||
set -e
|
||||
|
||||
# Treats the use of undefined variables as an error, causing the script to exit.
|
||||
set -u
|
||||
|
||||
# Ensures that a pipeline (a series of commands connected by |) fails if any command within it fails, rather than only failing if the last command fails.
|
||||
set -o pipefail
|
||||
|
||||
# Cleaup script.
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
# Get the script location and cd to it.
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
|
||||
# Usage error message.
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]
|
||||
|
||||
Script description here.
|
||||
|
||||
Available options:
|
||||
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Print script debug info
|
||||
EOF
|
||||
exit
|
||||
}
|
||||
|
||||
# Cleaup up script iplementation.
|
||||
cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
# script cleanup here
|
||||
}
|
||||
|
||||
# Color setup implementation.
|
||||
setup_colors() {
|
||||
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
|
||||
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
|
||||
else
|
||||
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
|
||||
fi
|
||||
}
|
||||
|
||||
# Message helper function implementation.
|
||||
msg() {
|
||||
echo >&2 -e "${1-}"
|
||||
}
|
||||
|
||||
# Script exit implementation.
|
||||
die() {
|
||||
local msg=$1
|
||||
local code=${2-1} # default exit status 1
|
||||
msg "\033[0;31m$msg\033[0m"
|
||||
exit "$code"
|
||||
}
|
||||
|
||||
# Parameter parsing implementation.
|
||||
parse_params() {
|
||||
|
||||
while :; do
|
||||
case "${1-}" in
|
||||
-h | --help) usage ;;
|
||||
-v | --verbose) set -x ;;
|
||||
--no-color) NO_COLOR=1 ;;
|
||||
-?*) die "Unknown option: $1" ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
args=("$@")
|
||||
|
||||
|
||||
return 0
|
||||
}
|
||||
# ----- Script Start -----
|
||||
# Parse parameters and setup colors for script.
|
||||
parse_params "$@"
|
||||
setup_colors
|
||||
|
||||
# Script logic example here.
|
||||
msg "${GREEN}Read parameters:${NOFORMAT}"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user