r_bash – Telegram
Insert command output into current cursor location?

Please don't mind my English since it's not my mother tongue.

Basically, I want to insert some command's output to current line.

Take fzf as an example.

Say my cursor is at the end of ~$ vim , now I press some key and fzf selection menu pops up. After file selection and exiting of fzf, bash current line looks like ~$ vim OUTPUT_STR_HERE.

I heard that When shell-command is executed, the shell sets the READLINE_LINE variable to the contents of the readline line buffer, but bind -x '...' print output to the previous line.

Is this achievable using only bash builtins?

Thanks in advance!

https://redd.it/13k54ua
@r_bash
Seeking critique: shell function for reading a password into a variable

This is something I wrote quite a while ago, but I am now wondering whether there's a better way. In particular, I'm not happy with the use of eval. Also, I'm not convinced the use of trap is entirely bullet-proof.

# password <varname>: prompt for and read a password into varname.
password () {
[ -t 0 ] || { echo "$FUNCNAME: stdin is not a tty"; return 2; }

# We use the var=$(foo) && eval construct so that we can run foo
# in a subshell but still get data back from it.
# Since this variable would clash with the user-supplied variable
# name in the eval, we pick something unlikely to be used.
local passwdstr=$(
local ch='' str=''

# Restore echo even if we die
trap 'stty echo' EXIT

# Just read -s is not enough, because characters might
# arrive between calls to read; we must keep echo disabled
# the whole time.
stty -echo
printf "Password: " >&2
while
IFS='' read -r -s -n 1 ch || {
exit 1;
}
# Is the character not a newline?
[[ "$ch" ]]
do
str="$str$ch"
printf "*" >&2
done
printf "%s" "$str"
echo >&2
) && eval "${1-REPLY}="'$passwd
str';
}

https://redd.it/13kcizq
@r_bash
need help with xdg-open noscript

Hello I'm a Linux noob trying to get my all my application to work on Linux. I finally got Unreal Engine 5 to work on Ubuntu, but I'm having trouble getting a bash noscript to open Unreal Editor and would like some help.

\#! /bin/bash

xdg-open "../UnrealEngine/Engine/Binaries/Linux/UnrealEditor"

It will open the file location if I don't put "UnrealEditor" but when I do it gives me a

:Failed to find default application for content type ‘application/x-executable’

any advice would help

https://redd.it/13kf6hd
@r_bash
showing system stats during startup (novice showcase)

Hi. I have been tinkering around with bash and have the following setup to email me some stats during startup -

## cat /etc/systemd/system/customstartup.service
[Unit]
Denoscription=Notify that system has booted.
Wants=
network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/bin/bash /home/user/bin/
startupbootstrap.sh

Install
WantedBy=multi-user.target

and here's the noscript

## cat /home/user/bin/startupbootstrap.sh

#!/usr/bin/env bash

hostname=$(hostname -s)

last
reboot=$(command last -xF reboot | head -1 | awk {'print $5, $6, $7, $8'})
lastshutdown=$(command last -xF shutdown | head -1 | awk {'print $5, $6, $7, $8'})
up
time=$(uptime -p)
lastboot=$(who -b) # display time of last system boot

avg
load=$(grep 'cpu ' /proc/stat | awk '{cpuusage=($2+$4)*100/($2+$4+$5)} END {print cpuusage "%"}')
cpuusage=$(top -n 1 | head -n 3 | tail -n 1 | awk '{print $2 + $4}')

day=`date +"%F %T"`
printf "[ %s ] %s\n\n" "$day" "$hostname"
printf "System powered ON at %s. " "$last
reboot"
printf " %s \n" "$uptime"
printf "Last successful shutdown at %s \n\n" "$last
shutdown"

printf " %s Avg. CPU Load\n" "$avgload"
printf "[ %s ] CPU Usage\n" "$cpu
usage"


Any way I can improvise the noscript ? Thanks in advance.

cpu load source1 source2

https://redd.it/13kr1t1
@r_bash
Bash newbie here, wanted to know your opinion

Hi, I've already checked the style with shellcheck and everything seems fine, however I would like to know the opinion of someone who knows a little bit more about bash than me, it's my first noscript afterall and it's probably a mess. Ty in advance. Here's the github page with a readme if something isn't clear https://github.com/Vdevelasco/quickCommand ty in advance

