ls [13]とls {1,3}の違いは何ですか?

posixKing

コマンドを使用して、ディレクトリに3つのファイルを作成しましたtouch inv{1..3}.txt今、私は2つのコマンドを使用しましたが、それらの出力はほとんど同じです。これらの2つのコマンドはあるls inv[13].txtls {1,3}.txt

では、これら2つはどのように違うのでしょうか。角括弧は中括弧とどのように異なりますか?また、「linux [..]」をグーグルで検索していましたが、何も見つかりませんでした。Linuxの用語でこれらが何と呼ばれているのかわかりますか?

ありがとう

ヘマイル
  • {}ブレース拡張と呼ばれます。これには2つの形式があります:{x..y}{x,y}、を置換xy、任意のアルファベットまたは数値に置き換えます。

    最初の形式で{x..y}からxまでのすべての値に展開されますyたとえば、{2..5}に展開されます2345

    2番目の明示的な形式で{x,y}xにのみ展開されyます。たとえば、{2,5}に展開されます25

    拡張が不可能な場合、パターンは文字通りに扱われ{a..3}ます。

    注意すべき重要なことは、ファイルの作成/照合中に、ファイルの照合に関係なく、中括弧の展開が(可能であれば)行われることです。

  • []パス名拡張(またはグロブ)パターンとして知られています。ブレース展開とは異なり、ファイル名の照合中にのみ使用できますが、ファイルの作成時に使用すると文字通りに扱われます。

    との2つの形式が[xyz...]あり[x-y]ます。

    最初の形式では、角括弧内の任意の1文字に個別に一致します。つまり、各文字は個別に扱われます。だから、のために[25].txt、それは名前のファイルに一致します2.txt5.txtについてながら、現在のディレクトリにし[245].txt、それが名前の任意のファイルと一致します2.txt4.txtまたはを5.txt

    2番目の形式では、範囲の拡張は、可能であれば文字通りに扱われる場合は、個別に照合する前に最初に実行されます。したがって、の[2-5]. txt場合、2.txtor3.txtまたは4.txtorという名前のファイルと一致します5.txt範囲を拡張できない場合、たとえば[a-3].txt。の場合など、文字通り処理されます。


これら2つの動作の重要な違いは、一致するパターンが多く、実際には一致しない場合です。中括弧の展開は何があっても実行されるため、特定のファイルが存在しないというエラーが表示されますが、パス名の展開は残りのエラーなしで可能な限り一致します。

$ ls {1..4}.txt
ls: cannot access 4.txt: No such file or directory
1.txt  2.txt  3.txt

$ ls [1-4].txt
1.txt  2.txt  3.txt

移植性に関する注意:

[]パス名展開オペレータは、Bourneシェルおよび誘導体のうち、従ってポータブルPOSIXによって定義されます。

ブレース拡張{}はPOSIXで定義されていないため、すべてのシェル間で移植できるわけではありません。たとえば、dashshUbuntuでは)これはありません。それはから借りたcshだけ例えば、特定のシェル上で動作しますbashzshksh93fish実装する前に、使用しているシェルがこれをサポートしていることを確認してください。


例:

$ touch {1..3}.txt

$ ls {1..3}.txt
1.txt  2.txt  3.txt

$ ls {1,2,3}.txt
1.txt  2.txt  3.txt

$ ls {1..4}.txt
ls: cannot access 4.txt: No such file or directory
1.txt  2.txt  3.txt

$ ls {a..3}.txt
ls: cannot access {a..3}.txt: No such file or directory

$ ls [123].txt
1.txt  2.txt  3.txt

$ ls [1-3].txt
1.txt  2.txt  3.txt

$ ls [1-4].txt
1.txt  2.txt  3.txt

$ ls [a-3].txt
ls: cannot access [a-3].txt: No such file or directory

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Ansibleで複数行のシェルスクリプトを実行する方法

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    パンダは異なる名前の列に追加します

  8. 8

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  9. 9

    グラフ(.PNG)ファイルをエクスポートするZabbix

  10. 10

    Chromeウェブアプリのウェブビューの高さの問題

  11. 11

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  12. 12

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  13. 13

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  14. 14

    Reactでclsxを使用する方法

  15. 15

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  16. 16

    テキストフィールドの値に基づいて UIslider を移動します

  17. 17

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  20. 20

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  21. 21

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

ホットタグ

アーカイブ