bash에 경로의 마지막 세그먼트를 삭제하는 바로가기가 있습니까?

bash에 경로의 마지막 세그먼트를 삭제하는 바로가기가 있습니까?

나는 bash를 더 빠르게 만드는 많은 bash 단축키(Ca/Ce, Cu, Cw, Mf/Mb, Cr 등)를 사용하는 데 매우 능숙해졌습니다. 그러나 경로의 마지막 부분을 제거하려는 경우 일반적인 작업에 대한 좋은 지름길을 찾지 못했습니다.

내가 가지고 있다고 말해

ls ~/projects/arcaneweb/libraries

내 말이 무슨 뜻인지 깨달았어

ls ~/projects/arcaneweb/sources

libraries많은 키 입력을 절약하면서 삭제하는 방법이 있습니까 ?

답변1

단일 단축키:M-backspace

Alt+←      

답변2

대체 옵션이 있지만 경로가 매우 길지 않으면 실제로 키 입력을 저장하는지 확실하지 않습니다.

^abc^xyz

이는 abc의 첫 번째 발생을 xyz로 대체합니다.

[root~]# ls -l /var/log/messages
-rw-------  1 root root 850312 Dec 28 14:08 /var/log/messages
[root ~]# ^messages^secure
ls -l /var/log/secure
-rw-------  1 root root 652614 Dec 28 14:08 /var/log/secure

Bash 단축키 참조: http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/

답변3

Mb, Ck는 내가 찾은 것 중 가장 빠르며 ESC를 Meta로 사용해야 하기 때문에 약간 느립니다. Alt/Option을 메타로 바인딩하면 이에 대한 근육 기억이 발달하면 꽤 빨라질 것입니다.

답변4

문제 unix-filename-rubout는 공백을 경로의 일부로 이해하지 못한다는 것입니다.

나는 다음과 같은 바인딩을 생각해냈습니다(Alt-w에 바인딩).

bind '"\ew":"\e[D\e\C-]/\e[C\e\C-d"'

논리는 간단합니다.

\e[D-backward-char

\e\C-]/-then ( 역 슬래시 character-search-backward찾기 )/

\e[C-forward-char

\e\C-d-shell-kill-word



다양한 명령은 여기에 설명되어 있습니다. https://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html


특정 명령에 대한 바로가기를 쿼리하려면 다음을 사용하세요.
bind -q shell-kill-word

관련 정보