From: Earnie B. <ea...@us...> - 2011-09-28 19:33:20
|
I was cleaning up my Windows temporary directory based on ls -lt data and ran across a directory named ~123install or some such. I intended to deleted it and its contents so I used rm -rf ~123install which kindly proceeded to modify ~123install into //. Fortunately it aborted with permission denied before it went too far but I did loose some precious commands which I'm not reinstalling. Fortunately I still have the mingw-get cached download files although I did loose mingw-get itself but that was an easy fix. I'll be opening a bug ticket for MSYS for this case. Earnie |
From: Earnie B. <ea...@us...> - 2011-09-28 19:54:54
|
On Wed, 28 Sep 2011 15:32:59 -0400, Earnie Boyd wrote: > I was cleaning up my Windows temporary directory based on ls -lt data > and ran across a directory named ~123install or some such. I intended > to deleted it and its contents so I used rm -rf ~123install which > kindly proceeded to modify ~123install into //. Fortunately it > aborted with permission denied before it went too far but I did loose > some precious commands which I'm not reinstalling. Fortunately I Can't type today either s/not/now > still have the mingw-get cached download files although I did loose > mingw-get itself but that was an easy fix. > > I'll be opening a bug ticket for MSYS for this case. > Earnie |
From: Steve T. <st...@to...> - 2011-09-28 21:07:44
|
On Wed, Sep 28, 2011 at 3:54 PM, Earnie Boyd <ea...@us...>wrote: > On Wed, 28 Sep 2011 15:32:59 -0400, Earnie Boyd wrote: > > > I was cleaning up my Windows temporary directory based on ls -lt data > > and ran across a directory named ~123install or some such. I intended > > to deleted it and its contents so I used rm -rf ~123install which > > kindly proceeded to modify ~123install into //. Fortunately it > > aborted with permission denied before it went too far but I did loose > > some precious commands which I'm not reinstalling. Fortunately I > > Can't type today either s/not/now > > > still have the mingw-get cached download files although I did loose > > mingw-get itself but that was an easy fix. > > > > I'll be opening a bug ticket for MSYS for this case. > > > > Earnie > > Yeah, and it is lose, not loose. |
From: Keith M. <kei...@us...> - 2011-09-28 21:52:03
|
On 28/09/11 20:32, Earnie Boyd wrote: > I was cleaning up my Windows temporary directory based on ls -lt data > and ran across a directory named ~123install or some such. I intended > to deleted it and its contents so I used rm -rf ~123install which > kindly proceeded to modify ~123install into //. Hmm. The shell would attempt to expand that, (see tilde expansion in the bash manpage), to refer to the home directory for user 123install. Since MSYS doesn't really comprehend the concept of named users, (no /etc/passwd processing to identify either them, or their associated home directories), the expansion would be ill-defined. The bug would be that the attempted expansion doesn't simply fail, so leaving ~123install unchanged; I guess bash.exe, (aka sh.exe), is the likely culprit. -- Regards, Keith. |
From: Earnie B. <ea...@us...> - 2011-09-29 11:44:10
|
On Wed, 28 Sep 2011 22:51:54 +0100, Keith Marshall wrote: > On 28/09/11 20:32, Earnie Boyd wrote: > > I was cleaning up my Windows temporary directory based on ls -lt > > data and ran across a directory named ~123install or some such. I > > intended to deleted it and its contents so I used rm -rf > > ~123install which kindly proceeded to modify ~123install into //. > > Hmm. The shell would attempt to expand that, (see tilde expansion in > the bash manpage), to refer to the home directory for user 123install. > Since MSYS doesn't really comprehend the concept of named users, (no > /etc/passwd processing to identify either them, or their associated > home directories), the expansion would be ill-defined. > > The bug would be that the attempted expansion doesn't simply fail, so > leaving ~123install unchanged; I guess bash.exe, (aka sh.exe), is the > likely culprit. > Or perhaps the return code from a function called by bash in MSYS. Earnie |
From: Keith M. <kei...@us...> - 2011-09-30 20:02:57
|
On 29/09/11 12:43, Earnie Boyd wrote: > On Wed, 28 Sep 2011 22:51:54 +0100, Keith Marshall wrote: >> On 28/09/11 20:32, Earnie Boyd wrote: >>> I was cleaning up my Windows temporary directory based on ls -lt >>> data and ran across a directory named ~123install or some such. I >>> intended to deleted it and its contents so I used rm -rf >>> ~123install which kindly proceeded to modify ~123install into //. >> >> Hmm. The shell would attempt to expand that, (see tilde expansion in >> the bash manpage), to refer to the home directory for user 123install. >> Since MSYS doesn't really comprehend the concept of named users, (no >> /etc/passwd processing to identify either them, or their associated >> home directories), the expansion would be ill-defined. >> >> The bug would be that the attempted expansion doesn't simply fail, so >> leaving ~123install unchanged; I guess bash.exe, (aka sh.exe), is the >> likely culprit. > > Or perhaps the return code from a function called by bash in MSYS. That's certainly an alternative possibility, which you may note from my comment on the associated bug tracker ticket, I'd already acknowledged. The intent of my original response here was twofold:-- 1) To point out that the bug is actually associated with the shell's tilde expansion mechanism, and... 2) To raise awareness of the potentially destructive consequence of carelessly invoking commands such as 'rm -rf ...', without a proper understanding of the shell syntax involved. Now, of these, (1) is more appropriate to the bug tracker, (where I repeated this comment); (2) is of much more value here. While I sympathise that a bug in MSYS caused more destruction, as a result of your invocation of 'rm -rf ~123install', than it probably should have done, you must accept some responsibility for your own carelessness, in invoking a potentially destructive command without having a proper understanding of the syntax. Your intent may have been to expunge a directory called '~123install', but that ISN'T the intent expressed by the command you invoked: $ rm -rf ~123install (which, due to tilde expansion, means "expunge the home directory of user 123install, together with all of its content, applying recursively to any included subdirectories, while silently overriding any read only attributes which may have been assigned"). When you invoke such potentially destructive commands, you are expected to know what you are doing. In this case, to express your intent, the correct syntax would have been: $ rm -rf ./~123install or: $ rm -rf '~123install' either of which will suppress the tilde expansion. Now, lest I should create an impression of overbearing smugness, let me candidly admit that I too could just as easily have made this same mistake. There is a lesson here, from which we can all benefit. -- Regards, Keith. |
From: Earnie B. <ea...@us...> - 2011-09-30 21:51:21
|
On Fri, 30 Sep 2011 21:01:25 +0100, Keith Marshall wrote: > > While I sympathise that a bug in MSYS caused more destruction, as a > result of your invocation of 'rm -rf ~123install', than it probably > should have done, you must accept some responsibility for your own > carelessness, in invoking a potentially destructive command without > having a proper understanding of the syntax. Your intent may have > been to expunge a directory called '~123install', but that ISN'T the > intent expressed by the command you invoked: > > $ rm -rf ~123install > I understand the expansion of ~ and acknowledge that I foolishly used it without thinking about it however if I had done so in a 'NIX world rm -rf would have sightly ignored the absence of the file system entry. It would not have proceeded to attempt to remove files beginning from the root device. > (which, due to tilde expansion, means "expunge the home directory of > user 123install, together with all of its content, applying > recursively to any included subdirectories, while silently overriding > any read only attributes which may have been assigned"). > I get that and do know it. > When you invoke such potentially destructive commands, you are > expected to know what you are doing. In this case, to express your > intent, the correct syntax would have been: > > $ rm -rf ./~123install > > or: > > $ rm -rf '~123install' Well, if one had stopped to think about it yes. > > either of which will suppress the tilde expansion. > > Now, lest I should create an impression of overbearing smugness, let > me candidly admit that I too could just as easily have made this same > mistake. There is a lesson here, from which we can all benefit. Which is why I brought it up on the list. Earnie |
From: Keith M. <kei...@us...> - 2011-10-03 19:51:09
|
On 30/09/11 22:51, Earnie Boyd wrote: > On Fri, 30 Sep 2011 21:01:25 +0100, Keith Marshall wrote: >> While I sympathise that a bug in MSYS caused more destruction, as a >> result of your invocation of 'rm -rf ~123install', than it probably >> should have done, you must accept some responsibility for your own >> carelessness, in invoking a potentially destructive command without >> having a proper understanding of the syntax. Your intent may have >> been to expunge a directory called '~123install', but that ISN'T the >> intent expressed by the command you invoked: >> >> $ rm -rf ~123install > > I understand the expansion of ~ and acknowledge that I foolishly used > it without thinking about it I would say carelessly, rather than foolishly; I certainly wouldn't wish to suggest that you were foolish. > however if I had done so in a 'NIX world rm -rf would have sightly > ignored the absence of the file system entry. It would not have > proceeded to attempt to remove files beginning from the root device. That's true, which is why I sympathise that the MSYS bug exacerbated the undesirable outcome. FWIW, I'll often run: $ echo rm -rf <args> ... before running it for real, or maybe even substitute: $ rm -ri <args> ... where I have any doubt as to how the shell might interpret '<args> ...' in a potentially destructive scenario such as running 'rm -r ...'. >> Now, lest I should create an impression of overbearing smugness, let >> me candidly admit that I too could just as easily have made this same >> mistake. There is a lesson here, from which we can all benefit. > > Which is why I brought it up on the list. Ack. I just felt that it needed amplification. -- Regards, Keith. |