diff --git a/plugins/sudo/README.md b/plugins/sudo/README.md new file mode 100644 index 0000000..1a9f206 --- /dev/null +++ b/plugins/sudo/README.md @@ -0,0 +1,50 @@ +# sudo + +Easily prefix your current or previous commands with `sudo` by pressing esc twice. + +To use it, add `sudo` to the plugins array in your bashrc file: + +```bash +plugins=(... sudo) +``` + +## Usage + +### Current typed commands + +Say you have typed a long command and forgot to add `sudo` in front: + +```console +$ apt-get install build-essential +``` + +By pressing the esc key twice, you will have the same command with `sudo` prefixed without typing: + +```console +$ sudo apt-get install build-essential +``` + +### Previous executed commands + +Say you want to delete a system file and denied: + +```console +$ rm some-system-file.txt +-su: some-system-file.txt: Permission denied +$ +``` + +By pressing the esc key twice, you will have the same command with `sudo` prefixed without typing: + +```console +$ rm some-system-file.txt +-su: some-system-file.txt: Permission denied +$ sudo rm some-system-file.txt +Password: +$ +``` + +## Credits + +Inspired by ohmyzsh sudo plugin. + diff --git a/plugins/sudo/sudo.plugin.sh b/plugins/sudo/sudo.plugin.sh new file mode 100644 index 0000000..64ac4e2 --- /dev/null +++ b/plugins/sudo/sudo.plugin.sh @@ -0,0 +1,11 @@ +#! bash oh-my-bash.module + +function _omb_plugin_sudo_add_sudo { + if [[ -z $READLINE_LINE ]]; then + READLINE_LINE="$(fc -ln -1 | command sed 's/^[[:space:]]\{1,\}//')" + fi + READLINE_LINE="sudo $READLINE_LINE" + ((READLINE_POINT += 5)) +} + +bind -x '"\e\e": _omb_plugin_sudo_add_sudo'