GNU/Linux >> Linux の 問題 >  >> Linux

Catと「>」の違いでファイルをゼロにする?

これらの2つのコマンドは、ファイルをゼロにする方法に違いがありますか?後者は前者を行うためのより短い方法ですか?舞台裏で何が起こっているのですか?

両方

$ cat /dev/null > file.txt

$ > file.txt 

収量

-rw-r--r--  1 user  wheel  0 May 18 10:33 file.txt

承認された回答:

cat /dev/null > file.txt 猫の無駄な使い方です。

基本的にcat /dev/null 単にcatになります 何も出力しません。はい、機能しますが、不要な外部プロセスを呼び出す結果になるため、多くの人に嫌われています。
これは、一般的であるという理由だけで一般的であるものの1つです。

> file.txtだけを使用する ほとんどのシェルで動作しますが、完全に移植できるわけではありません。完全にポータブルにしたい場合は、次の方法が適しています。

true > file.txt
: > file.txt

両方の: およびtrue データを出力せず、シェルビルトインです(cat は外部ユーティリティです)、したがって、より軽量で「適切」です。

更新:

tylerlが彼のコメントで述べたように、>| file.txt 構文。

ほとんどのシェルには、>を介して既存のファイルを切り捨てないようにする設定があります 。 >|を使用する必要があります 代わりは。これは、実際に>>を追加するつもりだったときに人為的エラーを防ぐためです。 。 set -Cを使用して動作をオンにできます 。

したがって、これを使用すると、ファイルを切り捨てる最も簡単で、最も適切で、移植可能な方法は次のようになると思います。

:>| file.txt

Linux
  1. SANとNASの違い

  2. [[$ a ==Z*]]と[$a==Z *]の違いは?

  3. [0-9]、[[:digit:]]とDの違いは?

  1. .exrcと.vimrcの違いは?

  2. 分散ファイルシステムとクラスターファイルシステムの違いは?

  3. Linuxのソフトリンクとハードリンクの違い

  1. 「du-sh*」と「du-sh./*」の違いは?

  2. EotとEofの違いは?

  3. fsync と syncfs の違いは何ですか?