web-dev-qa-db-fra.com

Qu'est-ce que >> ou double angle?

Cela semble être une question simple, mais je ne trouve aucune ressource à ce sujet.

En C/C++, cela signifie stocker la lecture dans une valeur de la commande Invite et la stocker dans une variable,

Qu'en est-il de la programmation shell?

25
Computernerd

>> peut être utilisé pour canaliser la sortie dans un fichier texte et sera ajouté à tout texte existant dans ce fichier.

'n'importe quelle commande' >> textfile.txt

ajoute le résultat de 'any command' au fichier texte.

utiliser > écrasera.

47

Le symbole de crochet (>) est utilisé pour rediriger la sortie vers un fichier sur disque. Si le fichier spécifié n'existe pas déjà, il est créé. s'il existe, il est écrasé. Le symbole du crochet angulaire gauche (<) est utilisé pour rediriger l’entrée d’un fichier sur disque. Pour ajouter la sortie à un fichier existant, utilisez des crochets doubles (>>)

11
Brask

Les > et >> sont des opérateurs de redirection pour les FD (descripteurs de fichiers)

En bash, vous avez des FD standard sous forme d'arborescence qui sont l'entrée standard (strin), la sortie standard (strout) et l'erreur standard (strerr). Ceux-ci peuvent également être appelés respectivement par FD 0, FD 1 et FD 2.

Normalement, vous voudriez que tous les FD soient dirigés vers le terminal, mais cela peut être modifié en utilisant la redirection.

Par exemple, si vous appelez:

command > log.txt

Vous allez rediriger la sortie vers le fichier log.txt. Cela revient à appeler:

command 1> log.txt

Comme cela ne fait que rediriger strout, vous pourrez toujours voir l'erreur dans le terminal. Afin de rediriger strerr vers votre fichier log.txt, vous devrez exécuter:

command 2> log.txt

Encore une fois, cela ne fait que rediriger strerr. Si vous souhaitez rediriger stdout et stderr, vous devez dupliquer votre sortie stderr sur stdout à l'aide de la commande >&.

command 1> log.txt 2>&1

Pour comprendre cette commande, vous devez la lire de droite à gauche. Tout d’abord, une copie de stderr est créée sur stdout, puis strout est redirigée vers le fichier log.txt.

Lorsque vous utilisez la redirection de cette manière, bash ne cherchera pas si le fichier existe ou pas, mais en créera simplement un, que cela implique d'effacer le fichier existant ou non. Si vous voulez éviter de perdre ce qui a déjà été écrit dans votre fichier journal, vous pouvez alors utiliser la commande >> de la même manière que celle décrite ci-dessus, mais dans ce cas, toutes les sorties seront ajoutées aux fichiers existants.

Pour leur utilisation en C++ avec cin, cout et cerr, je pense que hash a donné une meilleure réponse que moi.

Je ne suis pas un expert dans ce domaine, alors je me suis peut-être trompé. Pour des informations plus complètes, je conseille de lire Guide Bash sur le wiki de Greg

7
Presbitero

En C/C++:

En C/C++, les opérateurs à décalage gauche et droit utilisent les symboles << et >> en tant qu’opérateur au niveau du bit; qui effectuent des opérations de décalage sur des bits. C++ utilise également des opérateurs de décalage binaire surchargés dans les opérations d'entrée/sortie de base; >> et << en C++ sont utilisés pour l'extraction et l'insertion de données/information to diffuse des flux qui peuvent être des fichiers d'entrée/sortie standard.

Dans Shell Scripting/Programming:

Dans Shell Scripting/Programming, pas très différent des opérations d'extraction/insertion mentionnées ci-dessus, le >>/<< (variantes de l'opérateur >/<) sont utilisés pour rediriger les flux standard de/vers ceux définis par les utilisateurs et effectuer ajout de (différent de >/< qui écrase) opérations.

Références:

Vous pourriez être intéressé à lire:

6
precise

Dans le script Shell, l'opérateur > créera un fichier que vous y placerez exactement et effacera tout le contenu du fichier s'il existe, mais le >> ajoutera le texte au fichier qui lui sera préférable. >> sera utilisé par écrit fichier journal. comme vous voulez ajouter du temps, compter ou certains journaux de processus et > pour créer un nouveau fichier essayez ceci:

  #!/bin/bash
  nowt=$(date +"%T")
  date1=$(date +"%s")
  NOW=$(date +"%d-%m-%Y")
  now=$NOW" "$nowt
  file_name=$NOW"_"$nowt".log"
  echo "START TIME WAS :$now " | cat > /home/user/Desktop/$file_name
  sh some_sh_file you want to run  2>&1 | tee >> /home/user/Desktop/$file_name #want to log the out put
  nowt=$(date +"%T")
  date2=$(date +"%s")
  NOW=$(date +"%d-%m-%Y")
  now=$NOW" "$NOW
  diff=$(($date2-$date1))
  echo "$(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed."
  echo "END TIME WAS :$now" | cat >> /home/user/Desktop/$file_name
  echo "$(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed." | cat >> /home/user/Desktop/$file_name  
0
smn_onrocks