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


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 http://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt.  

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


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 shell.sh  shell.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

Privacy & Cookies Policy