다른 디렉토리에 있을 때 cp 또는 mv 파일을 이미 있는 동일한 디렉토리에 복사하시겠습니까?

다른 디렉토리에 있을 때 cp 또는 mv 파일을 이미 있는 동일한 디렉토리에 복사하시겠습니까?

내가 집에 있고 ~/blob파일이 있는 경우~/blob/a_long_directory_name/c/x.x

나는 타자를 칠 수 있어요

mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y

첫 번째 매개변수의 디렉터리 경로(현재 디렉터리는 아님)를 사용하여 더 짧은 내용을 입력할 수 있는 바로가기가 있습니까?

mv blob/a_long_directory_name/c/x.x $same_dir/y.y

이와 같은 내용은 $same_dir매개변수 1의 디렉터리를 가리킵니다.

답변1

bash를 통해 사용할 수 있습니다버팀대 확장

mv blob/a_long_directory_name/{c/x.x,evenmore/y.y}

답변2

타이핑의 양을 최소화하기 위한 가장 쉬운 방법은 아마도 두 단계로 수행하는 것입니다. CD를 해당 디렉토리로 복사한 다음 이동하세요.

명령이 하나만 있는 경우 하위 쉘을 사용할 수 있습니다.

$ (cd blob/a_long_directory_name/c/ && mv x.x y.y )

즉, 성공 시에만 cd하위 쉘에서만 적용되며 현재 쉘의 작업 디렉토리는 변경되지 않습니다.mvcd

명령이 여러 개인 경우 디렉터리 스태킹을 사용하세요.

$ pushd blob/a_long_directory_name/c/
$ mv x.x y.y
$ mv z.z q.q
$ popd

답변3

쉘의 텍스트 교체 기능을 사용할 수 있습니다. 에서는 bash다음과 같은 짐승을 사용할 수 있습니다.

mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy

그것을 파괴:

!#지금까지 입력된 현재 줄입니다

:$n고려 중인 문자열의 마지막 단어를 선택하라는 메시지가 표시됩니다(이 경우)( 첫 번째 단어를 선택하려면 숫자로 대체 ). 지금까지 입력한 줄의 마지막 단어가 이전 단어가 됩니다.n!#

:gs^xx^yyg결과 단어에 대해 전역( ) 텍스트 대체( )를 수행하고 'xx'를 'yy'로 바꿉니다. 패턴에 사용하도록 허용된 명령에 대한 구분 기호입니다.s^s/

이 방법은 경로("xx")의 일부를 다른 단어("yy")로 바꿀 수 있으므로 약간 더 일반적입니다.

마지막으로 모든 기록 작업과 마찬가지로 적절한 셸 옵션(예: )을 설정하는 것이 좋습니다 ~/.bashrc. 이 경우

shopt -s histverify

Enter 키를 누르면 편집된 줄이 나타나므로 계속 편집하고 오류를 확인할 수 있습니다.

왜 그런 구성을 사용하는지 잘 모르겠지만 이 경우에는 작동합니다.

관련 정보