이름이 from에서 to longfile
로인 파일을 이동 하려면 다음과 같이 할 수 있습니다./longpath/
/longpath/morepath/
mv (/longpath)/(longfile) $1/morepath/$2
즉, 나중에 동일한 입력에서 재사용할 수 있도록 입력의 특정 부분을 기억해야 함을 bash에 알릴 수 있습니까? (위의 예에서는 대괄호를 묶어 작동하는 가상의 Remember 명령과 $
그룹의 내용을 삽입하는 가상의 재사용 명령을 사용하고 있습니다)
답변1
너할 수 있다이 작업을 수행:
mv /longpath/longfile !#:1:h/morepath/
바라보다https://www.gnu.org/software/bash/manual/bashref.html#History-Interaction
!#
현재 명령입니다:1
명령의 첫 번째 매개변수입니다.:h
그것은 "머리"이다 - 생각dirname
/morepath/
머리에 붙이세요- 동일한 기본 이름을 유지하도록 파일을 디렉터리로 이동합니다.
예를 들어 ".txt" 확장자를 추가하는 등 "긴 파일" 이름을 변경하려는 경우 다음을 수행할 수 있습니다.
mv /longpath/longfile !#:1:h/morepath/!#:1:t.txt
개인적으로 저는 마우스를 사용하여 잘라내어 붙여넣습니다. 실제로 나는 !!
나 보다 !$
더 복잡한 것을 본 적이 없습니다.!!:gs/foo/bar/
답변2
중괄호 확장을 통해 이 작업을 수행할 수도 있습니다.
mv /longpath/{,morepath/}longfile
셸은 이를 확장하여 mv
명령이 다음과 동일하게 표시되도록 합니다.
mv /longpath/longfile /longpath/morepath/longfile
답변3
명령줄에서 보다 효율적으로 입력하려면 다음을 참조하세요.다양한 독서라인 단축키효과가있다. Readline은 이미 쉘에 내장되어 있습니다. 특별한 경우에는 부분 줄을 잡아당기거나 삭제한 다음 readlinekilliring에서 다시 불러올 수 있습니다.
또한 EDITOR 환경 변수를 즐겨 사용하는 편집기로 설정하면 Ctrl-X, Ctrl-E는 현재 명령줄을 모든 편집기 권한으로 수정할 수 있는 편집기 창에 복사합니다. 완료되면 편집기를 저장/종료하면 해당 줄이 셸에서 실행됩니다.
답변4
귀하가 요청하는 특정 사례의 경우 하위 쉘을 사용할 수도 있습니다.
mv (/longpath)/(longfile) $1/morepath/$2
~이 되다
( cd /longpath; mv longfile morepath/ )
또한 사용 중인 셸의 현재 작업 디렉터리를 유지하세요.
이는 다음과 전혀 다르지 않습니다.와일드카드의 셸 확장 사용에 대한 제안그러나 단 하나의 인수로 간단한 것을 쉽게 뒷받침할 수 있는 것보다 더 복잡한 경우에 사용할 수 있습니다.