私は一般的にLinuxに初めて触れたので、特定のコマンドが何をすべきか、それをしないでください。
ファイルを作成してメモしたいです。
touch file.txt `
ファイルを生成するだけでなく、次も実行します。
echo >> file.txt
そして
> file.txt
"">"と"touch"を使用して作成されたファイルは両方とも0バイトですが、"echo"を使用して作成されたファイルは1バイトです。
ファイルサイズが異なるのはなぜですか?ファイルを作成する最良の方法は何ですか?ファイルを作成するときに「touch」または「」>」の代わりに「echo」を使用する必要がある場合はいつですか?
答え1
ファイルの生成に関する一般的な質問については、次を参照してください。ファイルを生成するシェルコマンドがないのはなぜですか?
> file
とともにecho >> file
、シェルファイルがまだ存在しない場合は、ファイルが生成されます。
を使用すると、> file
ファイルがすでに存在する場合は切り捨てられます。コマンドが指定されていないため、ファイルには何も書き込まれず、ファイルは空になります。
echo
、パラメータなしで空白行を印刷します。したがって、出力には行末文字、通常改行文字(LF、\n
)が含まれます。
% echo | od -c
0000000 \n
0000001
したがって、を使用すると、echo >> file
ファイルに1バイトを書き込むことができます。ファイルがすでに存在する場合(上書き)の>>
代わりに(追加)を使用したため、バイトが追加されます>
。
touch
ファイルがまだ存在しない場合はファイルを作成し、それ以外の場合はファイルのタイムスタンプを更新します。touch
ファイルの内容は変更されないため、ファイルがすでに存在し、一部の内容が含まれている場合touch
。
どんなものを使いたいかは、目的の効果によって異なります。
答え2
ムルの答え行動の違いがよく説明されています。
要件によっては、同じ目標を達成する方法がいくつかあります。この場合、「味」や読みやすさの問題かもしれません。私は好むtouch
。確かにより安全です。ファイルがすでに存在し、その内容を失いたくない場合です。また忘れられない。
スクリプトにコマンドを書く場合の一般的な規則は、人々がコードを書くよりもコードを読み込むということです。つまり、あなたはコンピュータだけでなく、将来の自分自身を含む人間ともコミュニケーションしています。 :-).次のコード行は少し明確ではないかもしれません。
> file
同じ動作が必要な場合は、> file
というコマンドもあります truncate
。 truncate
GNU coreutilsから入手できます。