#!/bin/bash
usage() {
echo "Usage: $0 -ihrlcmsexd -a command -f file -b size"
echo "Run qc -i first to set up files needed"
echo " -a: adds a new command to the bottom of the stack"
echo " -i: (init) has to be run one time before using any other commands"
echo " -h: (help) outputs this message"
echo " -r: removes a specific command from the list"
echo " -l: lists all stored commands"
echo " -c: creates a simple noscript with all the stored commands"
echo " -m: modifies the command in a specific slot"
echo " -s: switches two commands"
echo " -b: changes the size of the stack"
echo " -e: loads the commands in a file that can be used as a noscript"
echo " -x: lists avaliable command lists"
echo " -d: lists the directories used by qc"
}
#TODO:Make a flag for changing the arguments of the commands

set -o errexit
set -o pipefail
set -o nounset
# set -o xtrace #To debug

QCDIR=~/.local/share/qc/
COMMAND
FILE="${QCDIR}qccommands"
VARASSIGNEDFLAG=false
STACKFILE="${QCDIR}qcmaxstacksize"
SCRIPTDIR="${QCDIR}noscripts/"

if -f $STACK_FILE ; then
if -z ${max_stacksize+x} ; then
maxstacksize=$(cat $STACKFILE)
else
echo "var is set to '$maxstacksize'"
fi
fi

isAssigned() {
USED
SLOTS=$(sed 's/|/ /' $COMMANDFILE | awk '{print $1, $8}')
if [[ "$USED
SLOTS" == "$1" ]]; then
echo "That slot is already used by another command"
VARASSIGNEDFLAG=true
else
VARASSIGNEDFLAG=false
fi
}

addCommand() {

numberoflines=$(wc -l $COMMANDFILE | cut -c 1)
isAssigned "$1";
if [ ! $VAR
ASSIGNEDFLAG == true ] ; then
if [ "$max
stacksize" -lt $((numberoflines + 1)) ]; then
echo "Deleting first command from stack"
tail -n $((maxstacksize - 1)) $COMMANDFILE | sponge $COMMANDFILE
awk '{ print substr($0, index($0,$2)) }' $COMMAND
FILE | sponge $COMMANDFILE
awk '{print NR-1 " " $s}' $COMMAND
FILE | sponge $COMMANDFILE
echo "$((number
oflines - 1)) $(echo "$1")" >> $COMMANDFILE
cat $COMMANDFILE
else
echo "$number
oflines $1" >> $COMMANDFILE
cat $COMMANDFILE
fi
fi
}

touch $COMMAND
FILE
while getopts "ia:f:hrlcmsb:exdu" options; do
case "${options}" in
i)#PERF:
if ! -d $QC_DIR ; then
mkdir $QCDIR
fi
echo "qc directory has been created succesfully"
touch $COMMAND
FILE
sudo chmod 755 $COMMANDFILE
echo "qc
commands has been created succesfully"
touch $STACKFILE
sudo chmod 755 $STACK
FILE
echo 5 > $STACKFILE
echo "qc
maxstacksize has been created succesfully"
if [ ! -d $SCRIPT
DIR ]; then
mkdir $SCRIPTDIR
fi
echo "noscript directory has been created succesfully"
exit
;;
a)
#PERF:
command="${@:2}"
addCommand "$command"
exit
;;
#Make an noscript based on commands
c)
#PERF:
noscriptname="${QC
DIR}noscripts/${2?Error: no filename given, please see usage or provide a default file from configuration}"

rm $noscriptname &
touch $noscriptname
echo "#!/bin/bash" >> $noscriptname
awk '{$1=""}1' $COMMANDFILE >> $noscriptname
echo "The noscript $noscriptname has been saved in $SCRIPT
DIR
Bash newbie here, wanted to know your opinion

Hi, I've already checked the style with shellcheck and everything seems fine, however I would like to know the opinion of someone who knows a little bit more about bash than me, it's my first noscript afterall and it's probably a mess. Ty in advance. Here's the github page with a readme if something isn't clear [https://github.com/Vdevelasco/quickCommand](https://github.com/Vdevelasco/quickCommand) ty in advance

