人々はなぜ空のファイルを作成するときに「:>>ファイル」の代わりに「タッチファイル」を好むのですか?

人々はなぜ空のファイルを作成するときに「:>>ファイル」の代わりに「タッチファイル」を好むのですか?

これまではこれができることを知りませんでした。

: >> 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

おすすめ記事