The Original FileMaker Community
Business Templates - Demo Apps - Video Tutorials -Samples - Help - 46000 Member Forum

The Leading Filemaker Developer Tools

FileMaker Server – Dangers of wildcards in bash – FileMaker Today

Get real time updates directly on you device, subscribe now.

Many web developers and some filemaker developers likely use bash while using the terminal.  You may have come across some odd issues when you use a command like “rm *”, when you’re in a folder with a lot of files or a file that starts with dash.  The challenge is that bash expands * to be a list of the files and folders rather than passing it on the command.

 The issue with a lot of files is there’s a max command length and the issue with files that start with a dash is the command your trying to call might think your trying to pass it a argument and not a file.  This feature can get fun when you use something like gnu tar.

There’s a nice write-up of the feature/issue at  

	$ touch -- "--checkpoint=1"
	$ touch -- "--checkpoint-action=exec=sh"
	$ echo "whoami" >
	$ touch a
	$ sudo tar cf archive.tar *

What happens when you run “tar cf archive.tar *” is bash turns that into “tar cf archive.tar a –checkpoint=1 –checkpoint-action=exec=sh”.  GNU tar tries to be as helpful as it can process each — parameter in to something it should act on regardless of where it is in the command.

The question quickly becomes “What should I do to prevent issues like this?”.  For most commands there’s two methods around it.  The first is prefix the * with ./ (tar cf archive.tar ./*) because that will cause bash to prefix what’s passed with ./.  The second solution that works with most commands is pass — before the * (tar cf archive.tar — *) as most commands take that as a hint that everything that’s after it is a filename.

bengert's picture

Read more 

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More