3 ms·
This was taught to me in my first linux admin job. I was running commands manually to interact with files and databases, but was quickly shown that even just w
by francis-io 4y ago
This was taught to me in my first linux admin job.
I was running commands manually to interact with files and databases, but was quickly shown that even just writing all the commands out, one by one gives room personally review and get a peer review, and also helps with typos. I could ask a colleague "I'm about to run all these commands on the DB, do you see any problem with this?". It also reduces the blame if things go wrong if it managed to pass approval by two engineers.
While I'm thinking back, another little tip I was told was to always put a "#" in front of any command I paste into a terminal. This stops accidentally copying a carriage return and executing the command.
- koolba 4y ago> This stops accidentally copying a carriage return and executing the command. For a one-liner sure, but a multi line command can still be catastrophic. Showing the contents of the clipboard in the terminal itself (eg via xclip) or opening an editor and saving the contents to a file are usually better approaches. The latter let’s you craft the entire command in the editor and then run it as a script.
- afiori 4y agoFrom [0]: [For Bash] Ctrl + x + Ctrl + e : launch editor defined by $EDITOR to input your command. Useful for multi-line commands. I have tested this on windows with a MINGW64 bash, it works similarly to how `git commit` works; by creating a new temporary file and detecting* when you close the editor. [0] https://github.com/onceupon/Bash-Oneliner https://github.com/onceupon/Bash-Oneliner * Actually I have no idea how this works; does bash wait for the child process to stop? does it do some posix filesystem magic to detect when the file is "free"? I can't really see other ways
- mh- 4y agoIt does create and give a temporary file path to the editor, but then simply waits for the process to exit with a healthy status. Once that happens, it reads from the temporary file that it created.
- remram 4y agoThe 'enable-bracketed-paste' setting is an easier and more reliable way to deal with that: https://unix.stackexchange.com/a/600641/81005 https://unix.stackexchange.com/a/600641/81005 It will prevent any number of newlines from running the commands if they're pasted instead of typed. You can enable it either in .inputrc or .bashrc (with `bind 'set enable-bracketed-paste on'`)