ファイル名に '(アポストロフィ)が含まれています.

ファイル名に '(アポストロフィ)が含まれています.

名前にスペースが含まれているファイルを一覧表示すると、ほとんどの場合アポストロフィで囲まれていることがわかります。

'famille, vacances, loisirs'

Chapitre 2 : L'accès au système.mdアポストロフィを含む名前でなければならないファイルを編集する必要があります。


私は試した:

gvim 'Chapitre 2 : L''accès au système.md'

中間アポストロフィは2倍で表示されます。ただし、'Chapitre 2 : Laccès au système.md'アポストロフィがまったくないファイルを生成します。


私は試した:

gvim "Chapitre 2 : L'accès au système.md"

次のファイルが生成されます。"Chapitre 2 : L'accès au système.md"


2つの質問があります。

  1. (システムの場合)ファイル名:"Chapitre 2 : L'accès au système.md"これが正常に実行されたときに名前が指定されたのと同じファイルですか?'Chapitre 2 : L'accès au système.md'

  2. 私のファイルにファイル名を書く方法は?キム'Chapitre 2 : L'accès au système.md'出力から読みたい正確なファイル名を取得するコマンドエルエス注文する?

ベストアンサー1

ls出力を明確にするために、シェルの引用規則を使用してファイル名が出力されるいくつかのシステムにあります。たとえば、GNU lsはQUOTING_STYLEに設定されているか、shellデフォルトlsのcoreutils> = 8.25で設定できます。コマンドラインにファイル名を入力するときは、シェルの引用規則も重要です。

gvim 'Chapitre 2 : L''accès au système.md''Chapitre 2 : Laccès au système.md'代わりに、アポストロフィがまったくないファイルが作成されます。

シェルに 2 つの一重引用符文字列を連続して指定すると、連結されます。 SQLではこのように一重引用符を取得できますが、ほとんどの一般的なシェルでは(†)できません。表示される外側の一重引用符は、ファイル名の一部にしてはいけません。出力をls明確にするために表示されるだけです。実際のファイル名はChapitre 2 : Laccès au système.md

(†POSIXスタイルのシェル(デフォルトのBash、ksh、zshなど)、(t)csh、およびFishはこれを接続とし​​て扱います。これはPythonなどで動作する方法です。他のシェル(rc / es / akanga)はSQLこれは何をしますが、zshはオプションで実行できますrcquotes

gvim "Chapitre 2 : L'accès au système.md"次のファイルを作成しました。"Chapitre 2 : L'accès au système.md"

名前を生成する可能性が高いです。二重引用符は名前の一部ではなく、出力を明確にするためにChapitre 2 : L'accès au système.md印刷されます。lsここでは名前に一重引用符があるので、一重引用符の代わりに二重引用符を使用します。二重引用符には特別なものがないため、この形式が最もきれいです。しかし、


  1. (システムの場合)ファイル名:"Chapitre 2 : L'accès au système.md"これが正常に実行されたときに名前が指定されたのと同じファイルですか?'Chapitre 2 : L'accès au système.md'

これが完全なファイル名で、ファイル名として有効な場合! - そうでなければ、もう一方は2つの二重引用符と1つの一重引用符を含み、もう1つは3つの二重引用符を含むため、同じではありません。

シェルの引用規則を使用して解釈するときに同じかどうかを意味する場合は、もう一度いいえです。"Chapitre 2 : L'accès au système.md"文字列をChapitre 2 : L'accès au système.md単一のシェル語で表します(引用符で囲むため)。

一方、'Chapitre 2 : L'accès au système.md'文字列Chapitre 2 : Laccès、、、 (引用符なしの空白がauあるsystème.mdため、3つの異なるシェルワード)と、閉じるパートナーがないオープン引用符を表します。シェルコマンドラインにこれ​​を入力すると、閉じる引用符を取得するために別の入力行を待ちます。末尾に引用符を入れずにシェルコマンドラインでコマンドの引数として入力すると、コマンドはこれら3つの異なるファイルにアクセスしようとします。

  1. 'Chapitre 2 : L'accès au système.md'lsコマンドの出力から読みたい正確なファイル名を取得するには、gvimコマンドにファイル名を書き込む必要がありますか?

シェルスタイルの引用文字列を出力するモードではls出力できません'Chapitre 2 : L'accès au système.md'。これは、有効なシェルスタイルの引用文字列ではないためです。最後に閉じていない引用符があります。


さて、最初におっしゃった内容に戻ると次のようになります。

Chapitre 2 : L'accès au système.mdアポストロフィを含む名前でなければならないファイルを編集する必要があります。

これをシェルで表現する方法はいくつかあります。その1つは二重引用符を使用することですが、この方法lsも効果があります"Chapitre 2 : L'accès au système.md"。これは、内部の任意の文字が二重引用符で囲まれた特別な文字ではないために機能します(スペースと一重引用符でのみ保護されます)、たとえばファイル名にドル記号が含まれている場合は機能しません。ドル記号がある場合は、バックスラッシュを使用してエスケープできます\$

別の方法は、一重引用符自体を除くすべての項目に一重引用符を使用し、エスケープされた一重引用符を目的の場所に配置することです'Chapitre 2 : L'\''accès au système.md'。これには、'Chapitre 2 : L'\'の3つの部分が含まれており、'accès au système.md'引用符とバックスラッシュが削除され、結果が単一の単語に連結されますChapitre 2 : L'accès au système.md

おすすめ記事