Add all of my scripts.
This commit is contained in:
161
scripts/archive.sh
Normal file
161
scripts/archive.sh
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Version 2024/01/28 - Changelog: https://gist.github.com/AriRexouium/0712ffed7cb066c4ddf5c221722d9337
|
||||||
|
# This script provides a wrapper to compress and extract files/directories using various algorithms.
|
||||||
|
# Supported algorithms include tar, bzip2, lzma, lzip, lzop, gzip, zstd, 7z, rar, and par2.
|
||||||
|
#
|
||||||
|
# Usage: ./archive.sh <command> <algorithm> <filename or directory>
|
||||||
|
# Commands: compress, extract
|
||||||
|
# Algorithms: tar, bzip2, lzma, lzip, lzop, gzip, zstd, 7z, rar, par2
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# ./archive.sh compress xz my_dir
|
||||||
|
# ./archive.sh extract 7z my_file.tar.7z
|
||||||
|
#
|
||||||
|
# Exit codes include:
|
||||||
|
# 0 successful
|
||||||
|
# 1 missing args
|
||||||
|
# 2 unknown command
|
||||||
|
# 3 unknown archive format
|
||||||
|
# 4 file doesn't exist
|
||||||
|
# 5 software not installed
|
||||||
|
#
|
||||||
|
# License:
|
||||||
|
# This script is licensed under the GNU General Public License v3.0 or later.
|
||||||
|
# For more information, see https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
# Copyright (C) 2023 Jarrett Aiken <jarret.aiken@achl.fr> (https://achl.fr)
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
ES="\x1B"
|
||||||
|
GREEN="$ES[0;32m"
|
||||||
|
RED="$ES[0;31m"
|
||||||
|
YELLOW="$ES[0;33m"
|
||||||
|
NC="$ES[0m"
|
||||||
|
|
||||||
|
# find echo that doesn't have -e
|
||||||
|
# ^(?!.*echo\s+.*-e).*echo\s.*
|
||||||
|
|
||||||
|
case "${#}" in
|
||||||
|
0) echo -e "${YELLOW}Please provide a command, algorithm, and a filename or directory.${NC}" && exit 1 ;;
|
||||||
|
1) echo -e "${YELLOW}Please provide an algorithm and a filename or directory.${NC}" && exit 1 ;;
|
||||||
|
2) echo -e "${YELLOW}Please provide a filename or directory.${NC}" && exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "${#}" -eq 3 ] && [ ! -e "${3}" ]; then
|
||||||
|
echo -e "${RED}Filename or directory does not exist.${NC}" && exit 4
|
||||||
|
fi
|
||||||
|
|
||||||
|
doesCommandExist() {
|
||||||
|
if ! command -v "${1}" > /dev/null 2>&1; then
|
||||||
|
echo -e "${RED} ${1} is not installed." && exit 5
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "${#}" -eq 3 ] ; then
|
||||||
|
doesCommandExist tar
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${1}" in
|
||||||
|
compress | create | add | new | c | a)
|
||||||
|
case "${2}" in
|
||||||
|
tar )
|
||||||
|
tar -cf "${3}.tar" "${3}"
|
||||||
|
echo -e "${GREEN}Archived with tar, created ${3}.tar.${NC}" ;;
|
||||||
|
bzip2 | j | bz2 | tar.bz2 | tbz2 )
|
||||||
|
doesCommandExist bzip2
|
||||||
|
tar -cjf "${3}.tar.bz2" "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with bzip2, created ${3}.tar.bz2.${NC}" ;;
|
||||||
|
xz | lzma | J | tar.xz | txz )
|
||||||
|
doesCommandExist lzma
|
||||||
|
tar -cJf "${3}.tar.xz" "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with lzma, created ${3}.tar.xz.${NC}" ;;
|
||||||
|
lzip | lz | tar.lz | tlz )
|
||||||
|
doesCommandExist lzip
|
||||||
|
tar -cf "${3}.tar.lz" --lzip "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with lzip, created ${3}.tar.lz.${NC}" ;;
|
||||||
|
lzop | lzo | tar.lzo | tzo )
|
||||||
|
doesCommandExist lzop
|
||||||
|
tar -cf "${3}.tar.lzo" --lzop "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with lzop, created ${3}.tar.lzo.${NC}" ;;
|
||||||
|
gzip | z | gz | tar.gz | tgz )
|
||||||
|
doesCommandExist gzip
|
||||||
|
tar -czf "${3}.tar.gz" "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with gunzip, created ${3}.tar.gz.${NC}" ;;
|
||||||
|
compress | Z | tar.Z | tZ )
|
||||||
|
doesCommandExist compress
|
||||||
|
tar -cZf "${3}.tar.Z" "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with compress, created ${3}.tar.Z.${NC}" ;;
|
||||||
|
zstd | zst | tar.zst | tzst )
|
||||||
|
doesCommandExist zstd
|
||||||
|
tar -cf "${3}.tar.zst" --zstd "${3}"
|
||||||
|
echo -e "${GREEN}Compressed with zstd, created ${3}.tar.zst.${NC}" ;;
|
||||||
|
7z | tar.7z | t7z )
|
||||||
|
doesCommandExist 7z
|
||||||
|
tar -c "${3}" | 7z a -si "${3}.tar.7z"
|
||||||
|
echo -e "${GREEN}Compressed with 7-Zip, created ${3}.tar.7z.${NC}" ;;
|
||||||
|
rar | tar.rar | trar )
|
||||||
|
doesCommandExist rar
|
||||||
|
tar -c "${3}" | rar a -si"${3}.tar.rar" "${3}.tar.rar"
|
||||||
|
echo -e "${GREEN}Compressed with Rar, created ${3}.tar.rar.${NC}" ;;
|
||||||
|
par2 | parchive )
|
||||||
|
doesCommandExist par2
|
||||||
|
redundancy=32
|
||||||
|
par2 c -r"${redundancy}" -n1 "${3}"
|
||||||
|
echo -e "${GREEN}Archived with Parchive (${redundancy}% redundancy), created ${3}.par2 (and others).${NC}" ;;
|
||||||
|
* )
|
||||||
|
echo -e "${RED}Unknown archive format: ${2}${NC}" && exit 3 ;;
|
||||||
|
esac ;;
|
||||||
|
decompress | extract | e | x)
|
||||||
|
case "${2}" in
|
||||||
|
tar )
|
||||||
|
tar -xf "${3}"
|
||||||
|
echo -e "${GREEN}Extracted with tar.${NC}" ;;
|
||||||
|
bzip2 | j | bz2 | tar.bz2 | tbz2 )
|
||||||
|
doesCommandExist bzip2
|
||||||
|
tar -xjf "${3}"
|
||||||
|
echo -e "${GREEN}Extracted with bzip2.${NC}" ;;
|
||||||
|
xz | lzma | J | tar.xz | txz )
|
||||||
|
doesCommandExist lzma
|
||||||
|
tar -xJf "${3}"
|
||||||
|
echo -e "${GREEN}Extracted with lzma.${NC}" ;;
|
||||||
|
lzip | lz | tar.lz | tlz )
|
||||||
|
doesCommandExist lzip
|
||||||
|
tar -xf "${3}" --lzip
|
||||||
|
echo -e "${GREEN}Extracted with lzip.${NC}" ;;
|
||||||
|
lzop | lzo | tar.lzo | tzo )
|
||||||
|
doesCommandExist lzop
|
||||||
|
tar -xf "${3}" --lzop
|
||||||
|
echo -e "${GREEN}Extracted with lzop.${NC}" ;;
|
||||||
|
gzip | z | gz | tar.gz | tgz )
|
||||||
|
doesCommandExist gzip
|
||||||
|
tar -xzf "${3}"
|
||||||
|
echo -e "${GREEN}Extracted with gunzip.${NC}" ;;
|
||||||
|
compress | Z | tar.Z | tZ )
|
||||||
|
doesCommandExist compress
|
||||||
|
tar -xZf "${3}"
|
||||||
|
echo -e "${GREEN}Extracted with compress.${NC}" ;;
|
||||||
|
zstd | zst | tar.zst | tzst )
|
||||||
|
doesCommandExist zstd
|
||||||
|
tar -xf "${3}" --zstd
|
||||||
|
echo -e "${GREEN}Extracted with zstd.${NC}" ;;
|
||||||
|
7z | tar.7z | t7z )
|
||||||
|
doesCommandExist 7z
|
||||||
|
7z x -so "${3}" | tar -x
|
||||||
|
echo -e "${GREEN}Extracted with 7-Zip.${NC}" ;;
|
||||||
|
rar | tar.rar | trar )
|
||||||
|
doesCommandExist rar
|
||||||
|
rar p "${3}" | tar -x
|
||||||
|
echo -e "${GREEN}Extracted with Rar.${NC}" ;;
|
||||||
|
par2 | parchive )
|
||||||
|
doesCommandExist par2
|
||||||
|
par2 r "${3}"
|
||||||
|
echo -e "${GREEN}Repaired with Parchive.${NC}" ;;
|
||||||
|
* )
|
||||||
|
echo -e "${RED}Unknown archive format: ${2}${NC}" && exit 3 ;;
|
||||||
|
esac ;;
|
||||||
|
* )
|
||||||
|
echo -e "${RED}Unknown command: ${1}${NC}" && exit 2 ;;
|
||||||
|
esac
|
||||||
109
scripts/archivegithub.sh
Normal file
109
scripts/archivegithub.sh
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Version 2024/01/28 - Changelog: https://gist.github.com/AriRexouium/9cf8cc6e3ea66d4c67de38c6500391e4
|
||||||
|
# This script uses the GitHub API to retrieve the logged in user's repos and gists, downloads them, then archives them.
|
||||||
|
# Create a classic PAT with the 'repo', 'gist' & 'admin:public_key' scopes and update TOKEN for this script to work.
|
||||||
|
# https://github.com/settings/tokens
|
||||||
|
# repo: To clone private repositories.
|
||||||
|
# gist: To clone private gists.
|
||||||
|
# admin:public_key: To create and delete the ssh key used for cloning.
|
||||||
|
#
|
||||||
|
# Usage: ./archivegithub.sh
|
||||||
|
#
|
||||||
|
# License:
|
||||||
|
# This script is licensed under the GNU General Public License v3.0 or later.
|
||||||
|
# For more information, see https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
# Copyright (C) 2023 Jarrett Aiken <jarret.aiken@achl.fr> (https://achl.fr)
|
||||||
|
|
||||||
|
TOKEN=""
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
ES="\x1B"
|
||||||
|
GREEN="$ES[0;32m"
|
||||||
|
YELLOW="$ES[0;33m"
|
||||||
|
BLUE="$ES[0;34m"
|
||||||
|
NC="$ES[0m"
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Connecting to GitHub...${NC}"
|
||||||
|
QUERY="{viewer{login repositories(first:100,ownerAffiliations:OWNER){nodes{name}}gists(first:100,privacy:ALL){nodes{name}}}}"
|
||||||
|
REQUEST=$(curl \
|
||||||
|
-s \
|
||||||
|
-X POST \
|
||||||
|
-H "Authorization: Bearer ${TOKEN}" \
|
||||||
|
-d "{\"query\":\"${QUERY}\"}" \
|
||||||
|
"https://api.github.com/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
LOGIN="$(echo "${REQUEST}" | jq -r ".data.viewer.login")"
|
||||||
|
REPOS=$(echo "${REQUEST}" | jq -r ".data.viewer.repositories.nodes[].name")
|
||||||
|
GISTS=$(echo "${REQUEST}" | jq -r ".data.viewer.gists.nodes[].name")
|
||||||
|
echo -e "${GREEN}Logged in as ${LOGIN} with $(echo "${REPOS}" | wc -l) repos and $(echo "${GISTS}" | wc -l) gists.${NC}\n"
|
||||||
|
|
||||||
|
mkdir -p "${PWD}/${LOGIN}/"{repos,gists}
|
||||||
|
_PWD="${PWD}/${LOGIN}"
|
||||||
|
|
||||||
|
echo -e "${BLUE}Generating SSH key...${NC}"
|
||||||
|
SSHK="${_PWD}/id_ed25519"
|
||||||
|
ssh-keygen \
|
||||||
|
-q \
|
||||||
|
-t ed25519 \
|
||||||
|
-f "${SSHK}" \
|
||||||
|
-N ""
|
||||||
|
chmod 600 "${SSHK}"
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Adding SSH key to account...${NC}\n"
|
||||||
|
KEYID=$(curl \
|
||||||
|
-s \
|
||||||
|
-X POST \
|
||||||
|
-H "Authorization: Bearer ${TOKEN}" \
|
||||||
|
-d "{\"key\":\"$(cat "${SSHK}.pub")\"}" \
|
||||||
|
"https://api.github.com/user/keys" \
|
||||||
|
| jq -r ".id"
|
||||||
|
)
|
||||||
|
|
||||||
|
cd "${_PWD}/repos"
|
||||||
|
echo -e "${GREEN}Cloning repos...${NC}\n"
|
||||||
|
for REPO in ${REPOS}; do
|
||||||
|
echo -e "${BLUE}Cloning ${REPO}...${NC}"
|
||||||
|
git clone \
|
||||||
|
-q \
|
||||||
|
-c core.sshCommand="ssh -i ${SSHK}" \
|
||||||
|
"git@github.com:${LOGIN}/${REPO}.git" \
|
||||||
|
&& sleep 1 # so 'tar' doesn't occationally step on the toes of 'git clone'.
|
||||||
|
echo -e "${BLUE}Archiving ${REPO}...${NC}"
|
||||||
|
tar -cJf "${REPO}.tar.xz" "${REPO}"
|
||||||
|
echo -e "${YELLOW}Cleaning up ${REPO}...${NC}"
|
||||||
|
rm -rf "${REPO}"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
cd "${_PWD}/gists"
|
||||||
|
echo -e "${GREEN}Cloning gists...${NC}\n"
|
||||||
|
for GIST in ${GISTS}; do
|
||||||
|
echo -e "${BLUE}Cloning ${GIST}...${NC}"
|
||||||
|
git clone \
|
||||||
|
-q \
|
||||||
|
-c core.sshCommand="ssh -i ${SSHK}" \
|
||||||
|
"git@gist.github.com:${GIST}.git" \
|
||||||
|
&& sleep 1 # so 'tar' doesn't occationally step on the toes of 'git clone'.
|
||||||
|
echo -e "${BLUE}Archiving ${GIST}...${NC}"
|
||||||
|
tar -cJf "${GIST}.tar.xz" "${GIST}"
|
||||||
|
echo -e "${YELLOW}Cleaning up ${GIST}...${NC}"
|
||||||
|
rm -rf "${GIST}"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Removing SSH key from account...${NC}"
|
||||||
|
curl \
|
||||||
|
-s \
|
||||||
|
-X DELETE \
|
||||||
|
-H "Authorization: Bearer ${TOKEN}" \
|
||||||
|
"https://api.github.com/user/keys/${KEYID}"
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Removing SSH key...${NC}\n"
|
||||||
|
rm -rf "${SSHK}"*
|
||||||
|
|
||||||
|
echo -e "${GREEN}Finished!${NC}\n"
|
||||||
34
scripts/autoupdate.sh
Normal file
34
scripts/autoupdate.sh
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Version 2024/01/28 - Changelog: https://gist.github.com/AriRexouium/4a1277a9e8405a5b357778f6ff0764ba
|
||||||
|
# This script checks for updates to a GitHub Gist and automatically updates if a new version is available.
|
||||||
|
#
|
||||||
|
# Usage: ./autoupdate.sh
|
||||||
|
#
|
||||||
|
# License:
|
||||||
|
# This script is licensed under the GNU General Public License v3.0 or later.
|
||||||
|
# For more information, see https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
# Copyright (C) 2023 Jarrett Aiken <jarret.aiken@achl.fr> (https://achl.fr)
|
||||||
|
|
||||||
|
GITHUB_USERNAME="AriRexouium"; GITHUB_GIST="4a1277a9e8405a5b357778f6ff0764ba"
|
||||||
|
|
||||||
|
UPDATE_TIME_FILE="${0}.update"
|
||||||
|
if [ -f "${UPDATE_TIME_FILE}" ]; then
|
||||||
|
UPDATE_TIME=$(cat "${UPDATE_TIME_FILE}")
|
||||||
|
else
|
||||||
|
UPDATE_TIME=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURRENT_TIME=$(date +%s); COOLDOWN_TIME=86400
|
||||||
|
if [ $((CURRENT_TIME - UPDATE_TIME)) -ge ${COOLDOWN_TIME} ]; then
|
||||||
|
CURRENT_VERSION=$(cat "${0}"); LATEST_VERSION=$(curl -s https://gist.githubusercontent.com/${GITHUB_USERNAME}/${GITHUB_GIST}/raw)
|
||||||
|
if [ "${CURRENT_VERSION}" != "${LATEST_VERSION}" ]; then
|
||||||
|
echo "${LATEST_VERSION}" > "${0}"
|
||||||
|
chmod +x "${0}"
|
||||||
|
echo "${CURRENT_TIME}" > "${UPDATE_TIME_FILE}"
|
||||||
|
exec "./${0}" "${@}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
49
scripts/batchprotect.sh
Normal file
49
scripts/batchprotect.sh
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Version 2024/01/28 - Changelog: https://gist.github.com/AriRexouium/425d07d5e651b479069d0d56e4b5fa60
|
||||||
|
# This script provides a wrapper to batch protect your files with PAR2 and GPG.
|
||||||
|
#
|
||||||
|
# Usage: ./batchprotect.sh
|
||||||
|
#
|
||||||
|
# License:
|
||||||
|
# This shell script is based on the example from
|
||||||
|
# https://wiki.archlinux.org/title/Parchive#Batch-protecting_your_files
|
||||||
|
# which is licensed under the GNU Free Documentation License 1.3 or later
|
||||||
|
# For more information, see https://www.gnu.org/licenses/fdl-1.3.html
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
ES="\x1B"
|
||||||
|
GREEN="$ES[0;32m"
|
||||||
|
NC="$ES[0m"
|
||||||
|
|
||||||
|
# Internal Field Separator
|
||||||
|
OIFS="${IFS}"
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
gpgKey="ACE142C15F53182454DEE0802B45FEC5D0B181E7"
|
||||||
|
redundancy=10
|
||||||
|
|
||||||
|
list=$(find . -type f | shuf)
|
||||||
|
for file in ${list}; do
|
||||||
|
ending="${file//\(.*\)\.\(.*\)$/\2/}" # Extract the file extension from the filename using sed
|
||||||
|
|
||||||
|
# Check if the PAR2 file doesn't already exist, the file isn't a PAR2 or signature file, and the file isn't empty
|
||||||
|
if [ ! -e "${file}-${redundancy}p.par2" ] && [ "${ending}" != "par2" ] && [ "${ending}" != "sig" ] && [ "$(stat --format=%s "${file}")" != 0 ]; then
|
||||||
|
echo -e "${GREEN}Creating archive for ${file}.${NC}"
|
||||||
|
par2 c -qq -n1 -r"${redundancy}" "${file}" > /dev/null 2>&1 | tee /dev/tty
|
||||||
|
rm "${file}.par2"
|
||||||
|
mv "${file}.vol"*"par2" "${file}-${redundancy}p.par2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the signature file doesn't already exist and the file isn't a PAR2 or signature file
|
||||||
|
if [ ! -e "${file}.sig" ] && [ "${ending}" != "par2" ] && [ "${ending}" != "sig" ]; then
|
||||||
|
echo -e "${GREEN}Creating signature for ${file}.${NC}"
|
||||||
|
gpg --quiet --default-key "${gpgKey}" --detach-sign --yes "${file}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
IFS="${OIFS}"
|
||||||
52
scripts/iris.sh
Normal file
52
scripts/iris.sh
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Version 2024/01/28 - Changelog: https://gist.github.com/AriRexouium/17dde617d245a6a7e91878974719d42c
|
||||||
|
# Iris Color Library
|
||||||
|
# This script sets all forground & background colors and graphic modifiers to variables.
|
||||||
|
# Based on: https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
|
||||||
|
#
|
||||||
|
# Usage: source ./iris.sh
|
||||||
|
#
|
||||||
|
# License:
|
||||||
|
# This script is licensed under the GNU General Public License v3.0 or later.
|
||||||
|
# For more information, see https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
# Copyright (C) 2023 Jarrett Aiken <jarret.aiken@achl.fr> (https://achl.fr)
|
||||||
|
|
||||||
|
ES="\x1B"
|
||||||
|
|
||||||
|
# Foreground Bright
|
||||||
|
FBla="$ES[30m" FBBla="$ES[90m" # Black
|
||||||
|
FRed="$ES[31m" FBRed="$ES[91m" # Red
|
||||||
|
FGre="$ES[32m" FBGre="$ES[92m" # Green
|
||||||
|
FYel="$ES[33m" FBYel="$ES[93m" # Yellow
|
||||||
|
FBlu="$ES[34m" FBBlu="$ES[94m" # Blue
|
||||||
|
FPur="$ES[35m" FBPur="$ES[95m" # Purple
|
||||||
|
FCya="$ES[36m" FBCya="$ES[96m" # Cyan
|
||||||
|
FWhi="$ES[37m" FBWhi="$ES[97m" # White
|
||||||
|
RFor="$ES[39m" # Default Foreground
|
||||||
|
|
||||||
|
# Background Bright
|
||||||
|
BBla="$ES[40m" BBBla="$ES[100m" # Black
|
||||||
|
BRed="$ES[41m" BBRed="$ES[101m" # Red
|
||||||
|
BGre="$ES[42m" BBGre="$ES[102m" # Green
|
||||||
|
BYel="$ES[43m" BBYel="$ES[103m" # Yellow
|
||||||
|
BBlu="$ES[44m" BBBlu="$ES[104m" # Blue
|
||||||
|
BPur="$ES[45m" BBPur="$ES[105m" # Purple
|
||||||
|
BCya="$ES[46m" BBCya="$ES[106m" # Cyan
|
||||||
|
BWhi="$ES[47m" BBWhi="$ES[107m" # White
|
||||||
|
RBac="$ES[49m" # Default Background
|
||||||
|
|
||||||
|
# Graphics Reset
|
||||||
|
SBol="$ES[1m" RBol="$ES[22m" # Bold
|
||||||
|
SDim="$ES[2m" RDim="$ES[22m" # Dim
|
||||||
|
SIta="$ES[3m" RIta="$ES[23m" # Italic
|
||||||
|
SUnd="$ES[4m" RUnd="$ES[24m" # Underline
|
||||||
|
SDun="$ES[21m" RDun="$ES[24m" # Double Underline
|
||||||
|
SBli="$ES[5m" RBli="$ES[25m" # Blinking
|
||||||
|
SInv="$ES[7m" RInv="$ES[27m" # Inverse
|
||||||
|
SHid="$ES[8m" RHid="$ES[28m" # Hidden
|
||||||
|
SStr="$ES[9m" RStr="$ES[29m" # Strikethrough
|
||||||
|
RAll="$ES[0m" # Reset All
|
||||||
Reference in New Issue
Block a user