#!/bin/bash
usage() {
echo "Usage: $0 [-ihrlcmsexd] [-a command] [-f file] [-b size]"
echo "Run qc -i first to set up files needed"
echo " -a: adds a new command to the bottom of the stack"
echo " -i: (init) has to be run one time before using any other commands"
echo " -h: (help) outputs this message"
echo " -r: removes a specific command from the list"
echo " -l: lists all stored commands"
echo " -c: creates a simple noscript with all the stored commands"
echo " -m: modifies the command in a specific slot"
echo " -s: switches two commands"
echo " -b: changes the size of the stack"
echo " -e: loads the commands in a file that can be used as a noscript"
echo " -x: lists avaliable command lists"
echo " -d: lists the directories used by qc"
}
#TODO:Make a flag for changing the arguments of the commands

set -o errexit
set -o pipefail
set -o nounset
# set -o xtrace #To debug

QC_DIR=~/.local/share/qc/
COMMAND_FILE="${QC_DIR}qc_commands"
VAR_ASSIGNED_FLAG=false
STACK_FILE="${QC_DIR}qc_max_stacksize"
SCRIPT_DIR="${QC_DIR}noscripts/"

if [ -f $STACK_FILE ]; then
if [ -z ${max_stacksize+x} ]; then
max_stacksize=$(cat $STACK_FILE)
else
echo "var is set to '$max_stacksize'"
fi
fi

isAssigned() {
USED_SLOTS=$(sed 's/|/ /' $COMMAND_FILE | awk '{print $1, $8}')
if [[ "$USED_SLOTS" == *"$1"* ]]; then
echo "That slot is already used by another command"
VAR_ASSIGNED_FLAG=true
else
VAR_ASSIGNED_FLAG=false
fi
}

addCommand() {

number_of_lines=$(wc -l $COMMAND_FILE | cut -c 1)
isAssigned "$1";
if [ ! $VAR_ASSIGNED_FLAG == true ] ; then
if [ "$max_stacksize" -lt $((number_of_lines + 1)) ]; then
echo "Deleting first command from stack"
tail -n $((max_stacksize - 1)) $COMMAND_FILE | sponge $COMMAND_FILE
awk '{ print substr($0, index($0,$2)) }' $COMMAND_FILE | sponge $COMMAND_FILE
awk '{print NR-1 " " $s}' $COMMAND_FILE | sponge $COMMAND_FILE
echo "$((number_of_lines - 1)) $(echo "$1")" >> $COMMAND_FILE
cat $COMMAND_FILE
else
echo "$number_of_lines $1" >> $COMMAND_FILE
cat $COMMAND_FILE
fi
fi
}

touch $COMMAND_FILE
while getopts "ia:f:hrlcmsb:exdu" options; do
case "${options}" in
i)#PERF:
if [ ! -d $QC_DIR ]; then
mkdir $QC_DIR
fi
echo "qc directory has been created succesfully"
touch $COMMAND_FILE
sudo chmod 755 $COMMAND_FILE
echo "qc_commands has been created succesfully"
touch $STACK_FILE
sudo chmod 755 $STACK_FILE
echo 5 > $STACK_FILE
echo "qc_max_stacksize has been created succesfully"
if [ ! -d $SCRIPT_DIR ]; then
mkdir $SCRIPT_DIR
fi
echo "noscript directory has been created succesfully"
exit
;;
a)#PERF:
command="${@:2}"
addCommand "$command"
exit
;;
#Make an noscript based on commands
c)#PERF:
noscriptname="${QC_DIR}noscripts/${2?Error: no filename given, please see usage or provide a default file from configuration}"

rm $noscriptname &
touch $noscriptname
echo "#!/bin/bash" >> $noscriptname
awk '{$1=""}1' $COMMAND_FILE >> $noscriptname
echo "The noscript $noscriptname has been saved in $SCRIPT_DIR
"
cat $noscriptname

exit
;;

