There was a script someone wrote in
another question: find / -type d
-printf "chmod %m %p \n" > reset_perms.sh that forced the
permissions down. I'd like to compare
and output the changes rather than
force them down.
Instead of printing out the commands to run change permissions, simply adjust the printf to spit out the uid, gid, mode, and fullpath and send the output to a file. Then as womble mentioned, use diff to compare the two files.
$find / -printf "%U, %G, %m, %p\n" > permissions.txt
0, 0, 755, /bin
0, 0, 755, /bin/chgrp
0, 0, 755, /bin/tar
0, 0, 755, /bin/dir
0, 0, 777, /bin/sh
0, 0, 777, /bin/pidof
0, 0, 777, /bin/bzless
0, 0, 755, /bin/zgrep
...
Use $(eval echo ...)
:
michael:~> USERNAME=michael
michael:~> echo ~michael
/home/michael
michael:~> echo ~$USERNAME
~michael
michael:~> echo $(eval echo ~$USERNAME)
/home/michael
So your code should look like:
HOMEDIR="$(eval echo ~$USERNAME)"
Best Answer
Use -- on every command.