In bash emacs mode, is there anyway to delete till the previous slash character?
For example if i entered the command cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_path
and want to just delete the reallylongincorrectfolder
.Is there any shortcut? This is a very comman scenario for me in bash.
Something like dF<char>
in vi?
3 Answers
bind -P |grep unix-filename-rubout
To test out the keybinding with eg. Ctrl-b:
bind \\C-b:unix-filename-rubout
For permanent usage, add it to ~/.inputrc
-
2To add it to
~/.inputrc
, add a line like this to that file:"\C-b": unix-filename-rubout
. To see the effect, you'll have to start a new bash shell (or run some other program that uses the GNU readline library). Jul 29, 2018 at 10:50
Alt-Backspace and Ctrl-w are commonly mapped to backward-kill-word
, which does that. If you want to find out what it's mapped to on your system (if anything), run bind -P | grep '^backward-kill-word'
.
As explained by @Barmar, this is different from unix-word-rubout
, which removes to the previous space boundary.
-
2But that will kill the entire word.. I want to kill only till the last slash– woodstokJun 11, 2013 at 8:59
-
It does remove only to the last slash here. Slash is one of the default word separators. Are you sure you're using Bash?– l0b0Jun 11, 2013 at 9:01
-
3Ctl-w is normally bound to
unix-word-rubout
: Kill the word behind point, using white space as a word boundary.– BarmarJun 11, 2013 at 10:31 -
2This doesn't exactly work. "Words are composed of alphanumeric characters (letters and digits)". Hence it'll stop at much more than just slashes. The default-unbound
unix-filename-rubout
is slightly better, since it'll stop at white space and slash.– SparhawkMay 4, 2014 at 1:16 -
3
alt
+backspace
deletes until/
, thus answering the question.ctrl
+w
on the other hand deletes until the previous space. Feb 20, 2017 at 9:49
Put this in your .inputrc
and start a new shell:
C-b:unix-filename-rubout
Ctrl-b now erases backwards to the next slash.
Nirvana!
Don't forget Ctrl-XCtrl-E will launch your editor so you can edit a complicated command line comfortably.