#Help
h)
usage >&2
exit
;;
#Remove commands
r)
if [ "$#" -eq 2 ]; then
sed -i "/^$2/d" $COMMAND_FILE
sed "s/^[0-9]* //" $COMMAND_FILE | awk '{print NR-1 " " $0}' | sponge $COMMAND_FILE
cat $COMMAND_FILE
elif [ "$#" -eq 1 ]; then
command_delete_flag="y"
read -p "Are you sure that you want to delete all the commands? [Y/n] " command_delete_flag
if [[ "$command_delete_flag" != "n" ]]; then
printf "">$COMMAND_FILE
echo "All commands have been removed"
fi
else
# read -p "Select the command to erase: $(echo '') "$(sed 's/^\([A-Za-z0-9]\) /\1) /' $COMMAND_FILE )"; echo 'Option: ')" option;
# sed -i "/^$option/d" $COMMAND_FILE
# sed -i '/^$/d' $COMMAND_FILE
# sed "s/^[0-9]* //" $COMMAND_FILE | awk '{print NR-1 " " $0}' | sponge $COMMAND_FILE
#
fi
exit
;;
l)#PERF:
cat $COMMAND_FILE
exit
;;
#PERF:
b)
if [[ -n $2 ]]; then
number_of_lines=$(wc -l $COMMAND_FILE | cut -c 1)
if [[ $number_of_lines > $2 ]]; then
echo $2 > $STACK_FILE
tail -n "$2" "$COMMAND_FILE" | sponge "$COMMAND_FILE"
cat $COMMAND_FILE
sed "s/^[0-9] \(.*\)/ \1/" $COMMAND_FILE | awk '{print NR-1 $s}' | sponge $COMMAND_FILE
cat $COMMAND_FILE
echo The size has been changed to $2 , the first commands have been erased
cat $COMMAND_FILE
else
echo $2 > $STACK_FILE
echo Stack size changed to: $2
fi
else
echo Error, no argumets given
fi
exit
;;
m)#PERF:
if (($# == 3)); then
sed -i --expression "s:^$2.*:$2 $3:" $COMMAND_FILE
cat $COMMAND_FILE
exit
fi
if (( $# == 1 )); then
echo "These are the current slots"
cat $COMMAND_FILE
read -p "Which slot would you like to edit? " SLOT
fi
if (( $# == 2 )); then
SLOT=$2
echo "slot = $SLOT"
fi
read -p "Introduce the new command: " COMMAND
sed -i --expression "s:^$SLOT.*:$SLOT $COMMAND:" $COMMAND_FILE
cat $COMMAND_FILE
exit
;;
s)#PERF:
if [ "$#" == 1 ]; then
cat $COMMAND_FILE
read -r -p "Please select the two commands that you want to switch: " command1 command2
elif (($# == 3 )); then
command1=$2
command2=$3
else
usage >&2
exit 1
fi
first_command=$(grep "^$command1" $COMMAND_FILE | sed "s/^[0-9]/$command2/")
second_command=$(grep "^$command2" $COMMAND_FILE | sed "s/^[0-9]/$command1/")
sed -i "s/^${command1}.*/$second_command/" $COMMAND_FILE
sed -i "s/^${command2}.*/$first_command/" $COMMAND_FILE
echo "Commands $command1 and $command2 have been swaped"
cat $COMMAND_FILE
exit 1
;;
e)
if [ "$#" == 2 ]; then
FILETOLOAD=$SCRIPT_DIR$2
echo "The file to load is: $FILETOLOAD"
number_of_lines_original_file=$(wc -l $COMMAND_FILE | cut -c 1)
number_of_lines_new_file=$(wc -l $FILETOLOAD | cut -c 1)
if [[ $number_of_lines_new_file -ne $number_of_lines_original_file ]]; then
echo $number_of_lines_new_file > $STACK_FILE
echo The size has been changed to $number_of_lines_new_file
fi
awk '{print NR-1 " " $s}' $FILETOLOAD > $COMMAND_FILE
echo "The new command file is as follows: "
cat $COMMAND_FILE
exit
else
usage >&2
exit
fi
;;
x)
ls $SCRIPT_DIR
exit
;;
d)
echo "Quick command directory: $QC_DIR
Command file: $COMMAND_FILE
File with the size of the stack: $STACK_FILE
Script directory: $SCRIPT_DIR" | column --table --separator ":"
exit
;;
u)
echo "The current stacksize is: $(cat $STACK_FILE)"
exit
;;
?)
usage >&2
exit 1
;;
esac
done
shift "$((OPTIND -1))"

if [ "$#" -eq 1 ]; then
SLOT=$1
EXECUTE_COMMAND=$(grep ^"$1" $COMMAND_FILE | cut --complement -c 1,2)
$EXECUTE_COMMAND
fi
exit

https://redd.it/13lgglt
@r_bash
Help with understanding awk code

Hey guys,

I'm quite new to bash still and I found a piece of code online which removes new lines from a FASTA text file but I was hoping someone could help me break it down and understand how it's working. Here is the code:

awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}'

Thanks in advance :)

https://redd.it/13lry9m
@r_bash
Need help with inner loop from a while read with multiple values

SRC FILE:

