30 Commits

Author SHA1 Message Date
root
6a2d9b0fee adaptation to trixie and excalibur 2025-11-19 14:35:40 +01:00
Geoffray Levasseur-Brandin
9b2c764181 typos 2025-06-19 14:50:46 +02:00
Geoffray Levasseur-Brandin
3d5a5e7718 typos 2025-06-19 14:50:21 +02:00
Geoffray Levasseur-Brandin
47e89b3b09 compress.sh: multiple correction and securisation 2025-06-19 14:49:49 +02:00
Geoffray Levasseur-Brandin
f0f80e2924 better display implementation 2025-06-19 14:47:14 +02:00
Geoffray Levasseur-Brandin
b08e457146 version bump 2025-06-19 14:42:14 +02:00
Geoffray Levasseur-Brandin
56e34bc346 few varaible securisation, new alias hdu 2025-06-19 14:41:31 +02:00
Geoffray Levasseur-Brandin
e9e9993dfc finished profile_uprade implementation 2025-06-19 14:40:02 +02:00
Geoffray Levasseur-Brandin
ff4c6702b7 secured rmhost 2025-06-19 14:39:10 +02:00
Geoffray Levasseur-Brandin
87dea45295 fixed some variable declarations 2025-06-19 14:38:18 +02:00
Geoffray Levasseur-Brandin
0abf481cf6 various improvement and securisation 2025-06-19 14:37:32 +02:00
Geoffray Levasseur-Brandin
a75299f7b4 non gnu date compatible, use local vars where possible 2025-06-19 14:36:13 +02:00
Geoffray Levasseur-Brandin
eeb87c5bfc make delay parametrable 2025-06-19 14:34:22 +02:00
Geoffray Levasseur-Brandin
4879b418db factorized code / thiner implementation 2025-06-19 14:33:36 +02:00
Geoffray Levasseur-Brandin
f944271488 added file_stats function 2025-06-19 14:32:29 +02:00
Geoffray Levasseur-Brandin
4be2e5ea87 add url encode / secure isipv4 2025-06-19 14:31:19 +02:00
Geoffray Levasseur-Brandin
9d528a6491 fix kt function 2025-06-19 14:30:38 +02:00
Geoffray Levasseur-Brandin
bef205ae84 bugfix, esthetic cleanup, better comments, version bump 2024-06-21 16:19:44 +02:00
Geoffray Levasseur
9e49e3e4d7 fixed url and redirection 2023-10-06 12:52:15 +02:00
94e7e79c76 Merge branch 'master' of https://git.geoffray-levasseur.org/fatalerrors/profile 2023-10-06 11:36:14 +02:00
55e88bd018 partial commit for profile upgrade 2023-10-06 11:35:40 +02:00
Geoffray Levasseur
18f1bc1543 fix bash/zsh test, some cosmetics 2023-10-06 11:22:10 +02:00
fatalerrors
0d7c7e9ab7 minor correction 2023-09-08 20:25:04 +02:00
root
64fecf16fb make profile path configurable as autodetection is too unprecise so far 2023-04-19 21:15:33 +00:00
c2ca5f659c Version bumped to 3.3.1 (3.3.0 untagged) 2023-02-24 19:00:23 +01:00
3248327e56 [fix] don't use library functions before it's loaded 2023-02-23 14:43:44 +01:00
fd984c4a16 fixed version detection, added busy function 2023-02-03 08:09:20 +01:00
c2a0ef0bd2 Initial version update support, changed versioning code, add installation path detection 2023-02-03 07:55:06 +01:00
dc64123fd9 dpkgs -> pkgs, corrected package manager detection 2023-02-03 07:24:09 +01:00
affe6e1487 cpkgs: corrected invalid character in code 2022-11-30 21:00:13 +01:00
19 changed files with 1101 additions and 601 deletions

View File

