ファイルの内容を空にする
1. 概要
Linuxでファイルを処理する場合、ある時点でそれらの一部を空にする必要があるのが一般的です。 ログファイルは、時々それらをクリアしたい良い例です。
このチュートリアルでは、いくつかの実用的な例を通して、それを達成するためのいくつかの方法を見ていきます。
2. サンプルファイルの作成
始める前に、original_fileというファイルを作成しましょう。このファイルには数行のテキストが含まれています。
$ cat << eof > original_file
one two
three four
eof
次に、作業するコピーとなる別のコピーを作成します。
$ cp original_file example_file
各シナリオをテストした後、ファイルを補充するためにこれを行う必要があります。
3. シェル固有のコマンドの使用
まず、使用しているシェルの特定の特性を使用できます。
たとえば、Bashを使用している場合は、>文字を入力するだけです。
$ > example_file
組み込みのコロンの使用:
$ : > example_file
または、 true ビルトイン:
$ true > example_file
ただし、Zshでは、2つのアプローチをすばやく利用することしかできません。
$ : > example_file
$ true > example_file
どちらも何もせず、終了ステータス0を返します。
それでは、次のことを試してみましょう。
$ > example_file
そして何も起こりません:シェルは入力を期待します。 ただし、 ctrl + d を押すと、ファイルの終わりが送信され、最後にファイルのサイズをチェックして、ファイルにコンテンツがないことを確認できます。
clobberおよびnoclobberオプションがあるため、これを(コロンの有無にかかわらず)行うことができます。 それ以外の場合は、次のメッセージを受け取ります。
zsh: file exists: example_file
このシナリオでは、次のような方法で解決できます。
- setopt clobber と入力して、過去の戦略を再試行してください
- unsetopt noclobber と入力して、再試行してください
- を使用して ! 後に >> 私たちの過去の戦略のいくつかにおける性格-例えば、
:>! example_file
4. 空の文字列を送信する
この問題を解決する別の方法は、空の文字列をファイルに送信することです。
これは、echoコマンドを使用して実現できます。
$ echo -n > example_file
ここでは、 -n パラメーターを使用して、echoがデフォルトで追加する改行を追加しないようにします。
$ printf '' > example_file
もう1つの方法は、ヒアドキュメントを使用して文字列を指定することです。たとえば、EOFとしましょう。
$ cat << EOF > example_file
待って、書くだけ EOF 、次にを押します
5. 特定のサイズを使用する
ファイルの内容を削除する別の方法は、ファイルサイズをゼロに設定することです。
truncateコマンドでそれを試してみましょう。
$ truncate -s 0 example_file
ddコマンドを使用してこの問題に取り組むこともできます。
$ dd if=/dev/urandom of=example_file bs=1 count=0
前のアプローチでは、 / dev / urandom ファイルを使用しましたが、 count パラメーターがゼロである限り、どのファイルでも使用できます。違いはありません。
6. / dev /nullを使用する
/ dev / nullファイルは、書き込みを行うとそこに送信されたものを破棄できるため、または読み取りを行うとファイルの終わりを返すため、非常に便利で快適です。 。
/ dev /nullファイルをddコマンドで使用してみましょう。
$ dd if=/dev/null of=./example_file
catでも同じことができます。
$ cat /dev/null > example_file
またはcpを使用:
$ cp /dev/null example_file
7. awkおよびsedを使用
sed は、問題を解決するために使用できる便利で強力なツールです。
$ sed -i 'd' example_file
パラメータ-iを使用して、すべての変更がファイル内で行われることをsedに指示します。
d コマンドを使用して、sedに行全体を削除するように指示します。 sed はこのレコードをレコードごとに実行するため、最終的なファイルは空になります。
GNU Awk を使用すると、同様のことが実現できます。
$ gawk -i inplace '0' example_file
ゼロはawkでfalseとして評価されるため、 awk は、「 0 」を返すことにより、すべての入力行を無視するように強制します。次に、空を入力ファイルに保存します。
$ awk '0' example_file > tmp_file && mv tmp_file example_file
これらの戦略では、ファイル名を維持しながら、iノード番号を変更することにも注意してください。 また、ファイルをチェックするので遅いです。
8. 結論
Linuxで作業する場合、ファイルを空にすることは一般的なタスクです。
このチュートリアルでは、シェル固有のコマンドやその他のツールを使用してコンテンツを空にするさまざまな方法を検討しました。