Comment effacer du texte qui existait dans un fichier texte sans l'ouvrir?
Je veux dire, par exemple, j’ai un fichier hello.txt contenant des données textuelles et comment puis-je effacer le texte total de ce fichier sans l’ouvrir.
+ CTRLet tapez commeALTça y est, vos données dans ce fichier seront effacées sans même les ouvrir.T
> hello.txt
that's it, your data in that file will be cleared with out opening it even .
Example:
Le moyen le plus simple de tronquer un fichier consiste à rediriger la sortie de la commande Shell no-op (:
) vers le fichier à effacer.
: > hello.txt
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 presse Ctrl+C. Il effacera le fichier précédent. Si vous voulez jusqu'à ce point, 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 ouvrir, mais vous pouvez aussi écrire quelques lignes avec un formatage correct dans le fichier. Dites que vous souhaitez écrire "Ubuntu est le meilleur système d'exploitation" après avoir effacé le fichier, il suffit de
cat > hello.txt
Ubuntu is the
best OS
Puis appuyez 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. Le moyen le plus simple que j'ai trouvé est d'utiliser la commande suivante:
cat /dev/null > hello.txt
Cela supprime allo du contenu du fichier et vous laisse avec un fichier vide sans avoir à l'ouvrir dans un éditeur, sélectionnez du texte, aucun de ces éléments. Plus précisément, il remplace le contenu du fichier par le contenu de "/ dev/null" ou rien. C'est assez lisse, en fait.
Le seul inconvénient est que l'utilisateur avec lequel vous êtes actuellement connecté doit avoir le droit d'écriture sur ledit fichier.
Si un fichier a été créé avec le nom hello.txt et a été fourni avec quelques textes, la commande ci-dessous dans le terminalctrl+alt+t enlèvera 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 une autre de 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 la quantité à conserver, pas seulement zéro:
$ truncate -s 10000 Hello.txt
... tout tronquer après les 10 000 premiers octets. Cela pourrait être utile si un programme devenait fou et sauvegardait plusieurs mégaoctets de données dans un petit fichier journal:
truncate
pour une taille normale supérieure à 10 Ko.vi filename -c ':1,$d' -c ':wq'
a fonctionné le mieux pour moi à cause de la permission particulière qu’il avait
Donc, je vois beaucoup de redirections utilisées pour répondre à cette question;)
Une approche légèrement différente avec le combo: rm & touch
rm hello.txt && touch hello.txt
( ouais ... encore un tricheur! )
Donc, avec cette commande combo , le fichier hello.txt n'a pas été ouvert et vous avez toujours le fichier hello.txt à la place, avec le contenu effacé . Juste comme tu voulais!