![현재 작업 디렉토리의 이름을 주어진 이름으로 바꾸는 쉘 스크립트](https://linux55.com/image/9862/%ED%98%84%EC%9E%AC%20%EC%9E%91%EC%97%85%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%A3%BC%EC%96%B4%EC%A7%84%20%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
현재 디렉터리가 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
나는 썼다이것아주 아주 오래전에. 형편없는 작은 스크립트이지만 이름을 바꿔줄 것입니다.