
이 질문은이전에 요청한 bash 콘솔에서 현재 입력된 매개변수를 어떻게 반복합니까?
나는 쉘에서 파일 이름을 약간 바꾸고 싶은 경우가 많습니다. 예:
$ mv test_1.py _test_1.py
또는
$ mv test_1.py test_1.py.org
나는 다음의 제안을 사용할 수 있습니다.bash 콘솔에서 현재 입력된 매개변수를 어떻게 반복합니까?, 하지만
있어요강타 마술그러면 이전에 입력한 매개변수만 참조할 수 있게 될까요?
예를 들어, 위의 경우 마술이 $M,
다음과 같은 경우 다음을 사용합니다.
$ mv test_1.py _$M.py
$ mv test_1.py $M.org
답변1
마법은 두 부분으로 작용합니다.
첫째, echo는 e의 별칭입니다. 별칭을 원하지 않는 경우에도 echo가 작동합니다. 둘째, "중괄호 확장"을 사용합니다.
$ e mv {,_}test_1.py # Try to see if it works as expected.
mv test_1.py _test_1.py
# If the arguments are what you want:
$ mv {,_}test_1.py # Press ↑ (up arrow), remove `e`
$ !* # OR: Type `!*` --> last line after arg 0.
$ mv {,_}test_1.py # If `histverify` is set.
!*는 다음과 같은 경우 공백으로 확장될 수 있습니다.마법 공간 활성화아니면 당신이세트shopt -s histverify
Enter를 누른 후 Enter를 다시 눌러 실행하기 전에 기록 확장의 효과를 검토할 수 있는 기회가 제공됩니다.
다른 예:
$ e mv test_1.py{,.org}
mv test_1.py test_1.py.org # The result of the brace expansion.
# Review it, and if it is ok:
$ !* # type !* (use either space or enter)
# That will depend on how you setup it.
$ mv test_1.py{,.org} # The command appear again (enter to execute).
$
!#
또한 지금까지 입력한 명령줄을 의미하고 첫 번째 명령을 선택하는 히스토리 확장도 있습니다 :1
. 매직 스페이스를 활성화한 경우 스페이스를 입력 mv test1.py !#:1
하고 누르면 명령이 변경됩니다.
$ mv test_1.py !#:1 # Press space.
$ mv test_1.py test_1.py # The command line change to this.
$ mv test_1.py test_1.org # Edit and press enter to execute.