これまではこれができることを知りませんでした。
: >> file
機能的には次のように見えます。
touch file
ほとんどのリソースがこの組み込みシェルよりもタッチを好む理由はありますか?
答え1
を使用する必要もありません:
。> file
少なくともWindowsでは、bash
他のシェルが異なる動作をする可能性があります。
実際、ここには実質的な違いはありません(たとえ呼び出すオーバーヘッドは小さいですが/bin/touch
)。
touch
ただし、コンテンツを変更または削除せずに、すでに存在するファイルのタイムスタンプを変更するためにも使用でき、すでに存在する> file
すべてのアイテムも削除されます。file
を使用すると、この問題を解決できます>> file
。
もう1つの違いは、touch
リダイレクトよりもきれいな構文を使用して(たとえば)複数のファイルを一度に作成(またはタイムスタンプを更新)できることですtouch foo bar baz quux
。各ファイルには独自のリダイレクト(たとえば>foo >bar >baz >quux
)が必要です。
使用touch
:
$ touch foo; stat -x foo; sleep 2; touch foo; stat -x foo
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:19 2018
Modify: Fri May 25 10:55:19 2018
Change: Fri May 25 10:55:19 2018
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:55:21 2018
Change: Fri May 25 10:55:21 2018
リダイレクトの使用:
$ > foo; stat -x foo; sleep 2; >> foo; stat -x foo
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018
答え2
touch
別の特殊文字を入力しなくても、複数のファイルを一度に処理できるからです。これには、支柱の拡張などがtouch file{1,2,3,4}
含まれます。
もう一つの問題は、チュートリアルを書くとき、読者がそのトピックについてよく知らないかもしれないことを認識することが重要であるということです。単純なコマンドは、アルファベットではなく文字の奇妙に見える組み合わせよりも理解しやすいです。:
実際にはそうではないという単純な理由から、これが何であるかわからない一般的なシェルユーザーがたくさんいると予想されます。する何もない。同様に、コマンドがない一般的な場合> foo
:リダイレクトが何であるかを知っていても、リダイレクトソースなし直感的ではないかもしれません。
また、unix.seでは、プロンプトを表示するためにドル記号の前にコマンド例を作成することがよくあります。行の先頭の特殊文字はこれと混同される可能性があります。 (一部のシステムとシェルではこれを>
デフォルトのプロンプトの一部として使用します。)
答え3
まあ、私が一番見る理由は、読みやすさです。何が起こっているのかを知っていれば、touch file
シェルスクリプトの訓練を受けていない人でも何が起こっているのかがわかります。そうでない場合は、以下を実行して確認するのが簡単ですman touch
。
A FILE argument that does not exist is created empty
:
などの秘密のコンテンツを使用すると、>
何が起こっているのかを知るのがより難しく、実際の利点がないため、使用する必要はありません。
答え4
古いシェルスクリプトを検索していますが、/ tmpにいくつかのタグファイルを作成したことを覚えていると思います。すべての* .shファイルで "touch"という単語を見つけるのは簡単です。検索する正確なファイル名がわからない場合は、コロンを検索すると誤った肯定が発生します。