terminal file manager windowsの解説をMacで読む|日本語環境で先に詰まる点

terminal file manager windows という語で調べると、日本語の記事も英語の記事も、Windowsが足元にある前提で書かれている。Macで同じ道具を入れようとして詰まる場所は、記事が想定している場所とはずれている。コマンドの綴りが違うことは調べればすぐ分かるが、そこを直しても、日本語のフォルダ名とファイル名のところで次の壁が来る。この記事では、Windows向けの手順をMacに持ち込んだときに実際に止まる点を、手元で確かめた挙動をもとに順に並べる。

Windowsの解説が前提にしている二画面ファイラーの文化

この語で出てくるものは、性質の違う3種類が混ざっている。1つ目はターミナルそのもの、つまりシェルを表示する画面。2つ目はターミナルの中に文字で一覧を描く道具。3つ目は左右2枚のペインを持つ独立したアプリで、日本語圏では二画面ファイラーと呼ばれてきた種類である。日本語の記事でこの語に反応が多いのは3つ目の文化が厚いからで、コピーはF5、移動はF6、削除はF8という操作を体が覚えている人が一定数いる。

問題は、3つ目に属するWindows用のアプリにはmacOS版が存在しないことが多い点にある。「この道具が便利」という結論だけを読んでも、そもそも入れられない。移せるのは操作の考え方までで、アプリそのものではない。

macOS側で同じ形を探すと、二画面のGUIは有料の製品が中心になる。ForkLift 4 は19.95米ドル、Path Finder は30日の試用期間を設けている。転送を主目的にした Transmit 5 は45米ドルで、こちらは二画面の見た目こそ似ているが役割が違う。無償で済ませたい場合は2つ目の種類、つまりターミナルの中で動く一覧に寄せることになり、キーの当て方は自分で決めることになる。

コマンドの対応表より先に、フォルダの名前で止まる

綴りの違いは表にすれば終わる話である。一覧は dir に対して ls、コピーは copy に対して cp、名前の変更は ren に対して mv、削除は del に対して rm。区切り記号は逆向きで、Macでは \ が区切りではなく打ち消しの記号として働く。ホームは %USERPROFILE% ではなく ~ で表す。ここまでを直せば動くと思って進むと、次の1行で止まる。

Finderに「書類」「ピクチャ」「デスクトップ」と表示されているフォルダは、その名前で存在していない。実体は Documents、Pictures、Desktop という英字のままで、Finderだけが日本語に置き換えて見せている。仕組みは単純で、そのフォルダの中に .localized という空のファイルが置かれていると、Finderが表示名を各言語に差し替える。手元のMacで確認すると、/Applications にも /System/Applications にもユーザーのホーム直下のフォルダにも、この目印が入っている。

そのため、ターミナルの中で動く一覧を開くと、画面に並ぶのは英字の名前になる。「フォルダが消えた」「別の場所を見ている」と感じるのはここで、実際にはどちらも同じ場所を指している。cd 書類 と打っても通らないのは、そういう名前のフォルダが無いからで、権限でも文字コードでもない。迷ったときは英字の頭文字を1文字打ってタブキーを押せば、実体の名前が補完される。これはWindowsの解説には一切書かれていない、日本語環境だけの段差である。

濁点が分かれて、同じ名前が2通りになる

もう1つ、Windows向けの手順が想定していない挙動がある。macOSはファイル名の濁点や半濁点を、文字そのものと結合記号に分けて扱う場面がある。「が」を1文字として持つ書き方と、「か」と濁点の2つに分けて持つ書き方の両方が存在するということである。

手元で試すと、結合した書き方で作ったファイルに対して、分解した書き方のパスでアクセスできる。同じ名前で2つのファイルを作ろうとすると、既に存在するとして拒否される。つまりファイルシステムの側は2通りを同じ名前と見なしている。ところが、そのファイルをZIPにしてLinuxのサーバーへ送ると、受け取った側は別の名前として扱う。バージョン管理でも同じことが起きる。

