현재 디렉터리가 DIR/
이고 새 이름이 project1/
매개 변수로 전달되면 현재 디렉터리 이름을 로 바꿔야 합니다 project1
.
답변1
현재 작업 디렉토리의 이름을 바꾸면 대부분의 쉘은 변경 사항( $PWD
예: 변수 또는 프롬프트에서)을 알 수 없으므로 쉘에 변경 사항을 알릴 수 있도록 스크립트보다는 함수를 사용하는 것이 좋습니다. 완료되면 예를 들면 다음과 같습니다.
rename_cwd() {
cd . || return
new_dir=${PWD%/*}/$1
mv -- "$PWD" "$new_dir" &&
cd -- "$new_dir"
}
/
현재 디렉터리가 존재하지 않고 대상 디렉터리도 아직 존재하지 않는다고 가정합니다 (이 상황을 개선하려면 -T
GNU 옵션을 참조하세요 mv
).
어떤 경우에는 $PWD
이것이 현실과 동기화되지 않을 수 있으므로 위의 코드는 결국 현재 작업 디렉터리를 변경하게 될 수 있습니다. 이는 cd .
일부 쉘에서 이런 일이 발생할 가능성을 줄이기 위한 것입니다.
답변2
나는 다음 코드로 그것을 얻었다
mv -T "$PWD" "../$1"
매개변수는 다음과 같이 전달됩니다.
./rename_pwd.sh dir1
그 다음에
cd ..
ls
보여주다
dir1
답변3
나는 썼다이것아주 아주 오래전에. 형편없는 작은 스크립트이지만 이름을 바꿔줄 것입니다.