bash-어떤 명령에서 cd로 결과를 파이프하는 방법
which
명령 의 결과를 어떻게 파이프 할 수 cd
있습니까?
이것이 내가하려는 것입니다.
which oracle | cd
cd < which oracle
그러나 그들 중 어느 것도 작동하지 않습니다.
이것을 달성하는 방법이 있습니까 (물론 복사 / 붙여 넣기보다는)?
편집 : 다시 생각하면 대상 파일이 폴더 / 디렉토리가 아니기 때문에이 명령이 실패합니다 .
그래서 나는 지금 후행 "/ oracle"부분 (sed 또는 awk, 심지어 Perl)을 제거하는 더 나은 방법을 생각하고 있습니다. :)
편집 : 좋아, 결국 내가 가진 것입니다.
cd `which oracle | sed 's/\/oracle//g'`
명령이 표준 입력에서 매개 변수를 예상하는 경우 파이프를 사용합니다. (이에 대한 자세한 내용 ).
함께 cd
명령 있다는 사실이 아니다. 디렉토리는 명령 인수입니다. 이 경우 명령 대체를 사용할 수 있습니다. 백틱을 사용하거나 $(...)
명령을 평가하려면 변수에 저장합니다.
path=`which oracle`
echo $path # just for debug
cd $path
훨씬 더 간단한 방법으로 수행 할 수 있습니다.
cd `which oracle`
또는 경로에 특수 문자가있는 경우
cd "`which oracle`"
또는
cd $(which oracle)
백틱 표기법과 동일하지만 권장됩니다 (백틱은 아포스트로피와 혼동 될 수 있음)
..하지만 원하는 것 같습니다.
cd $(dirname $(which oracle))
(네 스팅을 쉽게 사용할 수 있음을 보여줍니다)
$(...)
(백틱도 포함) 큰 따옴표로 묶인 문자열에서도 작동하므로 결과에 공백이 포함될 수 있습니다.
cd "$(dirname "$(which oracle)")"
(두 출력 모두 큰 따옴표 세트가 필요합니다.)
디렉토리를 얻으려면 dirname을 사용하십시오.
cd $(which oracle | xargs dirname)
편집 : 공백이 포함 된 경로에주의하십시오. 아래 @anishpatel 주석을 참조하십시오.
cd `which oracle`
백틱 (일반적으로 미국 키보드에서 1의 왼쪽에있는 키)입니다.
좋아, 여기에 올바른 인용을 사용하는 솔루션이 있습니다.
cd "$(dirname "$(which oracle)")"
백틱은 피하고 가독성이 떨어지며 항상 프로세스 대체를 인용합니다.
파이프가 필요 없으며 Bash 매개 변수 확장을 사용하여 원하는 것을 할 수 있습니다!
추가 팁 : Bash를 사용하는 경우 외부 "which"명령 대신 "type -P"를 사용하십시오.
# test
touch /ls
chmod +x /ls
cmd='ls'
PATH=/:$PATH
if cmdpath="$(type -P "$cmd")" && cmdpath="${cmdpath%/*}" ; then
cd "${cmdpath:-/}" || { echo "Could not cd to: ${cmdpath:-/}"; exit 1; }
else
echo "No such program in PATH search directories: ${cmd}"
exit 1
fi
편집 한 질문에 대한 응답으로 다음을 사용하여 명령 이름을 제거 할 수 있습니다 dirname
.
cd $(dirname `which oracle`)
위의 좋은 대답 외에도 cd 는 명령 인 ls 와 같은 새 프로세스 이외의 동일한 프로세스에서 실행되는 쉘 내장형이라는 것 입니다.
참고URL : https://stackoverflow.com/questions/3437514/bash-how-to-pipe-result-from-the-which-command-to-cd
'programing tip' 카테고리의 다른 글
쌓인 반투명 상자의 색상은 주문에 따라 다릅니 까? (0) | 2020.10.19 |
---|---|
레이크는 정확히 무엇입니까? (0) | 2020.10.19 |
ASP.NET MVC 용 reCaptcha를 구현하는 방법은 무엇입니까? (0) | 2020.10.19 |
C # 속성 : 개인 필드없이 사용자 지정 집합 속성을 사용하는 방법은 무엇입니까? (0) | 2020.10.19 |
C ++ 11에서 정수 스레드 ID를 얻는 방법 (0) | 2020.10.19 |