This option is only used by Mac OS implementation of Git. When core.precomposeUnicode=true, Git reverts the unicode decomposition of filenames done by Mac OS. This is useful when sharing a repository between Mac OS and Linux or Windows. 出典: git-scm.com

Windowsとの共有を想定した設定がわざわざ用意されていること自体が、この差が実務で問題になってきた証拠になる。ターミナルの中で動く一覧の絞り込みに日本語を打ち込んだのに何も出てこない、という現象の多くはこれが原因である。打った文字は結合した書き方、並んでいる名前は分解した書き方で、文字列としては一致しない。表示は同じに見えるので、原因にたどり着くまでに時間がかかる。

対処は2つに分かれる。手元で完結する作業なら、絞り込みに日本語を使わず英字と数字の部分で当てるのが早い。他の環境とやり取りする作業なら、名前の付け方の側を変えて、日付と英数字で識別できるようにしておくほうが安全である。

この差は、検索の索引にも影響する。画面の検索窓で見つかるのに、シェルから同じ語で探すと出てこない、あるいはその逆が起きる。索引を作る側と文字列を比べる側で、揃え方の扱いが違うためである。どちらかが壊れているわけではないので、片方で見つからなかったときにもう片方を試すという順番を決めておくだけで、原因を探す時間はかなり減らせる。

Windowsで作られたZIPを、ターミナル側で開くとき

Windowsの環境で作られた書庫を受け取ったときの文字化けも、この語で調べる人がぶつかりやすい。Windowsの記事には展開時に文字コードを指定する手順が載っていることがあるが、macOSに最初から入っている unzip の使用法一覧には、文字コードを指定する選択肢が並んでいない。存在しない選択肢を付けて実行すると、使い方の説明だけが表示されて終わる。

現実的な進め方は3つある。1つは展開だけをGUI側に任せること。もう1つは文字コードを扱える展開ツールを別に入れること。3つ目は、そもそも送る側の名前を英数字に寄せてもらうことで、繰り返し受け取る相手がいるならこれが一番効く。日付と案件名を英数字で先頭に置く形にしておけば、展開する道具が何であっても結果が変わらない。

なお、名前の長さの上限は255文字である。バイト数ではなく文字数で、日本語で255文字までは作れて、256文字になると作れない。Windowsの解説ではパス全体の長さをどう回避するかという話がよく出てくるが、Macで先に当たるのは名前1つの上限のほうになる。ほかに、先頭がピリオドの名前は不可視の扱いになり、コロンはFinderの名称変更では受け付けられない。

キーの操作が2か所で衝突する

二画面ファイラーの流儀をそのまま持ち込むと、キーの割り当てで2回つまずく。

1つ目はファンクションキーである。F5でコピー、F6で移動、F8で削除という並びは、Macでは初期状態で輝度やMission Controlや音量の操作になっている。そのままでは操作のたびにfnキーを押し足すことになり、置き換えるはずだった画面より遅くなる。キーボードの設定でF1からF12を標準のファンクションキーとして扱うように変えておけば解消する。

2つ目は日本語入力である。ターミナルの中で動く一覧は1文字のキーで操作するものが多く、日本語入力がオンのままだと、その1文字が変換の入力として吸われてしまう。「反応しない」と感じる場面の大半はこれで、日本語配列のキーボードなら英数キーを押して確実に切ってから操作すると安定する。名前の絞り込みだけは日本語入力が要るので、入れる直前だけ切り替える、という手順を決めておくとよい。

表示のずれも日本語環境だけの問題として残る。全角の文字は半角2つ分の幅を占める前提で描画されるため、罫線や桁揃えを持つ一覧では、記号の種類によって1文字分ずれることがある。ターミナル側に文字幅の扱いを決める設定があるので、崩れが気になる場合はアプリではなくターミナルの設定を先に見るほうが早い。

コピーすると更新日時が今の時刻になる

日付で並べて管理している人にとって見落としやすいのが、コピーで日時が書き換わることである。手元で確認すると、cp でコピーした複製は更新日時が実行した時刻になり、cp -p を付けた場合と mv で移動した場合は元の日時が保たれる。

