Paul L. Snyder on 26 Jan 2013 14:36:30 -0800 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] Update: Strange Bash Behavior vis-a-vis Embedded Spaces and Wildcards |
When in doubt, turn to the manpage. The rule for double-quoted strings is simple: Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. Single-quoted strings are even simpler: Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. If you want globbing, it has to be done outside of a quoted context. Paul On Sat, 26 Jan 2013, Doug Stewart wrote: > In bash, " quoted strings should have all variables and wildcards expanded > while ' quoted strings should parse as liberals, so I'm not sure if that's > correct... > > On Saturday, January 26, 2013, David Coulson wrote: > > > Your quote includes the asterisk, so it is interpreted as a literal, > > rather than wildcard. > > > > Sent from my iPad > > > > On Jan 26, 2013, at 5:27 PM, Casey Bralla <MailList@nerdworld.org<javascript:;>> > > wrote: > > > > > Ooops, I over-simplified the example: > > > > > > try > > > > > > ls "directory with spaces/*name" (with a wildcard). > > > > > > > > > > > > but > > > > > > ls directory\ with\ spaces/*name works > > > > > > > > > > > > Also, as David Coulson suggested > > > > > > ls "directory with spaces"/*name also works. > > > > > > It must be something with the quoted wildcard. > > > > > > > > > > > > > > > > > > > > > > > > On Saturday, January 26, 2013 4:13:37 PM Casey Bralla wrote: > > >> I recently tried to do a file deletion and got some strange results. > > >> > > >> If I did this command: > > >> > > >> rm "/directory with spaces/filename" (with quotes around the full path > > and > > >> file name) the command would error out with a file-not-found error. > > >> > > >> However, this command works just fine: > > >> > > >> rm /directory\ with\ spaces/filename > > >> > > >> > > >> I thought quoting the filename would work, but I had to escape the > > spaces > > >> to make it work. I find the escape method to be difficult to read, > > while > > >> the quoted string is very easy. Hence, I always use the quoted method. > > >> > > >> Can anybody explain why the quoted string does not work? > > > > > > -- > > > > > > > > > Casey Bralla > > > > > > Chief Nerd in Residence > > > The NerdWorld Organisation > > > www.NerdWorld.org > > > > > ___________________________________________________________________________ > > > Philadelphia Linux Users Group -- > > http://www.phillylinux.org > > > Announcements - > > http://lists.phillylinux.org/mailman/listinfo/plug-announce > > > General Discussion -- > > http://lists.phillylinux.org/mailman/listinfo/plug > > ___________________________________________________________________________ > > Philadelphia Linux Users Group -- > > http://www.phillylinux.org > > Announcements - > > http://lists.phillylinux.org/mailman/listinfo/plug-announce > > General Discussion -- > > http://lists.phillylinux.org/mailman/listinfo/plug > > > > > -- > -Doug > ___________________________________________________________________________ > Philadelphia Linux Users Group -- http://www.phillylinux.org > Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce > General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug