Comment effacer le texte existant dans un fichier texte sans l’ouvrir?
Je veux dire par exemple, j'ai un fichier comme hello.txt avec des données texte dans & amp; Comment puis-je effacer le texte total de ce fichier sans l'ouvrir
Je vais aussi utiliser la redirection comme la réponse de rajagenupula. Mais il y a un peu plus de flexibilité. Ouvrez un terminal et tapez,
cat > hello.txt
Et appuyez sur Ctrl + C . Cela effacera le fichier précédent. Si vous voulez autant, c'est bien.
Si vous le souhaitez, vous pouvez faire quelque chose de plus après avoir effacé le fichier. De cette façon, non seulement vous pouvez effacer un fichier sans l’ouvrir, mais vous pouvez également écrire quelques lignes avec un format correct dans le fichier. Dites que vous souhaitez écrire "Ubuntu est le meilleur système d'exploitation" après avoir effacé le fichier, faites simplement
cat > hello.txt
Ubuntu is the
best OS
Appuyez ensuite sur Ctrl + C . Maintenant, le fichier précédent est effacé. En même temps, les mots sont en deux lignes, comme je les ai mis.
Voir l'exemple:
Je dois le faire tout le temps avec les fichiers journaux. La manière la plus simple que j'ai trouvée est d'utiliser la commande suivante:
cat /dev/null > hello.txt
Cela supprime tout le contenu du fichier et vous laisse un fichier vide sans avoir à l'ouvrir dans un éditeur, sélectionnez du texte, n'importe lequel de ces éléments. Plus précisément, il s'agit de remplacer le contenu du fichier par le contenu de "/ dev / null", ou rien. En fait, c’est assez chic.
La seule mise en garde est que l'utilisateur auquel vous êtes actuellement connecté doit disposer d'une autorisation en écriture sur ce fichier.
Si un fichier a été créé avec le nom hello.txt et fourni avec des textes, la commande ci-dessous du terminal ctrl + alt + t supprimera tout le texte du fichier hello.txt ,
echo "" > hello.txt
Une autre approche - cp
le /dev/null
au fichier
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:$
Cette réponse est basée sur un autre super utilisateur . Bien que ce ne soit pas la commande bash la plus courte, truncate
est la plus lisible pour les débutants moyens:
$ 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
Paramètres utilisés avec la commande truncate
ici:
Un avantage de truncate
est que vous pouvez spécifier combien garder, pas seulement zéro:
$ truncate -s 10000 Hello.txt
... va tout tronquer après les 10 000 premiers octets. Cela pourrait être utile si un programme est devenu fou et a transféré beaucoup de mégaoctets de données dans un petit fichier journal:
truncate
pour une taille normale supérieure de 10 Ko Alors, je vois beaucoup de redirections utilisées pour répondre à cela;)
Une approche un peu différente avec le combo: rm & amp; touch
rm hello.txt && touch hello.txt
( ouais… encore un autre triche! )
Donc, avec cette commande combo le fichier hello.txt n’a pas été ouvert et à la fin vous avez toujours le fichier hello.txt à sa place avec le contenu effacé. Juste comme tu voulais!
Lire d'autres questions sur les étiquettes command-line bash