@Arthur-Schwarez ,
For example, if we have a directory with lhsrhs and “lhs rhs” then a command such as “for i *;; do echo $i; done” will return “lhsrhs”, “lsh”, “rhs”, yielding three files instead of two.
You’re right, some scripts / syntax won’t work well on linux when there’s spaces in the name [see below for caveat]
Then again, the same is true on Windows: for example, the wrong C:\Program Files (x86)\Notepad++\notepad++.exe %1 as your “open” file association in the registry, vs the right "C:\Program Files (x86)\Notepad++\notepad++.exe" "%1".
Your linux example is in a slightly different syntax than I’m used to; which shell is it? On some linux systems I have access to: in an ancient (c. 2004) GNU bash 3.00.15(1), or in my old but more recent (c. 2011) GNU bash 4.2.37(1), the syntax for i in * ; do echo $i ; done worked as expected from the command line when it ran across a filename with a space: it printed that spaced filename on one line.
But even if you’re on a shell that doesn’t behave the same as my bashes, and really did split the filename over two lines, there should be a way around the problem. And in fact, it’s the same solution as you use in Windows: add quotes. I am betting that for i *;; do echo "$i"; done would work in that circumstance.
But, as @Scott-Sumner pointed out, if the spaces in the themes really bother you, then just rename them. Their name isn’t critical to their functionality.