| ▲ | mycall 12 hours ago |
| I like the opposite too, -commit or -execute as it is assumed running it with defaults is immutable as the dry run, simplifying validation complexity and making the go live explicit. |
|
| ▲ | Twirrim 12 hours ago | parent | next [-] |
| I've biased towards this heavily in the last 8 or so years now. I've yet to have anyone mistakenly modify anything when they need to pass --commit, when I've repeatedly had people repeatedly accidentally modify stuff because they forgot --dry-run. |
| |
| ▲ | IgorPartola 11 hours ago | parent | next [-] | | I wouldn’t want most things to work this way: $ rm file.bin
$ rm —-commit file.bin
$ cat foo.txt > bar.txt
$ cat foo.txt | tee —-write-for-real bar.txt
$ cp balm.mp3 pow.mp3
$ cp —-i-mean-it balm.mp3 pow.mp3
There is a time and a place for it but it should not be the majority of use cases. | | |
| ▲ | Darfk 11 hours ago | parent | next [-] | | Totally agree it shouldn't be for basic tools; but if I'm ever developing a script that performs any kind of logic before reaching out to a DB or vendor API and modifies 100k user records, creating a flag to just verify the sanity of the logic is a necessity. | | |
| ▲ | Joker_vD 11 hours ago | parent | next [-] | | if [ -n "$DRY_RUN" ] ; then
alias rm='echo rm'
alias cp='echo cp'
fi
Of course, output redirects will still overwrite the files, since the shell does it and IIRC this behaviour can't be changed. | | | |
| ▲ | james_marks 11 hours ago | parent | prev [-] | | Yep. First thing I do for this kind thing is make a preview=true flag so I don’t accidentally run destructive actions. |
| |
| ▲ | digiown 11 hours ago | parent | prev | next [-] | | For most of these local data manipulation type of commands, I'd rather just have them behave dangerously, and rely on filesystems snapshots to rollback when needed. With modern filesystems like zfs or btrfs, you can take a full snapshot every minute and keep it for a while to negate the damage done by almost all of these scripts. They double as a backup solution too. | |
| ▲ | ronjakoi 8 hours ago | parent | prev | next [-] | | I used to have alias rm='rm -i' for a few years to be careful, but I took it out once I realised that I had just begun adding -f all the time | | |
| ▲ | wonger_ 2 hours ago | parent [-] | | See also rm -I (capital i), which only prompts when deleting directories or >3 files |
| |
| ▲ | hdjrudni 11 hours ago | parent | prev [-] | | Even in those basic examples, it probably would be useful. `cp` to a blank file? No problem. `cp` over an existing file? Yeah, I want to be warned. `rm` a single file? Fine. `rm /`? Maybe block that one. | | |
| ▲ | Izkata 7 hours ago | parent [-] | | That last one would error without doing anything anyway because it's not recursive. |
|
| |
| ▲ | __turbobrew__ 7 hours ago | parent | prev [-] | | —dry-run should default to true | | |
|
|
| ▲ | torstenvl 9 hours ago | parent | prev | next [-] |
| I have a parallel directory deduper that uses hard links and adopted this pattern exactly. By default it'll only tell you which files are identical between the two parallel directory structures. If you want it to actually replace the files with hard links, you have to use the --execute flag. |
| |
|
| ▲ | spike021 10 hours ago | parent | prev | next [-] |
| There was a tool I used some time ago that required typing in a word or phrase to acknowledge that you know it's doing the run for real. Pros and cons to each but I did like that because it was much more difficult to fat finger or absentmindedly use the wrong parameter. |
|
| ▲ | xyse53 12 hours ago | parent | prev | next [-] |
| Yeah I'm more of a `--wet-run` `-w` fan myself. But it does depend on how serious/annoying the opposite is. |
| |
| ▲ | aqme28 12 hours ago | parent [-] | | I've done that, but I hate the term "wet run." I use "live run" now, which I think gets the point across without being sort of uncomfortable. | | |
| ▲ | IgorPartola 11 hours ago | parent | next [-] | | --with-danger --make-it-so --do-the-thing --go-nuts --safety-off So many fun options. | | |
| ▲ | Darfk 11 hours ago | parent | next [-] | | I'm a fan of --safety-off. It gives off a 'aim away from face' or 'mishandle me and I'll blow a chunk out of your DB' vibe. | |
| ▲ | tetha 5 hours ago | parent | prev | next [-] | | I find it important to include system information in here as well, so just copy-pasting an invocation from system A to system B does not run. For example, our database restore script has a parameter `--yes-delete-all-data-in` and it needs to be parametrized with the PostgreSQL cluster name. So a command with `--yes-delete-all-data-in=pg-accounting` works on exactly one system and not on other systems. | |
| ▲ | torstenvl 9 hours ago | parent | prev | next [-] | | It's in the UI not the command line, but I like Chromium's thisisunsafe | |
| ▲ | JsonCameron 11 hours ago | parent | prev | next [-] | | I've done a few --execute --i-know-what-im-doing for some more dangerous scripts | | |
| ▲ | altairprime 10 hours ago | parent [-] | | May I recommend --I-take-responsibility-for-the-outcome-of-proceeding and require a capital I? |
| |
| ▲ | altairprime 10 hours ago | parent | prev [-] | | --commit is solid too |
| |
| ▲ | bregma 3 hours ago | parent | prev | next [-] | | --moisten
| |
| ▲ | Quekid5 11 hours ago | parent | prev [-] | | Moist run is the way. |
|
|
|
| ▲ | inglor_cz an hour ago | parent | prev | next [-] |
| This is something I learnt here. My latest script which deletes the entire content of a downloaded Sharepoint (locally only) and the relevant MS365 account from the computer runs by default in a read-only mode. You have to run it with an explicit flag to allow for changes. Also, before it actually deletes the account, you need to explicitly type DELETE-ACCOUNT in order to confirm that this is indeed your intent. So far, nobody managed to screw up, even in heated situations at client's place. |
|
| ▲ | lazide 10 hours ago | parent | prev [-] |
| Just don’t randomly mix and match the approaches or you are in for a bad time. |