CygwinでC:\のディレクトリに移動する方法は?


371

PyQt4をインストールしようとしています。インストールガイドには、Sipをインストールする必要があると記載されていました。Sipインストールする最後の手順は、make installコマンドを使用することです。Windowsにはそれがないので、調べてみたところ、Cygwinをインストールすると表示されていました。だから私はしました。しかし... SIPはにあり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

これにより、dirと入力するだけで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:

Linuxのような感覚を得るには、次のようにします。

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

そしてこれを次のように使います: ~/folder/..


0

ここで言及する価値があるのは、Cygwinがcygpath、特にCygwinで実行されているBashスクリプトで、間隔を置いたWindowsパスをまだ適切に処理しないことです。秘訣はCygwin、Bashスクリプトの引用をどのように解釈するかを理解することです。

以下は機能しませ

#!/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 
...

私の知る限りcygpath、bashスクリプトのコンテキストでスペースを適切に処理できるを使用した既知の回避策は現在ありませんが、スクリプトで引用符を使用できます。


0

$cd C:\

> (この行が表示されたらEnterキーを押します)

これでCドライブに入りました。


>行末のバックスラッシュは、改行...脱出しているためである
ゲルトファンデンベルグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.