Quelle est la différence entre «>» et «>>»?

12

Quelle est la difference entre ls >et ls >>? J'ai besoin de comprendre cela pour mon calcul GCSE mais je ne sais pas quelle est la différence.

Helen Schofield
la source
1
En plus de la bonne réponse ci-dessous, veuillez consulter la 2e réponse (et la plus élevée) sur stackoverflow.com/a/984761/1841533: l'utilisation de >> pour écrire dans un fichier (ex: un journal) a également l'effet secondaire agréable de les caractères "Nul" n'apparaissent pas au début du fichier saif si le fichier est tronqué pendant que le processus y écrit encore! (ex: pendant la rotation du fichier journal). Parce que "foo> file" ne cherche pas, il ne remarque pas le changement de taille et pointe toujours plus loin que le début, et le système d'exploitation remplit Nul. foo >> file cherche et pointe donc vers la nouvelle position (le début).
Olivier Dulac
Puisqu'il s'agit d'une question éducative, je vous suggère d'apprendre à travailler avec la documentation pertinente: Manuel de référence Bash, section «Redirection» (également accessible via man bash).
David Foerster

Réponses:

28

>& >>sont des opérateurs de redirection; ils transfèrent la sortie de quelque chose, dans ce cas ls, ailleurs. Si cette sortie va dans un fichier, >tronquera le fichier - c'est-à-dire supprimera tout contenu précédent, tandis que >>ajoutera de nouvelles données à la fin du fichier, en conservant le contenu précédent. Cela fonctionnera avec n'importe quelle entrée, donc echo& cat, par exemple, peut également être utilisé de cette façon.

L' |opérateur est également intéressant , qui transmet les données à une autre application - ls | cat -nvous donnera donc une liste numérotée!

Pipes est le terme pertinent.

Mark Williams
la source
2
Tronquer ou écraser?
DK Bose,
2
@DKBose de stracesortie pour bash -c 'echo a > blah': open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666), donc tronquer serait le terme exact.
muru
"tuyaux" et aussi "redirection de sortie", que vous utilisez en quelque sorte dans votre réponse. Bien joué.
0xSheepdog
trouvé ce que je voulais dire: en plus de cette belle réponse, veuillez voir la 2e réponse (et la plus appréciée) sur stackoverflow.com/a/984761/1841533 : utiliser >>pour écrire dans un fichier (ex: un journal) a aussi le côté agréable effet à pas avoir les caractères « NUL » apparaissent au début du fichier saif si le fichier est tronqué alors que le processus encore écrire à elle! (ex: pendant la rotation du fichier journal). Parce que "foo> file" ne cherche pas, il ne remarque pas le changement de taille et pointe toujours plus loin que le début, et le système d'exploitation remplit Nul. foo >>filecherche et indique donc la nouvelle position (le début).
Olivier Dulac
5

Les symboles >et >>sont utilisés pour rediriger la sortie vers un fichier.

Les deux créeront le fichier s'il n'existe pas. Si le fichier existe déjà, alors >il écrasera le fichier où >>et ajoutera les données au fichier.

Ainsi ls > myfileva créer un document nommé myfiles'il n'existe pas. S'il myfileest déjà présent et contient des données, il sera alors remplacé par les nouvelles données que vous lui aurez transmises.

Alors que ls >> myfileva créer un fichier s'il n'existe pas et y écrire des données. Si le fichier existe avec certaines données, de nouvelles données sont ajoutées à sa fin.

Sudheer
la source
0

SI vous utilisez un seul>, il écrasera le fichier s'il existe déjà. Soyez très prudent lorsque vous utilisez celui-ci.

Si vous utilisez deux >>, il s'ajoutera simplement (en d'autres termes, commencez à écrire au bas du fichier) s'il existe déjà. Sinon, il crée un nouveau fichier s'il n'existe pas.

Eric Larson
la source
1
Pourquoi répéter une réponse déjà donnée?
Rendez-vous