hostname WWN1 WWN2 WWN3 WWN4
hostname WWN1 WWN2 WWN3 WWN4

....

&#x200B;

Hello,

I am looking to use an inner loop on the WWN values in my bash noscript.

This is what I have thus far, but can't seem to get the WWN values into the inner loop, any ideas what I am doing wrong?

&#x200B;

#!/usr/bin/env bash

while read host wwn1 wwn2 wwn3 wwn4; do
echo $host
for i in {1..4}; do #THIS DOES NOT WORK
ggrep -A18 -E $wwn$i $host.storage_check.txt > $host.$wwn$i.txt
done
done

&#x200B;

this doesn't work because its the 1..4 being used and not the WWN1-4

I want to read in the 5 values per line and then use them in the inner loop. Is it possible?

If I do this line by line, yes it works, but I want it cleaner in a loop if possible.

&#x200B;

ggrep -A18 -E $wwn1 $host.storage_check.txt > $host.$wwn1.txt
ggrep -A18 -E $wwn2 $host.storage_check.txt > $host.$wwn2.txt
ggrep -A18 -E $wwn3 $host.storage_check.txt > $host.$wwn3.txt
ggrep -A18 -E $wwn4 $host.storage_check.txt > $host.$wwn4.txt

&#x200B;

I just cant seem to find what I am looking for to do this.

https://redd.it/13m876q
@r_bash
no idea why this noscript isn't working.

deckdir=$XDG_CONFIG_HOME/mydir/

read ans

selectedDeck=$(ls -1 $deckdir | awk -v var="$ans" 'NR==var' )

echo "$(selectedDeck)"

&#x200B;

the error is

./noscript: 4: selectedDeck: not found

https://redd.it/13mgtcu
@r_bash
Setting up gitbash for a coding bootcamp on Monday everything is screwed up

I’m not computer savvy and start class on a Monday. Trying to set up gitbash and VS. I don’t even know where I screwed up but my directory and paths are all messed up. Should I delete everything and start over?

https://redd.it/13mhn0b
@r_bash
why this noscript isn't working:(

Hello! I made a shell noscript to sort a list of students from a file, make the top 3 students from a class and calculate the average grade for those who have the grade >=5. I don't know what i wrote wrong, please tell me what to modify. I am a beginner, i don't know how to write very good.

\#!/bin/bash

filename=$1

echo "The first three promovated students:"

sorted_names=$(awk -F ',' '$4 >= 5' "$filename" | sort -t ',' -k4 -nr | awk -F ',' '{print $1}' | head -n 3)

if [[ -z $sorted_names \]\]; then

echo "Doesn't exist."

else

echo "$sorted_names"

fi

sum=0

count=0

while IFS=',' read -r number name surname grade; do

if (( nota >= 5 )); then

sum=$((sum + nota))

count=$((count + 1))

fi

done < "$filename"

if (( count > 0 )); then

class_avg=$(bc <<< "scale=2; $sum / $count")

echo "Class average: $class_avg"

else

echo "There are no passed students to calculate the class average."

fi

https://redd.it/13n938v
@r_bash
Stop git from running

Everytime I try to run a .sh file written in bash, a Git window appears and disappears right after, stopping the program from running properly. Any solutions to this?

https://redd.it/13napt7
@r_bash
Script to find matching strings in 2 large CSV files and print matching rows to 3rd file.

I have two very large CSV files: File1 and File2. File1 has over 730,000 entries and File2 has several million. Column A of each file is a unique 7 digit ID number.

I want to automatically find all rows from File2 that have the same ID numbers as File1, and write those rows to a new third csv file.

Any help would be appreciated, thanks.

https://redd.it/13nbxep
@r_bash
Why this noscript doesn't work?

This noscript works as expected:

if [ $1 != "" ]; then
play ~/.config/dunst/notification-sound.opus
fi

But if I add an or it start running play always:

if [ $1 != "Spotify" || $1 != "" ]; then
play ~/.config/dunst/notification-sound.opus
fi

What I'm doing wrong?

https://redd.it/13nbay9
@r_bash
best way to deal with unexpected operator when user inputs enter instead of a letter?

context: user is given two valid options to choose from

read var
while [ $var != a \] && [ $var != z \]
do
printf "Not a valid option. Enter again\\n"
read var
done


