こんにちは、松井です。 ちょっとしたことに気づいたので、訂正です。
http://lists.debian.or.jp/archives/debian-users/201608/msg00012.html において
Takahashiさんのアドバイスにありましたように、 Nautilus からファイルをドラッグ&ドロップして '/home/debmania/Desktop/文.pdf' と表示されるのを ' の部分を取り除いて修正するのが一番簡単なようです。
と書きました。 開発者の方達も読み流されたのかもしれませんが、 ' の部分をいちいち取り除かない方が
$ ls -l '/media/usb0/新しいファイル (cp&paste).txt' -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファイル (cp&paste).txt
というように、 空白 ( & ) この4つのどれも \ で修正することなくコマンドの引数として渡せるようです。 ' ' は間に挟まれた部分のメタキャラクタの機能を無効化するので、 利便性のためにわざとこうなるように設計されているようですね。
--- Kenji Matsui
こんにちは。
2017-01-12 8:06 GMT+09:00 Kenji Matsui kmatsui@earth.kiramori.net:
' の部分をいちいち取り除かない方が
$ ls -l '/media/usb0/新しいファイル (cp&paste).txt' -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファイル (cp&paste).txt
というように、 空白 ( & ) この4つのどれも \ で修正することなくコマンドの引数として渡せるようです。 ' ' は間に挟まれた部分のメタキャラクタの機能を無効化するので、 利便性のためにわざとこうなるように設計されているようですね。
はい。「'」を取り除く必要はないけど、こだわりがあるのかもしれないし、 空白とかが含まれなければ実害はないし、ということで特にコメントしません でした。
ちなみに、シェルに渡されたクォートやファイル名パターン(ワイルドカード) がどのような処理を経てコマンドに渡されるかについては、ちょうど 12 月に シェルのアドベントカレンダー(日めくりバトン企画)で書いたばかりでした。
シェルの展開順序に気をつけよう - Qiita http://qiita.com/emasaka/items/a59335c74220b3641639
もし、このへんにご興味があればどうぞ。
From: Kenji Matsui kmatsui@earth.kiramori.net Subject: [debian-users 00036] Re: ターミナルに日本語含むファイルパス貼り付けで文字化け Date: Wed, 11 Jan 2017 23:06:49 +0000
' の部分をいちいち取り除かない方が $ ls -l '/media/usb0/新しいファイル (cp&paste).txt' -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファ -イル (cp&paste).txt というように、 空白 ( & ) この4つのどれも \ で修正することなくコマンドの引数として渡せるようで す。
むしろ、いちいちエスケープするのは面倒くさくてありえない、 と思っていました。
# 他のプログラミング言語でも、エスケープを回避する方向で # 書きたいところ。
さらに余談です。 Bashなどでは、ファイル名を途中まで入力してタブキーを押すと 補完してくれますが、クオートで始めた場合とクオートなしの場合、 それぞれ試してみてください。あと、ダブルクオートの場合も。
こんにちは。 Takahashiさん、喜瀬さん、レスありがとうございます。
特殊文字がファイルパスに現れたら、それしか方法を知らなかったものですから毎回 \ でエスケープしておりました。
ちなみに、シェルに渡されたクォートやファイル名パターン(ワイルドカード) がどのような処理を経てコマンドに渡されるかについては、ちょうど 12 月に シェルのアドベントカレンダー(日めくりバトン企画)で書いたばかりでした。
シェルの展開順序に気をつけよう - Qiita http://qiita.com/emasaka/items/a59335c74220b3641639
もし、このへんにご興味があればどうぞ。
リンク先の記事を読んでみました。 bashにも色々と気をつけないといけない点があることを知ることができ、 おかげさまで勉強になりました。
さらに余談です。 Bashなどでは、ファイル名を途中まで入力してタブキーを押すと 補完してくれますが、クオートで始めた場合とクオートなしの場合、 それぞれ試してみてください。あと、ダブルクオートの場合も。
Tabキーによる補完でコマンド実行してみました。
$ ls -l /media/usb0/新しいファイル\ (cp&paste).txt -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファイル (cp&paste).txt $ ls -l '/media/usb0/新しいファイル (cp&paste).txt' -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファイル (cp&paste).txt $ ls -l "/media/usb0/新しいファイル (cp&paste).txt" -rw-r--r-- 1 debmania debmania 6080 1月 5 09:05 /media/usb0/新しいファイル (cp&paste).txt
というようになりました。クォートなしの時でもエラーが出ないようにきちんとエスケープしてくれるのですね。 ターミナルって賢いなぁ・・・
--- Kenji Matsui