Bash scripting question (sh.itjust.works)
 

Hello everyone,

Hoping that this is a good place to post a question about Bash scripting. My wife and I have run into a problem in PhotoPrism where it keeps tagging pictures and videos with similar names together and so the thumbnail and the video do not match. I decided that rather than try to get her iPhone to tweak its naming it's easier to just offload to a directory then rename every file to a UUID before sending to photoprism. I'm trying to write a bash script to simplify this but cannot get the internal loop to fire. The issue appears to be with the 'while IFS= read -r -d '' file; do' portion. Is anyone able to spot what the issue may be?

#! /bin/bash
echo "This script will rename all files in this directory with unique names. Continue? (Y/N)"
read proceed
if [[ "$proceed" == "Y" ]]; then
	echo "Proceed"
	#use uuidgen -r to generate a random UUID.
	#Currently appears to be skipping the loop entirely. the find command works so issue should be after the pipe.
	   
# Troubleshooting
#Seems like changing IFS to $IFS helped. Now however it's also pulling others., don't think this is correct.
#verified that the find statement is correct, its the parsing afterwards that's wrong.
#tried removing the $'\0' after -d as that is string null in c. went to bash friendly '' based on https://stackoverflow.com/questions/57497365/what-does-the-bash-read-d-do
#issue definitely appears to be with the while statement
	find ./ -type f \( -iname \*.jpg -o -iname \*.png \) | while IFS= read -r -d '' file; do
	   echo "in loop"
	   echo "$file"
	   #useful post https://itsfoss.gitlab.io/post/how-to-find-and-rename-files-in-linux/
	   #extract the directory and filename
	   dir=$(dirname "$file")
	   base=$(basename "$file")
	   echo "'$dir'/'$base'"
	   #use UUID's to get around photoprism poor handling of matching file names and apples high collision rate
	   new_name="$dir/$(uuidgen -r)"
	   echo "Renaming ${file} to ${new_name}"
	   #mv "$file" "$new_name" #uncomment to actually perform the rename.
	done
	echo "After loop"
else
	echo "Cancelling"
fi

 

Hello all, I'm looking for a second set of eyes before I potentially screw up all my self hosted services. I'll be the first to admit I'm not an IT expert and am getting a wee bit lost in all of the reading I've been doing so please go easy on me.

I'm currently working to get my domain (already registered) to be used for internal addresses as well as get a working SSL certificate. I am following wolfgangs instructions with the exception that I already have my domain registered with BlueHost. BlueHost does not appear to be directly supported by nginx and wants to charge me $90/year for an SSL certificate which is far more than I'm willing to pay for my little self-hosting hobby.

Fundamentally I believe I need to point my domain to new nameservers which provide support for 'Let's Encrypt'. If there were a vendor that offered that as a service I think I could leave the domain with bluehost and simply point the nameservers elsewhere. I "think" cloudflare offers this but its the only one and I've heard mixed things about using it from the standpoint of privacy. Does anyone have suggestions?

The other option I see, which seems more broadly supported, is to transfer my domain from bluehost to another vendor. Does anyone have suggestions? I've struggled to see the renewal costs when looking at these transfers.

Before fully borking my setup, would appreciate some input on if I'm on the right track or not. Thank you!

 

I'm looking into a new laptop and really like what I see from framework. One point I'm concerned about is buying into a repairable system but being wholly reliant on a small relatively new player to continue providing specially modularized parts (e.g. the USB modules). Is this concern valid or is there something I'm overlooking?

Side question: has anyone had luck with PopOS on a framework?