but if the user presses the enter key, then
[: !=: unexpected operator
same thing happens when the user is supposed to enter a number but enters a letter instead and vice versa

is 2>/dev/null the best solution?

https://redd.it/13neu16
@r_bash
How to write a mounted shared path

I haven't touched bash or cbash in years and today i installed a ubuntu VM client on a windows OS.
The VM shares a folder, and i'm planning to convert a few noscripts into bash (or whatever) which i previously ran in windows batch files.

The question i have is how do i write the path?
The path in windows might be e:/shared
I think the folder in ubuntu is /mnt/hgfs/shared

Is /mnt/hgfs/shared the path i use in a bash noscript file?

Eg., Delete pdfs in a subfolder might be something like "rm /mnt/hgfs/shared/no-more-pdfs/*.pdf"?

Thx
A

https://redd.it/13ngzg4
@r_bash
Can't get archiving backup noscript to work

Following a readout of a noscript in the 'Linux Command Line and Shell Script BIBLE (4th Ed.)', and it doesn't seem to archive the directories specified in the files-to-backup.txt file; rather, I get a 45B 'archive<today's-date>.tar.gz' file (in the correct periodic directory, at least) that's completely empty.

It does use an interesting method of building the $file_list variable, though:

#!/bin/bash

#DailyArchive - Archive designated files & directories
######## Variables ########################################
#
# Gather the Current Date
#
today=$(date +%y%m%d)
#
# Set Archive filename
#
backup
file=archive$today.tar.gz
#
# Set configuration and destination files
#
basedir=/mnt/j
configfile=$basedir/archive/files-to-backup.txt
period=daily
basedest=$basedir/archive/$period
destination=$basedest/$backup
file
#
# Set desired number number of maintained backups
#
backups=5

######### Functions #######################################

prunebackups() {
local directory="$1" # Directory path
local num
archives="$2" # Number of archives to maintain

# Check if the directory exists
if [ ! -d "$directory" ]
then
echo "Directory does not exist: $directory"
return 1
fi

# Check if there are enough archives in the directory to warrant pruning
local numfiles=$(find "$directory" -maxdepth 1 -type f | wc -l)
if (( num
files >= numarchives )) # If there are...
then
# ...delete the oldest archive
local num
filestodelete=$(( numfiles - numarchives + 1 ))
local filestodelete=$(find "$directory" -maxdepth 1 -type f -printf '%T@ %p\n' | sort -n\
| head -n "$numfilestodelete" | awk '{print $2}')

echo
echo "Deleting the following backup:"
echo "$files
todelete"
sudo rm -f "$files
todelete"
echo "Continuing with backup..."
fi
}

######### Main Script #####################################
#
# Check Backup Config file exists
#

if [ -f "$config
file" ] # Make sure the config file still exists.
then # If it exists, do nothing and carry on.
echo
else # If it doesn't exist, issue an error & exit the noscript.
echo
echo "$(basename "$0"): Error: $configfile does not exist."
echo "Backup not completed due to missing configuration file."
echo
exit 1
fi

#
# Check to make sure the desired number of maintained backups isn't exceeded.
#

prune
backups $basedest $backups || { echo "$(basename "$0"): Error: Unable to prune backup\
directory. Exiting." >&2 ; exit 1; }


#
# Build the names of all the files to backup.
#

fileno=1 # Start on line 1 of the Config File.
exec 0< "$config
file" # Redirect Std Input to the name of the Config File.

read filename # Read first record.

while [ "$?" -eq 0 ] # Create list of files to backup.
do
# Make sure the file or directory exists.
if [ -f "$file
name" ] || -d "$file_name"
then
# If the file exists, add its name to the list.
filelist="$filelist $filename"
else
# If the file does not exist, issue a warning.
echo
echo "$(basename "$0"): Warning: $file
name does not exist."
echo "Obviously, I will not include it in this archive."
echo "It is listed on line $fileno of the config file."
echo "Continuing to build archive list..."
echo
fi

file
no=$((fileno + 1)) # Increment the Line/File number by one.
read file
name # Read the next record.
done

########################################
#
# Back up
the files and Compress Archive
#

echo "Starting archive..."
echo

sudo tar -czf "$destination" "$filelist" 2> /dev/null

echo "Archive completed"
echo "Resulting archive file is: $destination."
echo

exit

Now, I have modified the noscript, adding the 'prune\
backups()' function, but something doesn't quite seem right though, and I can't put my finger on what it is. Can anyone see either where I've screwed up, or if it's just something with the noscript itself?

https://redd.it/13np7cp
@r_bash