Che cosa significa "parentesi angolari"? [duplicare]

21

Sembra una domanda così semplice, ma non riesco a trovare alcuna risorsa in merito

In C / C ++, significa memorizzare la lettura in un valore dal prompt dei comandi e memorizzarla in una variabile,

Che ne dici di Programmazione shell?

    
posta Computernerd 08.01.2014 - 02:52

5 risposte

43

>> può essere utilizzato per convogliare l'output in un file di testo e si aggiungerà a qualsiasi testo esistente in quel file.

'qualsiasi comando' >> textfile.txt

aggiunge l'output di 'qualsiasi comando' al file di testo.

utilizzando > sovrascriverà.

    
risposta data Antonios Hadjigeorgalis 08.01.2014 - 03:05
11

Il simbolo della parentesi angolare destra (& gt;) viene utilizzato per reindirizzare l'output su un file su disco. Se il file specificato non esiste già, viene creato; se esiste, viene sovrascritto. Il simbolo della parentesi angolare sinistra (& lt;) viene utilizzato per reindirizzare l'input da un file su disco. Per aggiungere l'output a un file esistente, usa le parentesi angolari doppie (& gt; & gt;)

    
risposta data Brask 08.01.2014 - 03:05
7

> e >> sono operatori di reindirizzamento per FD (Descrittori di file)

In bash si hanno FD standard per albero che sono lo standard input (strin), lo standard output (strout) e l'errore standard (strerr). Questi possono anche essere chiamati rispettivamente da FD 0, FD 1 e FD 2.

Normalmente vorresti che tutti gli FD puntassero sul terminale, ma questo può essere cambiato usando il reindirizzamento.

Ad esempio, se chiami:

command > log.txt

Reindirizzare l'output al file log.txt È simile alla chiamata:

command 1> log.txt

Dato che questo solo reindirizza strout sarai ancora in grado di vedere l'errore nel terminale. Per reindirizzare strerr al tuo file log.txt dovrai eseguire:

command 2> log.txt

Ancora una volta, questo reindirizza solo strerr. Se desideri reindirizzare sia stdout che stderr devi duplicare l'output stderr su stdout usando il comando >& .

command 1> log.txt 2>&1

Per capire questo comando devi leggerlo da destra a sinistra, prima viene eseguita una copia di stderr su stdout, quindi lo strout viene reindirizzato al file log.txt.

Quando si usa il reindirizzamento in questo modo, bash non guarderà se il file esiste o no e semplicemente ne creerà uno indipendentemente se ciò implica la cancellazione di quello esistente. Se vuoi evitare di perdere ciò che è già stato scritto nel tuo file di log, puoi usare il comando >> nello stesso modo spiegato sopra, ma in questo caso tutte le uscite saranno aggiunte ai file esistenti.

Per il loro uso in C ++ con cin, cout e cerr penso che l'hash abbia dato una risposta migliore di quella che potevo.

Non sono un esperto di questi, quindi potrei aver sbagliato qualcosa. Per informazioni più complete, ti consiglio di leggere Guida di Bash su Wiki di Greg

    
risposta data Presbitero 09.01.2014 - 02:27
6

In C / C ++:

In C / C ++ gli operatori Spostamento sinistro e destro usano i simboli << e >> come operatore bit a bit; che eseguono operazioni di spostamento su bit. Il C ++ fa anche uso di operatori di spostamento bit a bit sovraccarico in operazioni di Input / Output di base; Le parentesi >> e << in C ++ vengono utilizzate per estrazione e inserimento di dati / informazioni su flussi che possono essere standard di input / output , file.

In Shell Scripting / Programming:

In Shell Scripting / Programming, non molto diverso dalle operazioni di estrazione / inserimento come menzionato sopra, >> / << (varianti di > / < operatori) sono usati per reindirizzare gli flussi standard da / a quelli definiti dagli utenti ed eseguire operazioni di (diverse da > / < che sovrascrivono) .

Riferimenti:

Potresti essere interessato a leggere:

risposta data precise 08.01.2014 - 09:36
0

In uno script di shell l'operatore > creerà un file che verrà messo esattamente a posto e cancellerà ogni contenuto del file se esiste ma >> aggiungerà il testo al file che sarà corretto preferibile >> verrà utilizzato nella scrittura del file di registro. Mi piace aggiungere tempo, contare o alcuni log di processo e > per creare un nuovo file prova questo:

  #!/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  
    
risposta data smn_onrocks 16.01.2014 - 12:48

Leggi altre domande sui tag