Bashでスペースを含むファイル名の受け渡しを処理する方法



問題を排除するために楽器を試してください

Linuxには、システムのコマンドを実行するためのデフォルトのシェルBash(別名Bourne againシェル)があります。ほとんどのプログラマーは、bashが提供する柔軟性と強力なコマンドラインインタープリターのために、cmdよりもbashを好みます。ただし、ほとんどのユーザーは、bashでスペースを含むファイル名の受け渡しを処理しようとすると問題が発生します。これは、bashではスペースがファイル名と同じとは見なされないためです。



名前にスペースが含まれるファイル



スペースを含むファイル名がBashによって認識されないのはなぜですか?

Bashでは、なしで複数の単語を入力した場合 逃れる 文字()または 引用 、すべての単語を引数と見なします。これは、「」でディレクトリを変更するかどうかに関係なく、すべての操作に適用されます。 CD ‘または‘でファイルにアクセスしようとしています ネコ ‘コマンド。これらを使用した後に書いたものはすべて引数と見なされます。例えば:



catファイル名.txt

エスケープ文字または引用符を使用せずにコマンドを実行する

注意 :ファイル名は何でもかまいませんが、この記事では「 ファイル名.txt 例として」。

ここに ' ネコ ‘コマンドは考慮します ファイル そして 名前 1つの引数ではなく2つの引数として。ただし、エスケープ文字または引用符を使用する場合、bashシェルはそれを単一の引数と見なします。これは「 ファイル名.txt '。



Bashにスペースを含むファイル名

名前のスペースに使用できる方法はいくつかあります。ベストプラクティスは、将来的にファイル名のスペースを避けることです。簡単な方法は、アクセスしようとしているファイルの名前を変更してスペースを削除することです。他のいくつかの方法では、スペースを含むファイル名に一重引用符または二重引用符を使用するか、スペースの直前にエスケープ()記号を使用します。それがどのように機能するかを示すために、適用例を含むメソッドを提供します。

方法1:単一引用符と二重引用符を使用する

  1. ホールド Ctrl + Alt キーとを押します T 開く ターミナル
  2. 次に、ディレクトリをファイルのある場所に変更します。
    (あなたもすることができます 引っ張る そして 落とす コマンド ‘の後のターミナル内のファイル ネコ ‘、ファイルパス/ディレクトリに自動的に引用符を付けます)

    cdデスクトップ

    ディレクトリの変更

    注意 :デスクトップは、アクセスしようとしている場所に変更できます。

  3. 次のコマンドを入力して、名前にスペースが含まれるテキストファイルを読み取ります。
    cat 'ファイル名.txt'

    または

    cat 'ファイル名.txt'

    名前のスペースを避けるために引用符を使用するエラー

  4. 一重引用符と二重引用符は同じ結果になります。場合によっては、両方を試して、どちらが機能するかを確認する必要があります。

方法2:円記号のエスケープ文字を使用する

  1. ホールド Ctrl + Alt キーとを押します T 開く ターミナル
  2. 次のコマンドを使用して、ディレクトリをファイルのある場所に変更します。
    cdデスクトップ

    注意 :デスクトップの代わりに場所の名前を入力します。

  3. コマンドを入力して使用します 逃れる 名前にスペースがある場所の文字:
    cat file  name.txt

    スペースエラーを回避するためのエスケープ文字の使用

ボーナス:引用符とエスケープの使用

コマンドでディレクトリを使用している場合、パス全体で引用符を使用すると結果が生じることがあります。これは、「 mv ‘または‘ cp ‘はパスを次のように見なします ファイルソース 引用が全体として使用される場合。両方の見積もりを提供する必要があります ソース そして 個別に cp ‘は正しく機能します。以下の例を確認することもできます。これは、パスにエスケープ文字を使用する方がはるかに複雑であり、ユーザーがそれを間違える可能性があることを示しています。

引用符とエスケープ文字の違い

読んだ2分