Re:In defense of Unix
by ygra on Saturday March 05, 2016 @09:26AM
(#11229573)
Considering that most file systems these days allow spaces in paths, I'd guess you can safely remove the »On Windows« there. The amount of shell and build scripts on Unix-likes that die horrible deaths when encountering spaces is not funny. And well, yes, in a way that probably means that spaces in paths are not »supported« there, but you could then say the same about Windows. As well as using non-ASCII in paths.
[ Parent
| on HN ]
> The amount of shell and build scripts on Unix-likes that die horrible deaths when encountering spaces is not funny.
That's so accurate. I used to write shell scripts with
command $1
until I got a few too many nasty surprises with dashes in filenames.Always use "$@"
foo() {
for arg in "$@" ; do
echo "arg is \"${arg}\""
done
}
foo 'bar baz' 'spaces in filename.txt'
> dashes in filenames.When writing shell scripts it's a good idea to use the -- option whenever possible
stupid_backup() {
cp -a -- "$@" /stupid/backup/dir/
}
# copies 2 files
stupid_backup --files '-with -leading -dashes'What does the -- option do? I haven't encountered that before.
Re:In defense of Unix
by QuercusMax on Sunday March 06, 2016 @08:10PM
(#11236471)
It means "everything past here should not be parsed as a - or -- flag". If you have a file named "-l", then ls -- -l will show you that file, instead of doing a long listing.
It should be noted that not all flag parsers support it. But most people use getopt so it's not a big deal.
Thanks- that's really useful.