어떻게 표현해야 할지 모르겠지만, 다음과 같은 명령어를 치는 자신을 종종 발견합니다.
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
저는 보통 경로를 두 번 입력하거나(탭 완성 기능 사용) 커서를 사용하여 경로를 복사하여 붙여넣습니다. 타이핑을 더 쉽게 해주는 bashfoo가 있나요?
답변1
많은 트릭이 있지만(중복도 찾을 수 있을 것 같습니다) 이를 위해 저는 이렇게 하는 경향이 있습니다.
cp /etc/prog/dir1/myconfig.yml{,.bak}
귀하의 명령에 따라 확장됩니다.
이것은 ... 불리운다버팀대 확장. 여기에 사용된 형식에서 {}
표현식은 쉼표로 구분된 여러 문자열을 지정합니다. 이는 전체 /etc/prog/dir1/myconfig.yml{,.bak}
표현식을 "확장"하여 {}
부분을 각 문자열로 차례로 대체합니다. 빈 문자열은 주어진 /etc/prog/dir1/myconfig.yml
, 다음은 .bak
주어진 입니다 /etc/prog/dir1/myconfig.yml.bak
. 밝혀지다
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
다음 표현식은 중첩될 수 있습니다.
echo a{b,c,d{e,f,g}}
생산하다
ab ac ade adf adg
숫자를 사용하여 시퀀스를 생성하는 변형이 있습니다.
echo {1..10}
생산하다
1 2 3 4 5 6 7 8 9 10
단계를 지정할 수도 있습니다.
echo {0..10..5}
생산하다
0 5 10
답변2
히스토리 확장은 이런 종류의 작업에 유용합니다(bash 히스토리가 활성화되어 있다고 가정).
귀하의 예에서는 다음을 수행할 수 있습니다.
cp /etc/prog/dir1/myconfig.yml !#:1.bak
여기서는 !#
현재 줄을 참조하고, !#:1
현재 줄의 매개변수 1을 참조하고, 현재 줄의 매개변수 1을
참조하고 , 마지막으로 ".bak"를 추가합니다.!#:1.bak
기록 지정자를 입력할 때 파일 이름을 다시 확인하거나 수정하려는 경우 Ctrl++를 사용하여 실제 값으로 확장할 수 있습니다.AltE
더 많은 정보는 bash 매뉴얼 페이지의 "History Extensions" 섹션에서 확인할 수 있습니다.
답변3
progo의 답변과 유사하지만 약간 더 간단합니다. C-w
커서 왼쪽에 있는 단어를 잘라내고("kill") C-y
다시 삽입("yank")합니다.
$ cp /etc/dir1/myconfig.yml█ (C-w)
$ cp █ (C-y)
$ cp /etc/dir1/myconfig.yml█ (space, C-y)
$ cp /etc/dir1/myconfig.yml /etc/dir1/myconfig.yml█ (finish text)
$ cp /etc/dir1/myconfig.yml /etc/dir1/myconfig.yml.bak█
답변4
tcsh
또는 에서 패턴( 위젯) 의 마지막 단어를 삽입합니다 zsh
.Alt+Ctrl+_emacs
copy-prev-word
cp 매우 긴 Alt+Ctrl+_경로.뒤로
bash
위젯(기본적으로 어떤 키에도 바인딩되지 않음) 이 있지만 단어를 링 버퍼에만 복사하므로 위젯 을 꺼내려면 (모드에서 ) 키를 copy-backward-word
눌러야 합니다 . 하지만 다음과 같이 할 수 있습니다.Ctrl-Yemacs
bind '"\e[cpw~": copy-backward-word'
bind '"\e\C-_": "\e[cpw~\C-Y"'
Alt+Ctrl+_복사/스나프 및 붙여넣기/복사는 / 처럼 수행되어야 합니다 .tcsh
zsh