13

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?

8
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
    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). – Croad Langshan Jul 29 '18 at 10:50
8

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.

  • But that will kill the entire word.. I want to kill only till the last slash – woodstok Jun 11 '13 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 '13 at 9:01
  • My bad.. Alt-Backspace does remove it till the last slash.What is the difference between ALt-BackSpace and Ctrl-W ? – woodstok Jun 11 '13 at 9:47
  • 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 '13 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 '14 at 1:16
4

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, privacy policy and cookie policy

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