Cygwin을 사용하여 C : \의 디렉토리로 이동하는 방법은 무엇입니까?


371

PyQt4 를 설치하려고 하므로 엉망이 될 수 있습니다. 설치 안내서는 Sip 을 설치해야한다고 말했습니다 . Sip설치 하는 마지막 단계 는 make install명령 을 사용하는 것 입니다. Windows에는 그 기능이 없으므로 찾아서 Cygwin을 설치한다고 말한 모든 것을 말했습니다. 그래서 나는했다. 하지만 ... 모금에 있습니다 C:\Python31\sip.

Cygwin 명령에서 이것을 실행할 수 있습니까? 그렇다면 어떻게해야합니까?

아니면 일반 Windows 명령 프롬프트에서 실행할 수 있습니까? 그렇다면 어떻게해야합니까?

답변:



196

cygwin으로 많은 것을 도와주는 것을 추가하겠습니다. 새로운 시스템을 설치할 때마다 항상 이렇게합니다

ln -s /cygdrive/c /c

이것은 (홈 디렉토리에) 라는 새로운 파일과 의 심볼릭 링크 를 만듭니다./cygdrive/c/c

그런 다음 쉘 에서이 작업을 수행 할 수 있습니다

cd /c/Foo
cd /c/

매우 편리합니다.


1
이렇게하면 파일 / 디렉토리의 이름 c을 정상적으로 참조 할 수 없게됩니다.
Raj

1
최근 MSYS2를 설치하고이 함께 기본 동작이었다 /cygdrive...에 - 사실은 작동하지 않습니다
joeeey


49

이미 답변을 수락했지만 방금 Cygwin에서도 다음이 작동한다고 언급했습니다.

cd "C:\Foo"

나는 그 cd /cygdrive/c방법이 더 낫다고 생각 하지만 때로는 당신도 그렇게 할 수 있다는 것을 아는 것이 유용합니다.



6

이 작업을 자주 수행하려면 다음과 같이 .bashrc 파일에 별칭을 추가하십시오.

alias cdc='cd /cygdrive/c'
alias cdp='cd /cygdrive/p'

그런 다음 명령 행에 입력하면됩니다.

cdc

3

.bashrc에 변수를 정의하십시오.

export C=/cygdrive/c

그럼 당신은 사용할 수 있습니다

cd $C/

탭이 자동 완성됩니다 (끝에 /를 포함하십시오)


2

관련 메모에서 다음을 좋아할 수도 있습니다.

shopt -s autocd

이것은 단지 디렉토리에 입력하여 디렉토리를 CD 수 있습니다

[user@host ~]$ /cygdrive/d
cd /cygdrive/d
[user@host /cygdrive/d]$ 

지속적으로 만들려면 ~/.bashrc



1

HOME 폴더에 "overrideBashCdForWindowsPaths"라는 파일을 작성하십시오. 다음 줄을 해당 파일에 붙여 넣고 저장하십시오.

#!/bin/bash

function cd() {
    CD_PATH="$(history | tail -1 | sed -e "s,.*${FUNCNAME[0]}\s*,,g")"

    if [ -z "${CD_PATH}" -o "${CD_PATH}" = "~" ]; then
        CD_PATH="${HOME}"
    fi

    builtin cd "$(cygpath "$CD_PATH")"
}

다음으로 HOME 폴더에있는 동안 터미널에 다음 명령을 입력하십시오.

echo ". overrideBashCdForWindowsPaths" >> .bashrc

터미널을 닫고 새 터미널을 엽니 다. 이제 간단히 입력하여 해당 Windows 폴더로 쉽게 변경할 수 있습니다

cd C:\Python31\sip

스크립트는 마지막 명령을 읽고 경로를 추출하여 Cygwin의 경로 변환 도구로 전달합니다. 함수 "cd"를 명명함으로써 우리는 일종의 '재정의'Bash의 내장 된 "cd"를 마지막 행에서 실제 호출을 위임합니다.


감사합니다 @ KoenigGunther, 작동합니다! 그러나 디렉토리를 변경하면 조금 느립니다. 따옴표를 사용하는 것처럼 더 빠르게 만드는 방법이 있습니까? 예 :cd "C:\Python31\sip"
user11392987

1

내가 좋아하는 것은 : cd C:

다음과 같이 리눅스를 느끼게하려면 :

ln -s /cygdrive/c/folder ~/folder

이것을 다음과 같이 사용하십시오 : ~/folder/..


0

여기서 언급 할 가치가있는 것은 Cygwin이 cygpath여전히 Cygwin에서 실행되는 Bash 스크립트에서 간격이 지정된 Windows 경로를 올바르게 처리하지 못한다는 것입니다. 비결은 CygwinBash 스크립트에서 따옴표를 해석 하는 방법을 이해하는 것 입니다.

다음은 작동 하지 않습니다 .

#!/bin/bash
TBDIR="/cygdrive/c/Program\ Files\ \(x86\)/MyDir/"

if [ -d "${TBDIR}" ]; then 
    echo "Found MyDir directory at: ${TBDIR}"
    cd "$TBDIR"
else 
    echo "MyDir program directory not found!"
    echo "Wrong DIR path: ${TBDIR}"
    exit 1
fi

그러나 이것은 효과가 있습니다.

#!/bin/bash
# Cygwin-ism: No quotes!
TBDIR=/cygdrive/c/Program\ Files\ \(x86\)/MyDir/

if [ -d "${TBDIR}" ]; then 
...

내가 아는 한, 현재을 사용하는 알려진 해결 방법이 없으므로 cygpathbash 스크립팅 컨텍스트에서 공백을 올바르게 처리 할 수 ​​있지만 스크립트에서 따옴표를 사용할 수 있습니다.


0

$cd C:\

> (이 줄이 나타나면 Enter 키를 누르십시오)

이제 C 드라이브에 있습니다.


>줄 끝에 백 슬래시는 줄 바꿈을 탈출하기 때문입니다 ...
버그 서재 거트 반
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.