Windowsのファイラーには属性を保ったまま複製する設定が用意されていることがあり、その感覚のままターミナル側で作業を始めると、日付順の並びが静かに崩れる。整理のために階層をまとめて作り直した翌日、すべてのファイルが同じ日付で並んでいた、という壊れ方をする。バックアップを取るつもりの操作で、いつ作ったものかという情報のほうを失うことになる。

日時を残したいのか、それとも今回の作業日を記録として残したいのかは、作業ごとに違う。だからこそ、どちらの動きをする道具なのかを最初に一度だけ確かめておく価値がある。確かめ方は簡単で、テスト用のファイルを1つ複製して、日時の列を見るだけで済む。

同じ確認は、ターミナルの中で動く一覧にも当てはまる。コピーの操作が内部で何を呼んでいるかは道具ごとに違い、日時を保つ側に寄せている実装もあれば、素直に複製するだけの実装もある。Windows向けの解説にはこの差の説明が無いことが多く、あっても前提にしている道具が違う。導入した直後に、作業用のフォルダではなく捨ててよいフォルダで一度試しておくと、後から気づいて全部やり直す事態を避けられる。

現在地をどちらの窓が持つかで決める

ここまでの詰まり方を並べると、共通しているのは、画面の側とシェルの側が同じ場所を別の名前で見ているという点になる。表示名と実体、結合した文字と分解した文字、複製前の日時と複製後の日時。どれも、2つの窓を行き来しているあいだに食い違いが生まれている。

そこで決めるべきは、どちらの窓が現在地を持つかである。シェルに持たせるなら、ターミナルの中に一覧を置く形になる。SSH越しでもそのまま使え、コマンドは常に今いる場所で走る。代わりに、プレビューやタグやドラッグでの受け渡しは諦めることになる。

画面の側に持たせるなら、フォルダの一覧の中にシェルを置く形になる。目で選ぶ工程を残したまま、選んだ場所でそのままコマンドを打てるので、パスを写して貼るという手順が消える。フォルダとターミナルとAIが同じ窓にある状態にすると、表示名と実体の食い違いも、同じ画面の中で確かめられる。この並べ方でできることはできることにまとめてあり、二画面のファイラーとの違いは他のファイル管理との比較で整理している。

日本語の表示や入力の扱いは、道具ごとに対応の幅が違う。どの言語で使えるかは対応言語に一覧がある。時間のかかる処理が確認待ちで止まったときに、机を離れたまま返せるかどうかも実務では効いてくるので、その仕組みはiPhone・iPadから続きをで説明している。費用の条件は料金に、導入前によく出る疑問はよくある質問にまとめてある。

よくある質問

Windows用の二画面ファイラーをMacでも使える?

多くの製品にはmacOS版が用意されていないため、そのままでは使えません。移せるのは操作の考え方までです。macOSで同じ形を選ぶなら、二画面のGUI製品を入れるか、ターミナルの中で一覧を描く道具を使ってキーの割り当てを自分で決めるかの二択になります。

ターミナルで日本語のフォルダに移動できないのはなぜ?

Finderが表示している「書類」「ピクチャ」などは表示名で、実体の名前は Documents や Pictures のままだからです。フォルダに置かれた .localized という目印を見て、Finderが日本語に差し替えて表示しています。英字の頭文字を打ってタブキーで補完すれば、実体の名前が確認できます。

日本語のファイル名で絞り込んでも1件も出てこないのはなぜ?

濁点や半濁点が、1文字として持たれている場合と、文字と記号に分けて持たれている場合があるためです。表示は同じでも文字列としては一致しません。手元で完結する作業なら英数字の部分で絞り込み、他の環境とやり取りするなら名前を英数字に寄せておくと安定します。

Windowsの解説にあるコマンドは、どこまでそのまま使える?

Linux向けに書かれた部分はほぼそのまま通ります。コマンドプロンプトやPowerShellを前提にした部分は通りません。設定ファイルを丸ごと持ち込むと、道具自体は起動しても、シェルのコマンドを呼び出している箇所だけが動かないという分かりにくい状態になります。

記事一覧へ戻る