cp 또는 mv 파일은 내가 다른 디렉토리에있을 때 이미있는 동일한 디렉토리에 있습니까?


12

내가 ~/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_dirparam의 dir을 가리키는 것과 같은 곳 1

답변:


8

타이핑 양을 최소화하려면 두 단계로 수행하는 것이 가장 쉬운 방법입니다. CD를 디렉토리로 이동 한 다음 이동하십시오.

하나의 명령 만있는 경우 서브 쉘을 사용할 수 있습니다.

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

이는 cd서브 쉘에서만 적용되며, 성공한 mv경우에만 발생 cd하며 현재 쉘의 작업 디렉토리는 변경되지 않음을 의미합니다.

둘 이상의 명령이있는 경우 디렉토리 스택을 사용하십시오.

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

이것은 even_more상대 경로를 다루지 않습니다 ...
쓸모없는

맞아요. $ same_dir 예제는이를 무시하는 것처럼 보였습니다.
Alan Shutko

+1 마음에 들어요. 아주 쉽게 기억 할 그 날의 열쇠입니다합니다
마이클 듀런트

그것은 당신이 요구 한 것을하지 않기 때문에 흥미 롭습니다. 아마도 당신의 질문은 당신이 의도 한 것이 아닐까요?
쓸모없는

쓸데없이, 나는 cp / mv 파일에 관한 내용을 명확히하고 다른 디렉토리에 있더라도 동일한 디렉토리에 보관하기 위해 제목을 업데이트했습니다. BTW 사용자 이름은 귀여운이지만 :) 그들을 사용할 때 의견이 바보 보이게
마이클 듀런트


5

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

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

그것을 분해하려면 :

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

:$고려중인 문자열 의 마지막 단어를 선택하도록 요청합니다 ( 이 경우에는 단어 n를 선택하기 위해 숫자 로 대체 ). 지금까지 입력 한 줄의 마지막 단어는 이전 단어입니다.n!#

:gs^xx^yy결과 단어에 대해 전역 ( g) 텍스트 대체 ( s)를 수행하여 'xx'를 'yy'로 바꿉니다. 패턴에서 사용할 수 ^있는 s명령 의 구분자 일뿐 /입니다.

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

마지막으로, 히스토리 조작과 마찬가지로 적절한 쉘 옵션을 설정하는 것이 좋습니다 (예 : in ~/.bashrc). 이 경우

shopt -s histverify

return 키를 누르면 편집 한 줄이 표시되므로 계속 편집하고 오류를 확인할 수 있습니다.

확실하지 않은 구조를 사용하는 이유는 확실하지 않지만이 경우에는 작동합니다.


a) 라인 노이즈가 너무 많음 (가벼운 괄호 확장과 비교) b) OP의 문제를 해결하지 않습니다 . 원래 경로 접두사 c/x.xevenmore/y.y유지하는 것으로 바꾸려고 합니다.
Joseph R.

두 번째 의견은 내 부분에 대한 간단한 생략으로 수정해야 할 간단한 편집이 필요했습니다. 이 답변이 어떻게 공감대를 받아야하는지 알 수 없습니다. 편집 (기술)을 사용하면 문제를 해결하고 경로의 일부를 바꿀 수 있기 때문에 더 일반적입니다 (나는 종종 비슷한 것을 사용했습니다 $PWD). 아마도 가장 우아하지는 않지만 쉘에 텍스트 대체와 단어 지정자가 있다는 사실을 지적합니다. 일부 사용자는 여전히 연구에 유용 할 수 있습니다.
Wojtek

확인. 나는 정정되었다.
Joseph R.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.