NBM2

natural born minority

LinuxデスクトップでディレクトリをCLIだけで英語名に変更する方法

Linuxには「デスクトップ運用する場合のユーザのホームディレクトリに最初からあるディレクトリと意味」が決まっています。

(freedesktop.org で提唱されている概念っぽい。サイトでは「”well known” user directories」と解説している。ツール等では「xdg-user-dirs」と表現されていることが多い。)

それは「概念的なディレクトリ」であり、初回ディレクトリ時に「言語ロケールごとに実ディレクトリ名がローカライズされ」ます。

こんな感じのです

これは「意味のある特別扱い」のディレクトリで、アイコンも個別のアイコンとなり、例えばファイル選択ダイアログに意味に応じて表示されたり、nautilsの左ペイン(お気に入り)に初めから入っているなど、扱いが違います。

ですので、おいそれとリネーム/移動などは出来ず「設定と一緒に変更する」必要があります。

メカニズム的には、~/.config/user-dirs.locale ファイルに、「概念的なディレクトリと実ディレクトリ名のマッピング」が管理されている感じです。

そんなスペシャルなディレクトリですが、日本語環境だと「コンソールから移動するのに入力が面倒」という理由から「ロケールを英語圏にしてアルファベットに変えてしまう」という知見が、 世では多く在ります。

一般的な変更方法。

コンソールから、

LC_ALL=C xdg-user-dirs-gtk-update

とやると、ダイアログが表示されるので…

xdg-user-dirs-gtk-updateリネーム確認ダイアログ

「Update Names」をクリック。するとディレクトリ名がアルファベットにリネームされます。


でも、自分は「環境のAsCode」を目指して居るので「出来ればCLIでやりたい」のです…。

コマンドのみで英語名にする方法

「gtkはGUIのキット」ということで、コマンドから削ると、変更することができました。

LC_ALL=C xdg-user-dirs-update --force 

ただ…「GUI版と違ってリネームではなくディレクトリ作成&設定変更」な機能のようで、結局「日本語名のディレクトリも残ってしまう」状態になります。

だめだわー

うーん、一つ解決すると一つ上手く行かないものですね。

いろいろかなぐり捨ててとりあえずの強引な解決

なんとか「冪当を確保しつつ」「オプションを工夫して」「ループしてコピーしてファイルを維持して…」など試行錯誤したのですが、 上手く行かなかったので…。

  1. 冪当を捨てる(環境構築時一回だけ走らせる想定)
  2. ホームディレクトリのトップには日本語ディレクトリを置かない運用

と決め打ちで、

# 設定変更 & 英名への変更
LC_ALL=C xdg-user-dirs-update --force
# ホームディレクトリにある「名前に2バイト文字を含む」全てのディレクトリをデストロイ。
find ~/ -maxdepth 1 -type d  | LANG=C grep  -v '^[[:cntrl:][:print:]]*$' | xargs rm -rf

という「短さ重視の2行」で片付けました。


すごく「これやったんや、俺の欲してたものは!」というコマンドに出会っても、 対話型だったりダイアログ上がってくるのが必須だったりして、 「CLIだけで片付かないもの」が多く在ります。

今回は「たまたまコマンド叩いてみて見つけた」レベルなのですが、 「これに対応する(CLIの)コマンド無いかな?」 という嗅覚と視点をいつも置いて、これからはコマンドを探して行きたいなと思います。

参考

以下を参考にさせていただきました。ありがとうございます。

blog comments powered by Disqus