ファイル内のテキストをクリアするには?


71

テキストファイルに存在するテキストを開かずにクリアする方法は?

たとえばhello.txt、いくつかのテキストデータと同じようにファイルがあり、そのファイルを開かずにテキスト全体をクリアするにはどうすればよいですか?

これにより、nano、Geditなどのエディターを使用しないことになります。


1
ファイルを「開く」とはどういう意味ですか?これまでに与えられたすべての回答では、ファイルはシェルによって書き込み用に開かれたままです。結局のところ、シェルは他のようなプログラムに過ぎません。
ジェフ

@Jeffはnanoやgeditなどのようなものを使用していません。
rɑːdʒɑ13年

Hus787あなたがそう思う場合、私はそこに着くのをタイプしていません。
rɑːdʒɑ

ジェフのコメントに同意します。テキストエディタを使用する場合でもリダイレクトを使用する場合でも、書き込みにはファイルストリームを開く必要があるという意見もあります*。(*問題を支援するためにリンクを提案している人に感謝します
正確な

回答:


139

ターミナルをCTRL+ ALT+で開き、次のようにT入力します。

 > hello.txt

それだけです。そのファイルのデータは、開かなくてもクリアされます。

例:

ここに画像の説明を入力してください


5
技術的には、ファイルが開かれます。ただのエディターではありません。
ジョン・ディブリング

2
@JohnDiblingは実際にはリダイレクトです。ファイルはここで開かれていないと思います。リダイレクトのstdout場合、既存のファイルが存在する場合、その内容によって上書きされます。この場合、には何もありませんstdout。そのため、ファイルはvoidで上書きされており、必要に応じて実質的に古いデータを消去しています。
souravc

このコマンドを元に戻す方法はありますか?
ラオ

@Raoは、> 10GBのような大きい場合があります。しかし、どれだけの程度はわからない。
rɑːdʒɑ

28

ファイルを切り捨てる最も簡単な方法は、シェルのno-opコマンド(:)の出力を消去するファイルにリダイレクトすることです。

: > hello.txt

2
そのおそらく(ちょうどに対する最も簡単ではない>)が、それはこの非常に閲覧question..hereの回答のいずれかに記載されていない理由を不思議sure..iための最速、1を取る...
heemayl

13

また、rajagenupulaの答えのようなリダイレクトを使用します。しかし、もう少し柔軟性があります。ターミナルを開いて入力し、

cat > hello.txt

Ctrl+を押しCます。前のファイルを消去します。これまでにしたい場合は大丈夫です。

必要に応じて、ファイルを消去した後、さらに何かを行うことができます。この方法では、ファイルを開かずにワイプできるだけでなく、ファイル内に適切な書式を設定して数行書き込むこともできます。ファイルを消去した後、「Ub​​untuは最高のOSです」と書きたいと言って、ただ

cat > hello.txt
Ubuntu is the 
best OS

次にCtrl+を押しCます。これで、前のファイルは消去されます。同時に、私が書いたように言葉は2行にあります。

例を参照してください。

ここに画像の説明を入力してください


ちょっと答えてくれてありがとう。&また、その直後に行うが、それでも面白いことがこれほど少ないが、仕事+ 1。
rɑːdʒɑ

>リダイレクトの略です。既存のファイルを上書きして、ファイルにcat > file書き込みstdoutます。
souravc

10

ログファイルを使用してこれを常に行う必要があります。私が見つけた最も簡単な方法は、次のコマンドを使用することです。

cat /dev/null > hello.txt

これにより、ファイルの内容のすべてが削除され、エディターで開いたり、テキストを選択したりすることなく、空のファイルが残ります。より具体的には、ファイルの内容を「/ dev / null」の内容に置き換えるか、何も置き換えません。それは実際、かなり滑らかです。

唯一の注意点は、現在ログインしているユーザーが、そのファイルへの書き込み権限を持っている必要があるということです。


答えてくれてありがとう。それがよりきれいに見ることができるように、例を追加してください+ 1。
rɑːdʒɑ

5

ファイルがhello.txtという名前で作成され、いくつかのテキストが提供されている場合、ターミナルctrl+ alt+ で以下のコマンドを実行tすると、hello.txtファイル内のすべてのテキストが削除されます。

echo "" > hello.txt

ここに画像の説明を入力してください


+1にお答えいただきありがとうございます。いくつかの例を使って展開してください。
rɑːdʒɑ

3

別のアプローチ- ファイルへcp/dev/null

xieerqi:$ cat testFile.txt                                                                                        
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 83100492  26269816  76% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914492        4   2914488   1% /dev
tmpfs             585216     1152    584064   1% /run
none                5120        0      5120   0% /run/lock
none             2926072    98096   2827976   4% /run/shm
none              102400       76    102324   1% /run/user

xieerqi:$ cp /dev/null testFile.txt                                                                               

xieerqi:$ cat testFile.txt

xieerqi:$ 

あなたは素晴らしい男です!
ヤセルシンジャブ

2

最短の答えではありませんが...

この回答は、スーパーユーザーの別の回答に基づいています。最短のbashコマンドでtruncateはありませんが、平均的な初心者にとって最も読みやすいです:

$ echo Hello > Hello.txt
$ echo World! >> Hello.txt
$ cat Hello.txt
Hello
World!
$ truncate -s 0 Hello.txt
$ ll Hello.txt
-rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt

truncateここでコマンドで使用されるパラメーター:

  • 「-s」はサイズを設定します
  • 「0」サイズはゼロになります

最初の10,000バイトを除くすべてをクリアします

利点はtruncate、ゼロだけでなく、保持する量を指定できることです。

$ truncate -s 10000 Hello.txt

...最初の10,000バイト以降はすべて切り捨てられます。これは、プログラムが狂って、何メガバイトものデータを小さなログファイルにダンプした場合に便利です。

  • truncate合理的な大きな通常サイズの10K のコマンドを実行します
  • テキストエディターでファイルを開き、を押します End
  • PgUp所属していない残りのバイトを強調表示して削除します(通常はASCIIガベージ文字で認識可能)。

0

だから、これに答えるために多くのリダイレクトが使用されているのを見ます;)

コンボの少し異なるアプローチ:rm&touch

rm hello.txt && touch hello.txt

ええ...さらに別のチート!

そのため、このコマンドコンボでは、hello.txtファイルは開かれず、最終的には内容がクリアされた場所にhello.txtファイルが残っています。あなたが望んでいたように!


4
私の意見では良い「チート」ではなく、ファイルのパーミッションを変更する可能性があります
...-Parto

2
これは削除したほうがいいかもしれません。それは問題を引き起こす可能性があります:許可は変わることがあります。ログファイルで実行すると、ログがそこにあり、書き込み可能であると予期するサービスから予期しない動作が発生する可能性があります。
リンツウィンド

この回答は興味のある点としては最善の方法ではありませんが、所有者/許可の問題を修正するには、最初に所有権と権限を確認し、これを追加します(必要に応じて調整します):&& sudo chown user:group hello.txt && sudo chmod 644 hello.txt-
クリス

iノード番号が削除されます。新しいiノード番号が作成されます。悪いアイデア。
Dipankar Nalui

0
vi filename -c ':1,$d' -c ':wq'

特別な許可があったので、私にとって最高の仕事をした


あなたが抱えていた問題について詳しく説明することで、この答えを改善できます。また、プログラムviが何であるか、さまざまなパラメーターと引数が何をするのかを説明できます。
WinEunuuchs2Unix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.