2015/06/15 18:39:53

Linuxで日本語名ディレクトリを英語名に変換する方法


Warning: Attempt to read property "post_excerpt" on null in /home/kpkyvkzp/public_html/unskilled.site/wp-content/themes/unskilled2/content-header-eyecatch.php on line 5
目次(クリックするとジャンプします)
  • 1:Linuxディレクトリの日本語を英語に変える
  • 1.1:日本語環境でのインストール
  • 1.2:ディレクトリ名を英語に変えるコマンド
  • 1.2.1:その1
  • 1.2.2:その2
  • 1.2.3:LANG=Cの罠
  • 1.3:ロケールを確認してみる
  • 1.3.1:現在のロケールの確認
  • 1.3.2:利用可能なロケールの確認
  • 1.3.3:各環境変数でのdateコマンドの表示の確認
  • 1.4:実際に変更してみる
  • 1.4.1:ディレクトリを確認してみる
  • 2:まとめ

Linuxディレクトリの日本語を英語に変える

本記事での環境はdebian GNU/Linux 8(jessie)を想定して進めたいと思います。

日本語環境でのインストール

Linuxを日本語でインストールすると、/home以下のディレクトリが日本語になります。

デスクトップ用途としては便利で問題はないのですが、コマンドラインで作業する際にはディレクトリを打ちにくくて、日本語名の存在は煩わしいです。

かと言ってこれらのディレクトリを手動でリネームしてしまうと、いろいろ不具合が生じてしまうそうです(らしいです)。

ディレクトリ名を英語に変えるコマンド

その1

そこでこれはコマンドから修正するのが正しいやり方のようです。

$ LC_ALL=C xdg-user-dirs-gdk-update

xdg-user-dirs-updateというコマンドもありますが、これはCUI版だ(と思う) xdg-user-dirs-gdk-updateはGUI版なので、実行時にGUIダイアログが出でます。

その2

$ LANG=C xdg-user-dirs-gdk-update

と言った方法も紹介されていますが、どうもうまく行かない場合もあるようですよ。

LANG=Cの罠

LANG=Cはデフォルトロケール(国地域ごとの言語や単位などのまとまり)を意味するので、英語がデフォルトロケールだと「英語」でディレクトリ名を変えるということになります。

しかし昨今のlinuxでは日本語環境がデフォルトである場合が増えてきており、LANG=Cが日本語を意味することもあるようです。

ロケールを確認してみる

現在のロケールの確認

localeコマンドで確かめてみます。このコマンドは現在のロケールを調べるコマンド。rootではなく、対象となる作業用ユーザで大丈夫です。

$ locale

@MINIの環境では以下のように表示されました。

LANG=ja_JP.UTF-8LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC=ja_JP.utf8
LC_TIME=ja_JP.utf8
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY=ja_JP.utf8
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER=ja_JP.utf8
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT=ja_JP.utf8
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

利用可能なロケールの確認

利用可能なロケールを確認するには-aオプションをつけて実行

$ locale -a

@MINOの環境では以下のように表示されました。

C
C.UTF-8
POSIX
ja_JP.utf8

Cという怪しいロケールがあるが、LANG=CのCはこのことです。

各環境変数でのdateコマンドの表示の確認

さらに@MINOの環境で各環境変数がどのように表示されるか試してみました。

$ LANGUAGE=C date
2015年  6月 15日 月曜日 13:47:02 JST

$ LANG=C date
2015年  6月 15日 月曜日 13:47:09 JST

$ LANG=POSIX date
2015年  6月 15日 月曜日 13:47:48 JST

$ LC_ALL=C date
Mon Jun 15 13:49:21 JST 2015

実際に変更してみる

こういった結果だったので、英語にするにはLC_ALL=Cを使う必要があるのかと思ったのですが、

$ LANG=C xdg-user-dirs-gtk-update

としても以下のように英語名での変換を行ってくれる旨のダイアログが表示されまシタ。

 xdg-user-dirs-gtk-update

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Moving DESKTOP directory from デスクトップ to Desktop
Moving DOWNLOAD directory from ダウンロード to Downloads
Moving TEMPLATES directory from テンプレート to Templates
Moving PUBLICSHARE directory from 公開 to Public
Moving DOCUMENTS directory from ドキュメント to Documents
Moving MUSIC directory from 音楽 to Music
Moving PICTURES directory from 画像 to Pictures
Moving VIDEOS directory from ビデオ to Videos

(なにやらエラー的なメッセージがあるが、これはwindowの生成に関するメッセージで本件とは直接関わりがないので、無視する。)

もちろん

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

でも実行できました。

xdg-user-dirs-gtk-updateコマンドの実行後は念のためログインしなおします。

するとログイン時に以下のようなダイアログが表示されるかもしれません。

 xdg-user-dirs-gtk-update

ログインし直すと、再度日本語ロケールになるので、日本語名ディレクトリにするか聞いてきます。親切ではありますが、今回の場合は遠慮しておきたいですね。

というわけでこれは、「次回から表示しない」にチェックをつけた上で、「古い名前のままにする」を選択します。

こうすることで英語名ディレクトリとして固定されることになります。

ディレクトリを確認してみる

lsコマンドを実行してみます。

$ ls
Desktop  Downloads  Pictures  Templates  ダウンロード  画像
Documents  Music    Public    Videos   ドキュメント

あれ?日本語のディレクトリが存在している。

どうやら日本語ディレクトリの状態でファイル等が入っていた場合、それらは直接的に変換されず、新たに英語名ディレクトリが作られるようです。

@MINOの環境ではダウンロード、画像、ドキュメントにファイルが入っていたので、残ったわけだ。だから残り方は人によって様々だろうと思います。

もし日本語ディレクトリが残ったら、英語名のディレクトリには手動でファイルを移さないといけないようです。ちょっと面倒だが仕方あないですかね。

ファイルを移したあとは日本語ディレクトリはもう必要ないので、消してしまって構わないようです。

まとめ

@MINOのようにlinuxを使い始めて間もないユーザには日本語環境はありがたいのですが、コマンドラインを使って作業をすることがあるのなら、日本語環境に拘泥しないほうがいいかもしれないですね。

コマンドラインで日本語ディレクトリパスを入力するのが本当に面倒です。

パスのTAB補完も日本語で入れないといけないのでなんとも使いにくいですからね。

いつも思うが、もっと英語に不自由しないようになりたかったなと思いマス…。