背景
ghq
とpeco
を組み合わせて使うようになって、Windowsエクスプローラーのマウス操作が億劫になりました。とは言え、まだまだシェル力が足りないのでエクスプローラーを併用するのですが、ディレクトリのパス形式がLinuxとWindowsで違うために目的のディレクトリをすぐ開けなくてちょっと困っていました。(´・ω・`)
使用環境
- Windows 10
- bash(Git for Windows 同梱のもの)
やったこと
そこで、以下のようなことをやってみました。
-
bash
のカレントディレクトリパスをWindows形式に変換 - Windows標準のクリップボードにコピーするツール
clip
に上記パス情報を渡す
あとは、エクスプローラーや好みのファイラーにパスを貼り付けて移動できます。
bash
のカレントディレクトリパスをWindows形式に変換
cygpathでやってみた
# 日本語を含むパスで文字化けします
$ cygpath -w `pwd` | tr -d '\n' | clip
はじめは、上記のようにcygpath
ツール(Git for Windowsに同梱)を使った方法を試したのですが、残念ながらclip
ツールがShift-JIS形式の文字列しか扱えないため日本語を含むパスで文字化けしてしまいます。それじゃあパイプのどこかでiconv
使って文字コードをUTF-8
からShift-JIS
に変換してみよう!と思ってやってみたのですが以下のようになりました。
-
cygpath
で変換したWindows形式のパスに対してiconv
で変換を試みたが、「:」や「\」が含まれていて変換できない -
iconv
で変換した文字列をcygpath
に渡してみたが、なんだか化けた文字列が返ってきた
素直にsed
に入門した
はい、素直に正規表現使って変換することにしました。本当にすみませんでした(´・ω・`)
pwd | tr -d '\n' | iconv -f UTF-8 -t SJIS | sed -e 's/\//\\/g' -e 's/\(^\\.\)/\1:/' -e 's/\(^\\\)//' | clip
きっと半年後ぐらいに自分で見直して、「いったいこれは何をやっているんだ・・・!( ・`ω・´)」ってなると思うので簡単に処理をメモします。(ここは本当に自分用です。低レベルです。すみません、すみません。。)
-
pwd
でカレントディレクトリ(Linux形式)を取得 -
tr
で末尾の改行コード除去 -
iconv
でUTF-8
からShift-JIS
に文字コード変換(後述のclip
ツールに渡すための準備) -
sed
で/
を\
に置換したり、冒頭の\(任意の文字)
の後に:
入れたり、冒頭の\(任意の文字)
の\
消したり -
clip
ツールに渡してクリップボードへ
sed
さんは本当に素晴らしいですね。
参考
とても助けていただいた記事の皆様です。ありがとうございますm(_ _)m