@@ -7,6 +7,17 @@ Current version from Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Version history: Version history:
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
# 24/02/2022 v3.3.1
Fixed version detection
Added "busy" function
Fixed use of library functions before it's loaded
# 28/11/2022 v3.3.0
Initial version update support
Changed versioning code
Added installation path detection
# 28/11/2022 v3.2.3 # 28/11/2022 v3.2.3
Made proper readme file, to improve Made proper readme file, to improve

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -34,13 +35,13 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Smartly uncompress archives (zip only) # Smartly uncompress archives (zip only for now)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
utaz() utaz()
{ {
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "utaz: uncompress all the given files and/or the ones found in the given" echo "utaz: uncompress all the given files and/or the ones found in the given"
echo " directories creating an host directory where needed." echo " directories creating an host directory where needed."
echo echo
@@ -55,15 +56,15 @@ utaz()
return 0 return 0
;; ;;
"-d"|"--delete") "-d" | "--delete")
local willrm=1 local willrm=1
;; ;;
"-c"|"--create-dir") "-c" | "--create-dir")
local createdir=1 local createdir=1
;; ;;
"-n"|"--no-dir") "-n" | "--no-dir")
local nodir=1 local nodir=1
;; ;;
@@ -80,28 +81,32 @@ utaz()
esac esac
done done
[[ $createdir && $nodir ]] && disp E "The --create-dir and --no-dir options are mutually exclusive." [[ $createdir && $nodir ]] && \
disp E "The --create-dir and --no-dir options are mutually exclusive."
[[ ! $LIST ]] && local LIST="." [[ ! $LIST ]] && local LIST="."
for zitem in $LIST; do for zitem in $LIST; do
[[ $(ls $zitem/*.zip 2> /dev/null | wc -l) -eq 0 ]] && shopt -s nullglob
disp W "$zitem contains no supported archive file, skipping." && local zips=("$zitem"/*.zip)
shopt -u nullglob
[[ ${#zips[@]} -eq 0 ]] && \
disp W "$zitem contains no supported archive file, skipping." && \
continue continue
for f in $zitem/*.zip; do for f in "$zitem"/*.zip; do
disp I "Processing archive $zitem/$f... " disp I "Processing archive $f... "
local dir=${f::-4} local dir=${f::-4}
mkdir -p $dir mkdir -p "$dir"
[[ $? -gt 0 ]] && [[ $? -gt 0 ]] &&
disp E "The filesystem can't create directories, exit!" && disp E "The filesystem can't create directories, exit!" &&
return 1 return 1
unzip -o $f -d $dir > /dev/null 2>&1 unzip -o "$f" -d "$dir" >/dev/null 2>&1
case $? in case $? in
0) 0)
[[ $willrm ]] && rm -f $f && disp I "File $zitem/$f deleted." [[ $willrm ]] && rm -f "$f" && disp I "File $zitem/$f deleted."
;; ;;
1) 1)
@@ -109,7 +114,7 @@ utaz()
;; ;;
*) *)
disp E "The zip file seems corrupted, failed." disp E "The zip file seems corrupted, failed."
rm -rf $dir > /dev/null 2>&1 rm -rf "$dir" >/dev/null 2>&1
continue continue
;; ;;
esac esac
@@ -117,7 +122,7 @@ utaz()
if [[ $createdir ]]; then if [[ $createdir ]]; then
disp I "Archive extracted successfully in subdirectory." disp I "Archive extracted successfully in subdirectory."
elif [[ $nodir ]]; then elif [[ $nodir ]]; then
mv ./$dir/* ./ && rmdir $dir mv "./$dir/"* ./ && rmdir "$dir"
disp I "Archive extracted successfully, no subdirectory needed." disp I "Archive extracted successfully, no subdirectory needed."
else else
subdirs=$(find $dir -maxdepth 1 | wc -l) subdirs=$(find $dir -maxdepth 1 | wc -l)
@@ -136,7 +141,7 @@ export -f utaz
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Compress directories or files into one or more archive # Compress directories or files into one or more archive
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
taz () taz()
{ {
_doxz() _doxz()
{ {
@@ -166,11 +171,11 @@ taz ()
disp E "Program 'plzip' or 'lzip' are not installed, aborting." disp E "Program 'plzip' or 'lzip' are not installed, aborting."
return 127 return 127
} }
local command=lzip command=lzip
local procopt="" local procopt=""
[[ $2 -gt 1 ]] && [[ $2 -gt 1 ]] &&
disp W "lzip doesn't support multithreading, falling back to 1 thread." && disp W "lzip doesn't support multithreading, falling back to 1 thread." &&
disp W "Consitder installing plzip to obtain multithreading abilities." disp W "Consider installing plzip to obtain multithreading abilities."
} }
[[ $4 ]] && local verb="-vv" [[ $4 ]] && local verb="-vv"
@@ -194,7 +199,7 @@ taz ()
local procopt="" local procopt=""
[[ $2 -gt 1 ]] && [[ $2 -gt 1 ]] &&
disp W "gzip doesn't support multithreading, falling back to 1 thread." && disp W "gzip doesn't support multithreading, falling back to 1 thread." &&
disp W "Consitder installing pigz to obtain multithreading abilities." disp W "Consider installing pigz to obtain multithreading abilities."
} }
[[ $4 ]] && local verb="--verbose" [[ $4 ]] && local verb="--verbose"
@@ -218,7 +223,7 @@ taz ()
local procopt="" local procopt=""
[[ $2 -gt 1 ]] && [[ $2 -gt 1 ]] &&
disp W "bzip2 doesn't support multithreading, falling back to 1 thread." && disp W "bzip2 doesn't support multithreading, falling back to 1 thread." &&
disp W "Consitder installing pbzip2 to obtain multithreading abilities." disp W "Consider installing pbzip2 to obtain multithreading abilities."
} }
[[ $4 ]] && local verb="-v" [[ $4 ]] && local verb="-v"
@@ -243,9 +248,9 @@ taz ()
return $? return $?
} }
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "taz: archive all files of a directory." echo "taz: archive all files of a directory."
echo echo
echo "Usage: taz [option] [--parallel=<n>] [--format=<format>] [directory1 ... directoryN]" echo "Usage: taz [option] [--parallel=<n>] [--format=<format>] [directory1 ... directoryN]"
@@ -273,24 +278,24 @@ taz ()
return 0 return 0
;; ;;
"-d"|"--delete") "-d" | "--delete")
local willrm=1 local willrm=1
;; ;;
"-f"?*|"--format"?*) "-f"?* | "--format"?*)
local compform=$(echo "$opt" | cut -f 2- -d '=') local compform=$(echo "$opt" | cut -f 2- -d '=')
;; ;;
"-p"?*|"--parallel"?*) "-p"?* | "--parallel"?*)
local nproc=$(echo "$opt" | cut -f 2- -d '=') local nproc=$(echo "$opt" | cut -f 2- -d '=')
;; ;;
"-v"|"--verbose") "-v" | "--verbose")
local verbose=1 local verbose=1
;; ;;
"-q"|"--quiet") "-q" | "--quiet")
QUIET=1 local quiet=1
;; ;;
"-"*) "-"*)
@@ -311,17 +316,17 @@ taz ()
[[ ! $compform ]] && compform=lz # safe and efficient (unless data are already compressed) [[ ! $compform ]] && compform=lz # safe and efficient (unless data are already compressed)
[[ ! $nproc ]] && nproc=1 [[ ! $nproc ]] && nproc=1
[[ ! $complevel ]] && complevel=6 [[ ! $complevel ]] && complevel=6
[[ $verbose -gt 1 && $QUIET -gt 1 ]] && [[ $verbose -gt 1 && $quiet -gt 1 ]] &&
disp E "The --verbose and --quiet options can't be used together." disp E "The --verbose and --quiet options can't be used together."
for item in $LIST; do for item in $LIST; do
local donetar=0 local donetar=0
disp I "Processing $item..." disp I "Processing $item..."
if [[ -d $item ]]; then if [[ -d "$item" ]]; then
disp I "\t Creating $item.tar... " disp I "\t Creating $item.tar... "
tar -cf $item{.tar,} tar -cf "$item.tar" "$item"
if [[ ! $? -eq 0 ]]; then if [[ ! $? -eq 0 ]]; then
disp E "tar file creation failed, skipping to next item." disp E "tar file creation failed, skipping to next item."
continue continue
@@ -336,7 +341,7 @@ taz ()
# Skip compression part if tar is asked # Skip compression part if tar is asked
if [[ $compform != "tar" ]]; then if [[ $compform != "tar" ]]; then
disp I "\t Compressing archive..." disp I "\t Compressing archive..."
_do$compform $fname $nproc $complevel $verbose _do$compform "$fname" "$nproc" "$complevel" "$verbose"
[[ ! $? -eq 0 ]] && case $? in [[ ! $? -eq 0 ]] && case $? in
127) 127)
disp E "Compression program unavailable, aborting." disp E "Compression program unavailable, aborting."
@@ -348,14 +353,17 @@ taz ()
;; ;;
esac esac
[[ $donetar -gt 0 ]] && rm $fname [[ $donetar -gt 0 ]] && rm "$fname"
fi fi
if [[ $willrm ]]; then if [[ $willrm ]]; then
disp I "\t Deleting original source as asked... " disp I "\t Deleting original source as asked... "
rm -r $item rm -r "$item"
fi fi
done done
unset QUIET unset quiet
} }
export -f taz export -f taz
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,7 +37,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Display a backtrace # Display a backtrace
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
function backtrace () function backtrace()
{ {
echo "========= Call stack =========" echo "========= Call stack ========="
typeset -i i=0 typeset -i i=0
@@ -45,7 +46,7 @@ function backtrace ()
for func in "${FUNCNAME[@]}"; do for func in "${FUNCNAME[@]}"; do
if [[ $i -ne 0 ]]; then if [[ $i -ne 0 ]]; then
printf '%15s() %s:%d\n' \ printf '%15s() %s:%d\n' \
"$func" "${BASH_SOURCE[$i]}" "${BASH_LINENO[ (( $i - 1)) ]}" "$func" "${BASH_SOURCE[$i]}" "${BASH_LINENO[(($i - 1))]}"
fi fi
let i++ || true let i++ || true
done done
@@ -56,25 +57,24 @@ function backtrace ()
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Function to be trapped for errors investigation # Function to be trapped for errors investigation
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
function error () function error()
{ {
local errcode=$? local errcode=$?
backtrace backtrace
return $errcode return $errcode
} }
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Activate or deactivate error trapping to display backtrace # Activate or deactivate error trapping to display backtrace
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
settrace () settrace()
{ {
local status="off" local status="off"
[[ $(trap -p ERR) ]] && status="on" [[ $(trap -p ERR) ]] && status="on"
#trap -p ERR #trap -p ERR
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "Try to activate backtrace display for script debugging." echo "Try to activate backtrace display for script debugging."
echo echo
echo "Options:" echo "Options:"
@@ -105,3 +105,6 @@ settrace ()
unset status unset status
} }
export -f settrace export -f settrace
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -40,6 +41,7 @@
export DEFAULTFG="\e[0;39m" export DEFAULTFG="\e[0;39m"
export DEFAULTBG="\e[0;49m" export DEFAULTBG="\e[0;49m"
export DEFAULTCOL=${DEFAULTBG}${DEFAULTFG} export DEFAULTCOL=${DEFAULTBG}${DEFAULTFG}
export RESETCOL=$'\e[0m'
# Regular Colors # Regular Colors
export Black='\e[0;30m' export Black='\e[0;30m'
@@ -111,7 +113,6 @@ export On_IPurple='\e[0;105m'
export On_ICyan='\e[0;106m' export On_ICyan='\e[0;106m'
export On_IWhite='\e[0;107m' export On_IWhite='\e[0;107m'
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Display a message # Display a message
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@@ -121,28 +122,31 @@ disp()
"I") "I")
local heads="[ ${IGreen}info${DEFAULTFG} ]" local heads="[ ${IGreen}info${DEFAULTFG} ]"
shift shift
[[ -z $QUIET || $QUIET -ne 1 ]] && echo -e "${heads} $@" [[ -z $QUIET || $QUIET -ne 1 ]] && \
printf "%b\n" "${heads} $*${RESETCOL}"
;; ;;
"W") "W")
local heads="[ ${IYellow}Warning${DEFAULTFG} ]" local heads="[ ${IYellow}Warning${DEFAULTFG} ]"
shift shift
echo -e "${heads} $@" >&2 printf "%b\n" "${heads} $*${RESETCOL}" >&2
;; ;;
"E") "E")
local heads="[ ${IRed}ERROR${DEFAULTFG} ]" local heads="[ ${IRed}ERROR${DEFAULTFG} ]"
shift shift
echo -e "${heads} $@" >&2 printf "%b\n" "${heads} $*${RESETCOL}" >&2
;; ;;
"D") "D")
local heads"[ ${ICyan}debug${DEFAULTFG} ]" local heads="[ ${ICyan}debug${DEFAULTFG} ]"
shift shift
[[ -n $DEBUG && $DEBUG -gt 1 ]] && echo -e "${heads} $@" [[ -n $DEBUG && $DEBUG -gt 1 ]] && \
printf "%b\n" "${heads} $*${RESETCOL}"
;; ;;
"*") * )
local heads="" [[ -z $QUIET || $QUIET -ne 1 ]] && \
[[ -z $QUIET || $QUIET -ne 1 ]] && echo -e "$@" printf "%b\n" "$*"
;; ;;
esac esac
unset heads
} }
export -f disp export -f disp
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -47,19 +48,18 @@ expandlist()
echo $result echo $result
} }
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Clean a directory or a tree from temporary or backup files # Clean a directory or a tree from temporary or backup files
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
clean () clean()
{ {
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-r"|"--recurs") "-r" | "--recurs")
local recursive=1 local recursive=1
;; ;;
"-h"|"--help") "-h" | "--help")
echo "clean: erase backup files in the given directories." echo "clean: erase backup files in the given directories."
echo echo
echo "Usage: clean [option] [directory1] [...[directoryX]]" echo "Usage: clean [option] [directory1] [...[directoryX]]"
@@ -73,11 +73,11 @@ clean ()
return 0 return 0
;; ;;
"-s"|"--shell") "-s" | "--shell")
local outshell=1 local outshell=1
;; ;;
"-f"|"--force") "-f" | "--force")
local force=1 local force=1
;; ;;
@@ -100,7 +100,7 @@ clean ()
unset recursive force unset recursive force
for dir in $dirlist; do for dir in $dirlist; do
local dellist=$(find $dir $findopt -type f -name "*~" -o -name "#*#" \ local dellist=$(find "$dir" $findopt -type f -name "*~" -o -name "#*#" \
-o -name "*.bak" -o -name ".~*#") -o -name "*.bak" -o -name ".~*#")
for f in $dellist; do for f in $dellist; do
if [[ ! $outshell ]]; then if [[ ! $outshell ]]; then
@@ -114,31 +114,29 @@ clean ()
} }
export -f clean export -f clean
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Create a directory then goes inside # Create a directory then goes inside
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
mcd () mcd()
{ {
if [[ ! $# -eq 1 ]] ; then if [[ ! $# -eq 1 ]]; then
disp E "Create a directory then goes inside." disp E "Create a directory then goes inside."
disp E "Usage: mcd <directory>" disp E "Usage: mcd <directory>"
return 1 return 1
fi fi
mkdir -pv $1 && cd $1 mkdir -pv "$1" && cd "$1" || echo "Failed create or change directory."
} }
export -f mcd export -f mcd
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Rename all files in current directory to replace spaces with _ # Rename all files in current directory to replace spaces with _
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
rmspc () rmspc()
{ {
local lst="" local lst=""
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "rmspc: remove spaces from all filenames in current directories" echo "rmspc: remove spaces from all filenames in current directories"
echo echo
echo "Usage: rmspc [option]" echo "Usage: rmspc [option]"
@@ -156,11 +154,11 @@ rmspc ()
return 0 return 0
;; ;;
"-r"|"--recursive") "-r" | "--recursive")
local recurs=1 local recurs=1
;; ;;
"-c"?*|"--subst-char"?*) "-c"?* | "--subst-char"?*)
if [[ $(echo $opt | grep "=") ]]; then if [[ $(echo $opt | grep "=") ]]; then
local substchar=$(echo "$opt" | cut -f 2- -d '=') local substchar=$(echo "$opt" | cut -f 2- -d '=')
else else
@@ -168,11 +166,11 @@ rmspc ()
fi fi
;; ;;
"-v"|"--verbose") "-v" | "--verbose")
local verb=1 local verb=1
;; ;;
"-s"|"--shell") "-s" | "--shell")
local shell=1 local shell=1
;; ;;
@@ -192,9 +190,9 @@ rmspc ()
[[ $recurs ]] && [[ -d "$f" ]] && ( [[ $recurs ]] && [[ -d "$f" ]] && (
[[ $verb ]] && disp I "Entering directory $(pwd)/$f ..." [[ $verb ]] && disp I "Entering directory $(pwd)/$f ..."
local lastdir=$f local lastdir=$f
pushd "$f" > /dev/null pushd "$f" >/dev/null
rmspc $@ rmspc $@
popd > /dev/null popd >/dev/null
[[ $verb ]] && disp I "Leaving directory $(pwd)/$lastdir" [[ $verb ]] && disp I "Leaving directory $(pwd)/$lastdir"
unset lastdir unset lastdir
) )
@@ -212,3 +210,134 @@ rmspc ()
unset lst substchar verb shell newf command mvopt unset lst substchar verb shell newf command mvopt
} }
export -f rmspc export -f rmspc
# ------------------------------------------------------------------------------
# display stats about a file structure
# ------------------------------------------------------------------------------
file_stats()
{
local human=0 details=0 only_avg=0 only_med=0 only_count=0 only_total=0
local path="." show_all=1 ext_filter="" ext_list="" min_size="" max_size=""
local OPTIND opt
# Analyse options
while [[ "$1" =~ ^- ]]; do
case "$1" in
-H) human=1 ;;
-d) details=1 ;;
-m) only_avg=1; show_all=0 ;;
-M) only_med=1; show_all=0 ;;
-c) only_count=1; show_all=0 ;;
-t) only_total=1; show_all=0 ;;
-a) human=1; details=1 ;;
-x) ext_filter="${2#.}"; shift ;;
-X) ext_list="${2}"; shift ;;
--min) min_size="$2"; shift ;;
--max) max_size="$2"; shift ;;
--) shift; break ;;
-*) echo "Usage: file_stats [-h] [-d] [-mMctaxX --min N --max N] [path]"; return 1 ;;
esac
shift
done
[ -n "$1" ] && path="$1"
# Prepare find filters
local find_cmd=(find "$path" -type f)
# Extension simple
if [[ -n "$ext_filter" ]]; then
find_cmd+=(-iname "*.$ext_filter")
fi
# Extension liste
if [[ -n "$ext_list" ]]; then
IFS=',' read -ra exts <<< "$ext_list"
find_cmd+=('(')
for i in "${!exts[@]}"; do
[[ $i -ne 0 ]] && find_cmd+=(-o)
find_cmd+=(-iname "*.${exts[$i]}")
done
find_cmd+=(')')
fi
# Taille min/max (à évaluer en octets)
if [[ -n "$min_size" ]]; then
find_cmd+=(-size +"$(numfmt --from=iec "$min_size")"c)
fi
if [[ -n "$max_size" ]]; then
find_cmd+=(-size -"$(( $(numfmt --from=iec "$max_size") + 1 ))"c)
fi
# Exécution
"${find_cmd[@]}" -printf "%s\n" 2>/dev/null | sort -n | awk -v human="$human" -v details="$details" -v only_avg="$only_avg" -v only_med="$only_med" -v only_count="$only_count" -v only_total="$only_total" -v show_all="$show_all" -v path="$path" '
function human_readable(x) {
split("B KiB MiB GiB TiB", units)
for (i=1; x>=1024 && i<5; i++) x /= 1024
return sprintf("%.2f %s", x, units[i])
}
{
sizes[NR] = $1
total += $1
if (min == "" || $1 < min) min = $1
if (max == "" || $1 > max) max = $1
if ($1 == 0) bucket[0]++
else {
b = int(log($1)/log(1024))
bucket[b]++
}
}
END {
count = NR
if (count == 0) {
print "Aucun fichier trouvé."; exit
}
moyenne = total / count
if (count % 2 == 1)
mediane = sizes[(count + 1) / 2]
else
mediane = (sizes[count / 2] + sizes[count / 2 + 1]) / 2
function out(label, val) {
if (human) val = human_readable(val)
printf "%-20s : %s\n", label, val
}
if (only_avg) out("Taille moyenne", moyenne)
else if (only_med) out("Taille médiane", mediane)
else if (only_count) printf "Nombre de fichiers : %d\n", count
else if (only_total) out("Taille totale", total)
else {
if (show_all || human || details) {
printf "Statistiques sur \"%s\"\n", path
printf "-------------------------\n"
}
out("Nombre de fichiers", count)
out("Taille totale", total)
out("Taille moyenne", moyenne)
out("Taille médiane", mediane)
out("Taille minimale", min)
out("Taille maximale", max)
}
if (details) {
print "\nHistogramme des tailles :"
for (i = 0; i in bucket; i++) {
low = 2^i
high = 2^(i+1)
if (i == 0)
label = sprintf("%4s %4s", "0", "1K")
else
label = sprintf("%4s %4s", human_readable(low), human_readable(high))
printf "%-20s : %5d fichiers\n", label, bucket[i]
}
}
}'
}
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# EOF

70
profile.d/fun.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details.
#
# * Redistribution and use in source and binary forms,
# * with or without modification, are permitted provided
# * that the following conditions are met:
# *
# * Redistributions of source code must retain the above
# * copyright notice, this list of conditions and the
# * following disclaimer.
# *
# * Redistributions in binary form must reproduce the above
# * copyright notice, this list of conditions and the following
# * disclaimer in the documentation and/or other materials
# * provided with the distribution.
# *
# * Neither the name of the copyright holder nor the names
# * of any other contributors may be used to endorse or
# * promote products derived from this software without
# * specific prior written permission.
# *
# * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
# * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# * OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Make non-IT peoples think you're busy doing something hard
# ------------------------------------------------------------------------------
busy()
{
local pattern="ca fe"
for arg in "$@"; do
case "$arg" in
--delay=*)
delay_ms="${arg#*=}"
if ! [[ $delay_ms =~ ^[0-9]+$ ]]; then
disp E "Invalid delay value, must be an integer (milliseconds)."
return 1
fi
;;
*)
pattern="$arg"
;;
esac
done
# Convert milliseconds to seconds for 'sleep'
local delay_s=$(awk "BEGIN { printf \"%.3f\", $delay_ms / 1000 }")
cat /dev/urandom | hexdump -C | grep --line-buffered "$pattern" | \
while read -r line; do
echo $line
[[ $delay_ms -gt 0 ]] && sleep "$delay_s"
done
unset pattern
}
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -66,3 +67,5 @@ EOF
} }
export -f help export -f help
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,28 +37,31 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Show profile version # Show profile version
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
ver () ver()
{ {
[[ -z $PROFVERSION ]] && \
disp W "No version defined. Profile is probably badly installed." && \
return 1
disp "Profile version $PROFVERSION." disp "Profile version $PROFVERSION."
} }
export -f ver export -f ver
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Display weather of the given city (or default one) # Display weather of the given city (or default one)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
meteo () meteo()
{ {
cities=$@ local encoded cities=("$@")
[[ $# -eq 0 ]] && local cities=$DEFAULT_CITY [[ $# -eq 0 ]] && cities=("$DEFAULT_CITY")
for city in $cities; do for city in "${cities[@]}"; do
curl https://wttr.in/$city || disp E "Failed fetching datas for $city." encoded=$(urlencode "$city")
curl -s "https://wttr.in/$encoded" || \
disp E "Failed fetching datas for $city."
done done
} }
export -f meteo export -f meteo
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Display system general information # Display system general information
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@@ -68,23 +72,33 @@ showinfo()
if [[ -s /usr/share/figlet/ansi_shadow.flf ]]; then if [[ -s /usr/share/figlet/ansi_shadow.flf ]]; then
local figopt="-f ansi_shadow" local figopt="-f ansi_shadow"
fi fi
figlet -k $(hostname) $figopt if [[ -n $figopt ]]; then
figlet -k $figopt $(hostname)
else else
echo "$(hostname -f)" figlet $(hostname)
fi
else
hostname -f
fi fi
echo "" echo ""
if command -v neofetch >/dev/null 2>&1; then if command -v neofetch >/dev/null 2>&1; then
neofetch neofetch
elif command -v fastfetch >/dev/null 2>&1; then
fastfetch
else else
( (
if [[ -s /etc/os-release ]]; then if [[ -s /etc/os-release ]]; then
# shellcheck disable=SC1091
. /etc/os-release . /etc/os-release
echo "$NAME $VERSION" echo "$NAME $VERSION"
else else
cat /proc/version cat /proc/version
fi fi
echo "Uptime: $(uptime)" echo "Uptime: $(uptime -p)"
) )
fi fi
} }
export -f showinfo export -f showinfo
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -33,38 +34,69 @@
# * OF SUCH DAMAGE. # * OF SUCH DAMAGE.
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
locale_check() {
locale -a | grep -qx "$1" || {
disp W "Locale '$1' is not installed on this system."
return 1
}
return 0
}
# ------------------------------------------------------------------------------
# Change locale to the given one in parameter
# ------------------------------------------------------------------------------
setlocale()
{
local loc=$1
[[ -z $loc ]] && disp E "No locale specified." && return 1
locale_check "$loc" || return 1
export LANG=$loc
export LC_MESSAGES=$loc
export LC_TIME=$loc
export LC_NUMERIC=$loc
export LC_MONETARY=$loc
export LC_COLLATE=$loc
export LC_CTYPE=$loc
disp I "Locale set to $loc."
}
export -f setlocale
# ------------------------------------------------------------------------------
# Special case : change locale to C standard
# ------------------------------------------------------------------------------
setc()
{
# Locale definitions
export LC_ALL=C
disp I "Locale changed to standard C (POSIX)."
}
export -f setc
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Change locale to French # Change locale to French
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
setfr () setfr()
{ {
# Set fr locale definitions # Set fr locale definitions
export LANG=fr_FR.UTF-8 setlocale "fr_FR.UTF-8"
export LC_MESSAGES=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
} }
export -f setfr export -f setfr
# ------------------------------------------------------------------------------
# Change locale to C standard
# ------------------------------------------------------------------------------
setc ()
{
# Locale definitions
export LANG=C
export LC_MESSAGES=C
export LC_ALL=C
}
export -f setc
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Change locale to US (needed by Steam) # Change locale to US (needed by Steam)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
setus () setus()
{ {
# Locale definitions setlocale "en_US.UTF-8"
export LANG=en_US.UTF-8
export LC_MESSAGES=en_US.UTF-8
export LC_ALL=en_US.UTF-8
} }
export -f setus export -f setus
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,10 +37,11 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Determine if parameter is a valid IPv4 address # Determine if parameter is a valid IPv4 address
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
isipv4 () isipv4()
{ {
# Set up local variables # Set up local variables
local ip=$1 local ip=$1
[[ -z $ip ]] && return 1
# Start with a regex format test # Start with a regex format test
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
@@ -47,8 +49,8 @@ isipv4 ()
IFS="." IFS="."
ip=($ip) ip=($ip)
IFS=$old_ifs IFS=$old_ifs
if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 &&
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
if [[ -t 1 ]]; then if [[ -t 1 ]]; then
disp "The given IPv4 is valid." disp "The given IPv4 is valid."
fi fi
@@ -62,11 +64,10 @@ isipv4 ()
} }
export -f isipv4 export -f isipv4
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Determine if parameter is a valid IPv4 address # Determine if parameter is a valid IPv4 address
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
isipv6 () isipv6()
{ {
local ip="$1" local ip="$1"
local regex='^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$' local regex='^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$'
@@ -82,3 +83,25 @@ isipv6 ()
return 1 return 1
} }
export -f isipv6 export -f isipv6
# ------------------------------------------------------------------------------
# Encode a string so it can be used as a URL parameter
# ------------------------------------------------------------------------------
urlencode() {
local LANG=C
local str="$*"
local length="${#str}"
for (( i = 0; i < length; i++ )); do
local c="${str:i:1}"
case "$c" in
[a-zA-Z0-9.~_-]) printf "$c" ;;
' ') printf '+' ;;
*) printf '%%%02X' "'$c" #| cut -d' ' -f2 ;;
esac
done
}
export -f urlencode
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,12 +37,12 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Look for a package within installed one # Look for a package within installed one
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
dpkgs () pkgs()
{ {
local count=0 local count=0
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "dpkgs: look for an installed package by it's name." echo "dpkgs: look for an installed package by it's name."
echo echo
echo "Usage: dpkgs <string>" echo "Usage: dpkgs <string>"
@@ -56,7 +57,7 @@ dpkgs ()
*) *)
local pkg=$1 && shift local pkg=$1 && shift
count=$(( $count + 1 )) count=$(($count + 1))
[[ $count -gt 1 ]] && [[ $count -gt 1 ]] &&
disp E "Please specify a package name, without space, eventually partial." && disp E "Please specify a package name, without space, eventually partial." &&
return 1 return 1
@@ -68,13 +69,15 @@ dpkgs ()
disp E "Please specify a package name, without space, eventually partial." && disp E "Please specify a package name, without space, eventually partial." &&
return 1 return 1
if [[ $(command -v dpkg >/dev/null 2>&1) ]]; then command -v dpkg >/dev/null 2>&1 && local cmd="dpkg -l"
dpkg -l | grep $pkg command -v rpm >/dev/null 2>&1 && local cmd="rpm -qa"
elif [[ $(command -v rpm >/dev/null 2>&1) ]]; then if [[ -z $cmd ]]; then
rpm -qa | grep $pkg
else
disp E "No usable package manager seems unavialable." disp E "No usable package manager seems unavialable."
return 2 return 2
fi fi
$cmd | grep $pkg
} }
export -f dpkgs export -f pkgs
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/bin/bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,17 +37,16 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Search processes matching the given string # Search processes matching the given string
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
ppg () ppg()
{ {
ps -edf | grep $@ | grep -v "grep $@" ps -edf | grep "$@" | grep -v "grep $@"
} }
export -f ppg export -f ppg
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Get PID list of the given process name # Get PID list of the given process name
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
gpid () gpid()
{ {
[[ $UID -eq 0 ]] && local psopt="-A" [[ $UID -eq 0 ]] && local psopt="-A"
[[ $# -eq 1 ]] && local single=1 [[ $# -eq 1 ]] && local single=1
@@ -62,14 +62,33 @@ gpid ()
} }
export -f gpid export -f gpid
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Kill all processes owned by the given users # Kill all processes owned by the given users
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
ku () ku()
{ {
for u in $@; do for u in $@; do
killall -u $u killall -u "$u"
done done
} }
export -f ku export -f ku
# ------------------------------------------------------------------------------
# Kill all children of a process then the process
# ------------------------------------------------------------------------------
kt()
{
[[ -z $1 ]] && echo -e "Usage:\n\tkt <pid> [kill_options]"
local parent_pid="$1"
shift
children_pids=$(pgrep -P "$parent_pid")
for pid in $children_pids; do
kt "$pid" "$@"
done
kill "$@" "$parent_pid"
}
# ------------------------------------------------------------------------------
# EOF

View File

@@ -38,7 +38,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
function timer_now function timer_now
{ {
date +%s%N date +%s%N 2>/dev/null || date +%s
} }
function timer_start function timer_start
@@ -76,21 +76,21 @@ function timer_stop
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Function triguered internaly by bash : defining prompt # Function triguered internaly by bash : defining prompt
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
set_prompt () set_prompt()
{ {
Last_Command=$? # Must come first! local Last_Command=$? # Must come first!
Blue='\[\e[0;34m\]' local Blue='\[\e[0;34m\]'
White='\[\e[01;37m\]' local White='\[\e[01;37m\]'
Yellow='\[\e[01;93m\]' local Yellow='\[\e[01;93m\]'
Red='\[\e[01;31m\]' local Red='\[\e[01;31m\]'
Green='\[\e[01;32m\]' local Green='\[\e[01;32m\]'
OnGrey='\[\e[47m\]' local OnGrey='\[\e[47m\]'
OnRed='\[\e[41m\]' local OnRed='\[\e[41m\]'
OnBlue='\[\e[44m\]' local OnBlue='\[\e[44m\]'
ICyan='\[\e[0;96m\]' local ICyan='\[\e[0;96m\]'
Default='\[\e[00m\]' local Default='\[\e[00m\]'
FancyX='\342\234\227' local FancyX='\342\234\227'
Checkmark='\342\234\223' local Checkmark='\342\234\223'
# Begin with time # Begin with time
PS1="\[\e[s$Blue$OnGrey [ \t ] $OnBlue" PS1="\[\e[s$Blue$OnGrey [ \t ] $OnBlue"
@@ -123,3 +123,6 @@ set_prompt ()
# the text color to the default. # the text color to the default.
PS1+="$ICyan\\w \\\$$Default " PS1+="$ICyan\\w \\\$$Default "
} }
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -44,10 +45,11 @@ genpwd()
local occurs=2 # Bug, if set to 1, seems to be ignored local occurs=2 # Bug, if set to 1, seems to be ignored
local symb=1 maj=1 min=1 numb=1 local symb=1 maj=1 min=1 numb=1
local nbpwd=1 local nbpwd=1
local extcar
for opt in $@; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "genpwd: generate one or more secure random password." echo "genpwd: generate one or more secure random password."
echo echo
echo "Usage: genpwd [options] [--extracars=<cars>] [--length=<n>] [nb_passwd]" echo "Usage: genpwd [options] [--extracars=<cars>] [--length=<n>] [nb_passwd]"
@@ -75,29 +77,29 @@ genpwd()
echo echo
return 0 return 0
;; ;;
"-s"|"--nosymbols") "-s" | "--nosymbols")
symb=0 symb=0
;; ;;
"-n"|"--nonumbers") "-n" | "--nonumbers")
numb=0 numb=0
;; ;;
"-u"|"--noup") "-u" | "--noup")
maj=0 maj=0
;; ;;
"-l"|"--nolow") "-l" | "--nolow")
min=0 min=0
;; ;;
"-e"?*|"--extracars"?*) "-e"?* | "--extracars"?*)
local extcar=$(echo "$opt" | cut -f 2- -d '=') extcar=$(echo "$opt" | cut -f 2- -d '=')
;; ;;
"-L"?*|"--length"?*) "-L"?* | "--length"?*)
local length=$(echo "$opt" | cut -f 2- -d '=') local length=$(echo "$opt" | cut -f 2- -d '=')
if ! [[ $length =~ ^[0-9]+$ ]]; then if ! [[ $length =~ ^[0-9]+$ ]]; then
disp E "The --length parameter requires a number." disp E "The --length parameter requires a number."
return 1 return 1
fi fi
;; ;;
"-o"?*|"--occurences"?*) "-o"?* | "--occurences"?*)
local occurs=$(echo "$opt" | cut -f 2- -d '=') local occurs=$(echo "$opt" | cut -f 2- -d '=')
if ! [[ $occurs =~ ^[1-9]+$ ]]; then if ! [[ $occurs =~ ^[1-9]+$ ]]; then
disp E "The --occurs parameter requires a number from 1 to 9." disp E "The --occurs parameter requires a number from 1 to 9."
@@ -113,20 +115,19 @@ genpwd()
disp E "Unknow parameter ${opt}." disp E "Unknow parameter ${opt}."
return 1 return 1
else else
local nbpwd=$opt nbpwd=$opt
fi fi
;; ;;
esac esac
done done
# Function selecting a random caracter from the list in parameter # Function selecting a random caracter from the list in parameter
pickcar() pickcar() {
{
# When a character is picked we check if it's not appearing already twice # When a character is picked we check if it's not appearing already twice
# elsewhere, we choose an other char, to compensate weak bash randomizer # elsewhere, we choose an other char, to compensate weak bash randomizer
while [[ -z $char ]]; do while [[ -z $char ]]; do
local char=$(echo ${1:RANDOM%${#1}:1} $RANDOM) local char="${1:RANDOM%${#1}:1} $RANDOM"
if [[ $(awk -F"$char" '{print NF-1}' <<< "$picked") -gt $occurs ]]; then if [[ $(awk -F"$char" '{print NF-1}' <<<"$picked") -gt $occurs ]]; then
unset char unset char
fi fi
done done
@@ -135,7 +136,7 @@ genpwd()
} }
disp I "Generating $nbpwd passwords, please wait..." disp I "Generating $nbpwd passwords, please wait..."
for n in $( seq 1 $nbpwd ); do for n in $(seq 1 $nbpwd); do
{ {
local carset='' # store final caracter set to use local carset='' # store final caracter set to use
local picked='' # store already used caracter local picked='' # store already used caracter
@@ -145,27 +146,27 @@ genpwd()
if [[ $symb == 1 ]]; then if [[ $symb == 1 ]]; then
pickcar '!.@#&%/^-_' pickcar '!.@#&%/^-_'
carset+='!.@#&%/^-_' carset+='!.@#&%/^-_'
(( rlength++ )) ((rlength++))
fi fi
if [[ $numb == 1 ]]; then if [[ $numb == 1 ]]; then
pickcar '0123456789' pickcar '0123456789'
carset+='0123456789' carset+='0123456789'
(( rlength++ )) ((rlength++))
fi fi
if [[ $maj == 1 ]]; then if [[ $maj == 1 ]]; then
pickcar 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' pickcar 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
carset+='ABCDEFGHIJKLMNOPQRSTUVWXYZ' carset+='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
(( rlength++ )) ((rlength++))
fi fi
if [[ $min == 1 ]]; then if [[ $min == 1 ]]; then
pickcar 'abcdefghijklmnopqrstuvwxyz' pickcar 'abcdefghijklmnopqrstuvwxyz'
carset+='abcdefghijklmnopqrstuvwxyz' carset+='abcdefghijklmnopqrstuvwxyz'
(( rlength++ )) ((rlength++))
fi fi
if [[ -n $extcar ]]; then if [[ -n $extcar ]]; then
pickcar "$extcar" pickcar "$extcar"
carset+=$extcar carset+=$extcar
(( rlength++ )) ((rlength++))
fi fi
# Check if we have enough car to have something viable # Check if we have enough car to have something viable
@@ -175,7 +176,7 @@ genpwd()
return 1 return 1
fi fi
for i in $( seq 1 $(( $length - $rlength )) ); do for i in $(seq 1 $(($length - $rlength))); do
pickcar "$carset" pickcar "$carset"
done done
} | sort -R | awk '{printf "%s", $1}' } | sort -R | awk '{printf "%s", $1}'
@@ -184,3 +185,6 @@ genpwd()
done done
} }
export -f genpwd export -f genpwd
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -43,7 +44,7 @@ rain()
local rain_colors=("\e[37m" "\e[37;1m") local rain_colors=("\e[37m" "\e[37;1m")
# More from 256 color mode # More from 256 color mode
for i in {244..255}; do for i in {244..255}; do
rain_colors=( "${rain_colors[@]}" "\e[38;5;${i}m" ) rain_colors=("${rain_colors[@]}" "\e[38;5;${i}m")
done done
local rain_tab=${#rain_cars[@]} local rain_tab=${#rain_cars[@]}
local rain_color_tab=${#rain_colors[@]} local rain_color_tab=${#rain_colors[@]}
@@ -54,18 +55,17 @@ rain()
local X=0 Y=0 drop_length=0 rain_drop=0 local X=0 Y=0 drop_length=0 rain_drop=0
local max_rain_width=0 new_rain_odd=0 falling_odd=0 local max_rain_width=0 new_rain_odd=0 falling_odd=0
sigwinch() { sigwinch() {
term_width=$(tput cols) term_width=$(tput cols)
term_height=$(tput lines) term_height=$(tput lines)
#step_duration=0.025 #step_duration=0.025
(( max_rain_width = term_width * term_height / 4 )) ((max_rain_width = term_width * term_height / 4))
(( max_rain_height = term_height < 10 ? 1 : term_height / 10 )) ((max_rain_height = term_height < 10 ? 1 : term_height / 10))
# In percentage # In percentage
(( new_rain_odd = term_height > 50 ? 100 : term_height * 2 )) ((new_rain_odd = term_height > 50 ? 100 : term_height * 2))
(( new_rain_odd = new_rain_odd * 75 / 100 )) ((new_rain_odd = new_rain_odd * 75 / 100))
(( falling_odd = term_height > 25 ? 100 : term_height * 4 )) ((falling_odd = term_height > 25 ? 100 : term_height * 4))
(( falling_odd = falling_odd * 90 / 100 )) ((falling_odd = falling_odd * 90 / 100))
} }
do_exit() { do_exit() {
@@ -80,19 +80,19 @@ rain()
Y=${rains[idx + 1]} Y=${rains[idx + 1]}
drop_length=${rains[idx + 4]} drop_length=${rains[idx + 4]}
for ((y = Y; y < Y + drop_length; y++)); do for ((y = Y; y < Y + drop_length; y++)); do
(( y < 1 || y > term_height )) && continue ((y < 1 || y > term_height)) && continue
echo -ne "\e[${y};${X}H " echo -ne "\e[${y};${X}H "
done done
done done
for ((idx = 0; idx < num_rains * num_rain_metadata; idx += num_rain_metadata)); do for ((idx = 0; idx < num_rains * num_rain_metadata; idx += num_rain_metadata)); do
if (( 100 * RANDOM / 32768 < falling_odd )); then if ((100 * RANDOM / 32768 < falling_odd)); then
# Falling # Falling
if (( ++rains[idx + 1] > term_height )); then if ((++rains[idx + 1] > term_height)); then
# Out of screen, bye sweet <3 # Out of screen, bye sweet <3
rains=("${rains[@]:0:idx}" rains=("${rains[@]:0:idx}"
"${rains[@]:idx+num_rain_metadata:num_rains*num_rain_metadata}") "${rains[@]:idx+num_rain_metadata:num_rains*num_rain_metadata}")
(( num_rains-- )) ((num_rains--))
continue continue
fi fi
fi fi
@@ -102,7 +102,7 @@ rain()
drop_color=${rains[idx + 3]} drop_color=${rains[idx + 3]}
drop_length=${rains[idx + 4]} drop_length=${rains[idx + 4]}
for ((y = Y; y < Y + drop_length; y++)); do for ((y = Y; y < Y + drop_length; y++)); do
(( y < 1 || y > term_height )) && continue ((y < 1 || y > term_height)) && continue
echo -ne "\e[${y};${X}H${drop_color}${rain_drop}" echo -ne "\e[${y};${X}H${drop_color}${rain_drop}"
done done
done done
@@ -118,24 +118,24 @@ rain()
local rains=() local rains=()
local num_rains=0 local num_rains=0
sigwinch sigwinch
while (( exit_st <= 0 )); do while ((exit_st <= 0)); do
if (( $exit_st <=0 )); then if (($exit_st <= 0)); then
read -n 1 -t $step_duration ch read -n 1 -t $step_duration ch
case "$ch" in case "$ch" in
q|Q) q | Q)
do_exit do_exit
;; ;;
esac esac
if (( num_rains < max_rain_width )) && (( 100 * RANDOM / 32768 < new_rain_odd )); then if ((num_rains < max_rain_width)) && ((100 * RANDOM / 32768 < new_rain_odd)); then
# Need new |, 1-based # Need new |, 1-based
rain_drop="${rain_cars[rain_tab * RANDOM / 32768]}" rain_drop="${rain_cars[rain_tab * RANDOM / 32768]}"
drop_color="${rain_colors[rain_color_tab * RANDOM / 32768]}" drop_color="${rain_colors[rain_color_tab * RANDOM / 32768]}"
drop_length=$(( max_rain_height * RANDOM / 32768 + 1 )) drop_length=$((max_rain_height * RANDOM / 32768 + 1))
X=$(( term_width * RANDOM / 32768 + 1 )) X=$((term_width * RANDOM / 32768 + 1))
Y=$(( 1 - drop_length )) Y=$((1 - drop_length))
rains=( "${rains[@]}" "$X" "$Y" "$rain_drop" "$drop_color" "$drop_length" ) rains=("${rains[@]}" "$X" "$Y" "$rain_drop" "$drop_color" "$drop_length")
(( num_rains++ )) ((num_rains++))
fi fi
# Let rain fall! # Let rain fall!
@@ -152,3 +152,6 @@ rain()
trap - WINCH trap - WINCH
} }
export -f rain export -f rain
# ------------------------------------------------------------------------------
# EOF

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details. # Protected by the BSD3 license. Please read bellow for details.
@@ -36,7 +37,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Remove host from know_host (name and IP) for the active user # Remove host from know_host (name and IP) for the active user
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
rmhost () rmhost()
{ {
if [[ "$#" -lt 1 ]]; then if [[ "$#" -lt 1 ]]; then
disp E "Incorrect number of parameters." disp E "Incorrect number of parameters."
@@ -46,9 +47,9 @@ rmhost ()
while [[ $1 ]]; do while [[ $1 ]]; do
local hst=$1 && shift local hst=$1 && shift
isipv4 $hst > /dev/null isipv4 "$hst" >/dev/null
local v4=$? local v4=$?
isipv6 $hst > /dev/null isipv6 "$hst" >/dev/null
local v6=$? local v6=$?
if [[ $v4 -eq 0 || $v6 -eq 0 ]]; then if [[ $v4 -eq 0 || $v6 -eq 0 ]]; then
@@ -58,34 +59,37 @@ rmhost ()
unset v4 v6 unset v4 v6
if [[ ! $ip && $hst ]]; then if [[ ! $ip && $hst ]]; then
ip=$(host $hst | grep "has address" | awk '{print $NF}') if ! ip=$(host "$hst" 2>/dev/null | awk '/has address/ {print $NF; exit}'); then
[[ ! $? ]] &&
disp E "Impossible to extract IP from hostname." && disp E "Impossible to extract IP from hostname." &&
return 1 return 1
fi fi
[[ -z $ip ]] && {
disp E "Impossible to extract IP from hostname."
return 1;
}
fi
if [[ $hst ]]; then if [[ $hst ]]; then
disp I "Removing host $hst from ssh known_host..." disp I "Removing host $hst from ssh known_host..."
ssh-keygen -R $hst > /dev/null ssh-keygen -R $hst >/dev/null
fi fi
if [[ $ip ]]; then if [[ $ip ]]; then
disp I "Removing IP $ip from ssh known_host..." disp I "Removing IP $ip from ssh known_host..."
ssh-keygen -R $ip > /dev/null ssh-keygen -R $ip >/dev/null
fi fi
unset hst ip unset hst ip
done done
} }
export -f rmhost export -f rmhost
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Login root via SSH on the given machine # Login root via SSH on the given machine
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
ssr () ssr()
{ {
for opt in $@ ; do for opt in $@; do
case $opt in case $opt in
"-h"|"--help") "-h" | "--help")
echo "ssr: do a root user ssh login." echo "ssr: do a root user ssh login."
echo echo
echo "Usage: ssr <server [ssh options]>" echo "Usage: ssr <server [ssh options]>"
@@ -94,12 +98,19 @@ ssr ()
esac esac
done done
command -v ssh >/dev/null 2>&1 || {
disp E "ssh is not installed."
return 127
}
[[ ! $1 ]] && [[ ! $1 ]] &&
disp E "Please specify the server you want to log in." && disp E "Please specify the server you want to log in." &&
return 1 return 1
local srv=$1 && shift local srv=$1 && shift
ssh -Y root@$srv $@ ssh -Y root@"$srv" "$@"
} }
export -f ssr export -f ssr
# ------------------------------------------------------------------------------
# EOF

135
profile.d/updates.sh Normal file
View File

@@ -0,0 +1,135 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------------------
# Copyright (c) 2013-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# Protected by the BSD3 license. Please read bellow for details.
#
# * Redistribution and use in source and binary forms,
# * with or without modification, are permitted provided
# * that the following conditions are met:
# *
# * Redistributions of source code must retain the above
# * copyright notice, this list of conditions and the
# * following disclaimer.
# *
# * Redistributions in binary form must reproduce the above
# * copyright notice, this list of conditions and the following
# * disclaimer in the documentation and/or other materials
# * provided with the distribution.
# *
# * Neither the name of the copyright holder nor the names
# * of any other contributors may be used to endorse or
# * promote products derived from this software without
# * specific prior written permission.
# *
# * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
# * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# * OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
export BASE_URL="https://git.geoffray-levasseur.org/fatalerrors/profile"
export UPDT_URL="$BASE_URL/raw/branch/master"
export ARCH_URL="$BASE_URL/archive/master.tar.gz"
# ------------------------------------------------------------------------------
# Check for profile updates
# ------------------------------------------------------------------------------
check_updates()
{
if [[ $1 == "-q" ]]; then
# Quiet mode is mostly used internally when profile_upgrade is called
quiet=1
fi
disp I "Checking for updates..."
local vfile="/tmp/version"
wget "$UPDT_URL/version" -O $vfile >/dev/null 2>&1 || {
disp E "Can't download version file, impossible to proceed!"
return 5
}
if [[ -s $vfile ]]; then
local lastver=$(cat $vfile)
if [[ $lastver != $PROFVERSION ]]; then
disp I "You have version $PROFVERSION installed. Version $lastver is available."
[[ $quiet ]] && disp I "You should upgrade to last version when possible."
result=1
else
disp I "Your version is up-to-date."
result=0
fi
rm -f $vfile
else
disp E "Impossible to read temporary file, impossible to proceed."
fi
unset lastver vfile
return $result
}
# ------------------------------------------------------------------------------
# Apply update to profile
# ------------------------------------------------------------------------------
profile_upgrade()
{
check_updates -q
local need_update=$?
[[ $need_update -ne 1 ]] && {
disp "No update available."
return 0
}
if [[ -s $MYPATH/profile.sh ]]; then
disp E "Installation path detection failed, cannot upgrade automatically."
return 1
fi
if [[ -d $MYPATH/.git ]]; then
disp I "Git installation detected, applying git pull."
local curdir=$(pwd)
cd $MYPATH
git pull || {
disp E "Git pull failed, upgrade not applyed."
cd "$curdir"
return 2
}
disp I "Successfully upgraded using git."
cd "$curdir"
else
disp I "No Git detected. Downloading and applying upgrade from archive..."
local tmpdir="/tmp/profile_upg.$$"
mkdir -p "$tmpdir" || {
disp E "Failed to create temporary directory."
return 4
}
local archive="$tmpdir/profile.tar.gz"
wget -q "$ARCH_URL" -O "$archive" || {
disp E "Failed to download archive."
rm -rf "$tmpdir"
return 5
}
tar -xzf "$archive" -C "$tmpdir" || {
disp E "Archive extraction failed."
rm -rf "$tmpdir"
return 6
}
disp I "Installing new version..."
cp -r "$tmpdir"/profile/* "$MYPATH"/ || {
disp E "Failed to copy new files to $MYPATH."
rm -rf "$tmpdir"
return 7
}
disp I "Upgrade complete. You should now logout and login again."
rm -rf "$tmpdir"
fi
}
# EOF

View File

@@ -35,12 +35,8 @@
# * OF SUCH DAMAGE. # * OF SUCH DAMAGE.
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export PROFVERSION="3.2.3" if [[ ! $SHELL =~ bash|zsh ]]; then
echo "That environment script is designed to be used with bash or zsh being the shell."
export DEFAULT_CITY="Toulouse"
if [[ ! $(echo $SHELL | grep bash) ]]; then
echo "That environmet script is designed to be used with bash or zsh being the shell."
echo "Please consider using bash or zsh instead, or patch me ;)!" echo "Please consider using bash or zsh instead, or patch me ;)!"
return 1 return 1
fi fi
@@ -48,49 +44,71 @@ fi
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# path* : private functions for PATH variable management # path* : private functions for PATH variable management
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
pathremove () pathremove()
{ {
local ifs=':' local IFS=':'
local newpath local newpath
local dir local dir
local pathvar=${2:-PATH} local pathvar=${2:-PATH}
for dir in ${!pathvar} ; do for dir in ${!pathvar}; do
if [ "$dir" != "$1" ] ; then if [ "$dir" != "$1" ]; then
newpath=${newpath:+$newpath:}$dir newpath=${newpath:+$newpath:}$dir
fi fi
done done
export $pathvar="$newpath" export $pathvar="$newpath"
} }
pathprepend () pathprepend()
{ {
pathremove $1 $2 pathremove $1 $2
local pathvar=${2:-PATH} local pathvar=${2:-PATH}
export $pathvar="$1${!pathvar:+:${!pathvar}}" export $pathvar="$1${!pathvar:+:${!pathvar}}"
} }
pathappend () pathappend()
{ {
pathremove $1 $2 pathremove $1 $2
local pathvar=${2:-PATH} local pathvar=${2:-PATH}
export $pathvar="${!pathvar:+${!pathvar}:}$1" export $pathvar="${!pathvar:+${!pathvar}:}$1"
} }
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# ********************************** MAIN PROGRAM ****************************** # ********************************** MAIN PROGRAM ******************************
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Store script's path (realpath -s resolve symlinks if profile.sh is a symlink)
if [[ -z "$PROFILE_PATH" ]]; then
export MYPATH=$(dirname "$(realpath -s "$0")")
else
export MYPATH="$PROFILE_PATH"
fi
if [[ ! -e "$MYPATH/profile.sh" ]]; then
echo "[ Warning ] Path detection failed, trying to use pwd..."
MYPATH=$(pwd)
if [[ ! -e "$MYPATH/profile.sh" ]]; then
echo "[ Error ] Impossible to determine installation path, pretty much nothing will work."
fi
fi
if [[ ! -s "$MYPATH/version" ]]; then
echo "[ Warning ] Impossible to determine running version of profile, your installation might be broken."
fi
export PROFVERSION=$(cat "$MYPATH"/version)
# Build PATH environment variable # Build PATH environment variable
if [[ $EUID -eq 0 ]] ; then if [[ $EUID -eq 0 ]]; then
pathappend /sbin:/usr/sbin pathappend /sbin:/usr/sbin
fi fi
[[ -d /share/services/gestparc ]] && pathappend /share/services/gestparc [[ -d /share/services/gestparc ]] && pathappend /share/services/gestparc
[[ -d ~/bin ]] && pathappend ~/bin [[ -d ~/bin ]] && pathappend ~/bin
[[ -d ~/.local/bin ]] && pathappend ~/.local/bin [[ -d ~/.local/bin ]] && pathappend ~/.local/bin
# ------------------------------------------------------------------------------
# Default values are set here and will be overloaded with config file if any
# ------------------------------------------------------------------------------
# Set bash history # Set bash history
export HISTSIZE=50000 export HISTSIZE=50000
export HISTIGNORE="&:[bf]g:exit" export HISTIGNORE="&:[bf]g:exit"
@@ -106,17 +124,22 @@ export CFLAGS="-O2 -pipe -march=native"
export MAKEFLAGS='-j12' export MAKEFLAGS='-j12'
export PKGSOURCES='/share/src/archives' export PKGSOURCES='/share/src/archives'
# Default city for weather forcast
export DEFAULT_CITY="Toulouse"
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Default values could be altered after this line # Default values could be altered after this line
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Load global configuration
[[ -f $MYPATH/etc/profile.conf ]] && . $MYPATH/etc/profile.conf
# Load personal configuration # Load personal configuration
[[ -f ~/.profile.conf ]] && . ~/.profile.conf [[ -f ~/.profile.conf ]] && . ~/.profile.conf
# Execute optionnal config script if any # Load module scripts
for script in ~/profile.d/*.sh ; do for script in $MYPATH/profile.d/*.sh; do
if [ -r $script ] ; then if [[ -r $script ]]; then
. $script . $script
fi fi
done done
@@ -152,6 +175,7 @@ if [[ $INTERACTIVE ]]; then
alias du='du -ch' alias du='du -ch'
alias sdu='du -sk ./* | sort -n' alias sdu='du -sk ./* | sort -n'
alias hdu='du -hs ./* | sort -H'
# Define PS1 # Define PS1
trap 'timer_start' DEBUG trap 'timer_start' DEBUG

1
version Normal file
View File

@@ -0,0 +1 @@
3.4.0