「Windowsでエクスプローラーからフォルダを各種ターミナルで開く」の版間の差分

Notion-MW
Notion-MW
 
(同じ利用者による、間の2版が非表示)
89行目: 89行目:
<li>[https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables Environment Variables &#45; Win32 apps | Microsoft Learn]では「<code>&#61;</code>は環境変数に使えない」と書かれていて、ダイアログからでも設定はできないが、レジストリだと無理やり設定できる。
<li>[https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables Environment Variables &#45; Win32 apps | Microsoft Learn]では「<code>&#61;</code>は環境変数に使えない」と書かれていて、ダイアログからでも設定はできないが、レジストリだと無理やり設定できる。
<ul>
<ul>
<li>ユーザー環境変数に設定する分にはとりあえず問題なさそうだが、システム環境変数にレジストリから<code>&#61;</code>(と、<code>&#61;</code>を名前に含むいくつかの変数。どれが原因かは正確にはわからない)を無理やり追加したら<strong>0xc000021のブルースクリーンでWindowsが起動しなくなった</strong>(該当の変数を全て削除したら治った)のでこれはやってはいけない。</li></ul>
<li>ユーザー環境変数に設定する分にはとりあえず問題なさそうだが、システム環境変数にレジストリから<code>&#61;</code>(と、<code>&#61;</code>を名前に含むいくつかの変数。どれが原因かは正確にはわからない)を無理やり追加したら<strong>0xc000021のブルースクリーンでWindowsが起動しなくなった</strong>(Linuxからchntpwで該当の変数を全て削除したら治った)のでこれはやってはいけない。</li></ul>
</li>
</li>
<li>ちなみに、<code>&#61;</code>や<code>%</code>はUnix側では特殊文字ではないので、printfとの適用順はあまり気にする必要はない。</li></ul>
<li>ちなみに、<code>&#61;</code>や<code>%</code>はUnix側では特殊文字ではないので、printfとの適用順はあまり気にする必要はない。</li></ul>
199行目: 199行目:
<p>カレントディレクトリをコンソールに出力する。(ちなみにpwdの由来はprint working directoryなのでそれに倣った)</p></li></ul>
<p>カレントディレクトリをコンソールに出力する。(ちなみにpwdの由来はprint working directoryなのでそれに倣った)</p></li></ul>


<span id="注意&#58;-当初は後述のnoworkingdirectoryを知らなかったので1の方法に頼っていたが実際には2の方法のほうが簡明なのでそちらを使うことを勧める1は残しておくが読む必要はあまりない"></span>
<span id="注意&#58;-当初は後述のnoworkingdirectoryを知らなかったので1の方法に頼っていたが実際には2の方法のほうが簡明なのでそちらを使うことを勧める1と11は残しておくが読む必要はあまりない"></span>
== 注意&#58; 当初は後述のNoWorkingDirectoryを知らなかったので1.の方法に頼っていたが、実際には2.の方法のほうが簡明なので、そちらを使うことを勧める。1.は残しておくが、読む必要はあまりない。 ==
== 注意&#58; 当初は後述のNoWorkingDirectoryを知らなかったので1.の方法に頼っていたが、実際には2.の方法のほうが簡明なので、そちらを使うことを勧める。1.(と1.1.)は残しておくが、読む必要はあまりない。 ==


   
{{UnderConstruction|Windowsでエクスプローラーからフォルダを各種ターミナルで開く}}


<span id="1標準入力から受け取る場合"></span>
<span id="1標準入力から受け取る場合"></span>
409行目: 409行目:
<p><code>sh &#45;c &quot;IFS&#61;&#59;echo $&#42;&quot; &#45;&#45; &quot;%V</code></p>
<p><code>sh &#45;c &quot;IFS&#61;&#59;echo $&#42;&quot; &#45;&#45; &quot;%V</code></p>
<ul>
<ul>
<li>最後が<code>&quot;%V</code>と閉じられていないのはミスではなく、<code>&quot;%V&quot;</code>としてしまうと<code>C&#58;\</code>のときに<code>C&#58;&quot;</code>が渡されてしまうのでそれを避けるためである(これはかなりトリッキーなのでもう少し真面目にやってもいいとは思う)。</li>
<li>最後が<code>&quot;%V</code>と閉じられていないのはミスではなく、<code>&quot;%V&quot;</code>としてしまうと<code>C&#58;\</code>のときに<code>C&#58;&quot;</code>が渡されてしまうのでそれを避けるためである(これはかなりトリッキーなのでもう少し真面目にやってもいいかなとは思う)。</li>
<li>UNCパスの最初の<code>\\</code>が<code>\</code>に変わってしまう(手元では、Cygwinの場合は<code>\\?\</code>のみで発生している?)という問題があり、適宜置換する必要がある。</li></ul>
<li>UNCパスの最初の<code>\\</code>が<code>\</code>に変わってしまう(手元では、Cygwinの場合は<code>\\?\</code>のみで発生している?)という問題があり、適宜置換する必要がある。</li></ul>
</li></ul>
</li></ul>
468行目: 468行目:
<p><code>&quot;C&#58;\Program Files\Git\git&#45;bash.exe&quot; &#45;c &quot;IFS&#61;&#59;cd $(echo $&#42;|/bin/sed &#39;s/\\\\/\\\\\\\\/&#39;|/bin/cygpath &#45;f &#45;)&#59;exec bash&quot; &#45;&#45; &quot;%V</code></p>
<p><code>&quot;C&#58;\Program Files\Git\git&#45;bash.exe&quot; &#45;c &quot;IFS&#61;&#59;cd $(echo $&#42;|/bin/sed &#39;s/\\\\/\\\\\\\\/&#39;|/bin/cygpath &#45;f &#45;)&#59;exec bash&quot; &#45;&#45; &quot;%V</code></p>
<ul>
<ul>
<li><p>Git Bashのインストーラにより設定される「Git Bash Here」メニューでは以下のようになっている。</p>
<li><p>ちなみに、Git Bashのインストーラにより設定される「Git Bash Here」メニューでは以下のようになっている。</p>
<p><code>&quot;C&#58;\Program Files\Git\git&#45;bash.exe&quot; &quot;&#45;&#45;cd&#61;%v.&quot;</code></p>
<p><code>&quot;C&#58;\Program Files\Git\git&#45;bash.exe&quot; &quot;&#45;&#45;cd&#61;%v.&quot;</code></p>
<p>これは、特殊文字にはすべて対応しているが、(NoWorkingDirectoryをつけたとしても)<code>\\?\</code>で始まるパスではうまくいかない。最後の「.」はよくわからないがこれを付けておくと<code>&#45;&#45;cd</code>がうまくやってくれるっぽい。</p></li></ul>
<p>これは、特殊文字にはすべて対応しているが、(NoWorkingDirectoryをつけたとしても)<code>\\?\</code>で始まるパスではうまくいかない。最後の「.」はよくわからないがこれを付けておくと<code>&#45;&#45;cd</code>がうまくやってくれるっぽい。</p></li></ul>