27

In Bash Emacs mode, is there any way 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 common scenario for me in Bash.

Something like dF<char> in vi?

3 Answers 3

15
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

1
  • 2
    To 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
18

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.

7
  • 2
    But that will kill the entire word.. I want to kill only till the last slash
    – woodstok
    Jun 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?
    – l0b0
    Jun 11, 2013 at 9:01
  • 3
    Ctl-w is normally bound to unix-word-rubout: Kill the word behind point, using white space as a word boundary.
    – Barmar
    Jun 11, 2013 at 10:31
  • 2
    This 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.
    – Sparhawk
    May 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
12

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.