Bash를 사용하여 현재 경로의 특정 부분을 다른 것으로 "대체"하는 가장 쉬운 방법은 무엇입니까? 현재 경로가 이 형식인 경우 가장 짧은 명령을 사용하여 해당 디렉터리로 /xxxxx/foo/yyyyy
어떻게 이동할 수 있습니까 ?/xxxxx/bar/baz/yyyyy
답변1
필요한 경우 셸 기능을 활용하여 이 기능을 제공할 수 있습니다.
change() { path=`pwd`; cd `echo $path | sed "s/$1/$2/"`; }
/foo/bar/에서 호출됩니다:
change "bar" "gazi"
이 예에서는 ""가 필요하지 않지만 이름에 공백 문자가 있는 디렉터리와 같은 특수 문자열에는 필요합니다.
답변2
그렇게 짧지는 않지만 효과적입니다.cd ${PWD/foo/bar\/baz}
답변3
cd ../../bar/baz/yyyyy
cd $(echo $PWD | sed 's|foo|bar/baz|')
두 번째는 "더 멋져" 보이지만 첫 번째는 더 짧습니다.
답변4
/xxxxx/foo/yyyyy
with로 변경했고 cd /xxxxx/foo/yyyyy
이 명령 바로 다음에 다른 디렉토리로 변경하고 싶다고 가정하면 를 사용할 수 있습니다 !!:s/foo/bar\/baz/
. 즉, 마지막 명령을 반복하고 foo
로 바꾸십시오 bar/baz
.
cd
이는 두 s 사이에서 일부 명령을 실행할 때 사용할 수 있습니다 !cd:s/foo/bar\/baz/
. 즉, 이전 cd
명령을 반복하고 교체합니다.
더 많은 예제와 기록 명령을 보려면 다음을 확인하세요.배쉬 참조 매뉴얼.