O que significa ou colchetes angulares duplos? [duplicado]

21

Parece uma pergunta tão simples, mas não encontro nenhum recurso em relação a ela

Em C / C ++, significa armazenar a leitura em um valor a partir do prompt de comandos e armazená-la dentro de uma variável,

Que tal na Programação Shell?

    
por Computernerd 08.01.2014 / 02:52

5 respostas

44

>> pode ser usado para canalizar a saída em um arquivo de texto e será anexado a qualquer texto existente nesse arquivo.

'qualquer comando' >> textfile.txt

acrescenta a saída de "qualquer comando" ao arquivo de texto.

usando > irá sobrescrever.

    
por Antonios Hadjigeorgalis 08.01.2014 / 03:05
11

O símbolo de colchete angular direito (>) é usado para redirecionar a saída para um arquivo de disco. Se o arquivo especificado ainda não existir, ele será criado; se existir, será sobrescrito. O símbolo do colchete angular esquerdo (<) é usado para redirecionar a entrada de um arquivo de disco. Para anexar a saída a um arquivo existente, use dois colchetes angulares direitos (> >)

    
por Brask 08.01.2014 / 03:05
7

Os > e >> são operadores de redirecionamento para FDs (descritores de arquivo)

No bash você tem FDs padrão de árvore que são a entrada padrão (strin), a saída padrão (strout) e o erro padrão (strerr). Estes também podem ser chamados por FD 0, FD 1 e FD 2, respectivamente.

Normalmente você teria todos os FDs apontando para o terminal, mas isso pode ser alterado usando o redirecionamento.

Por exemplo, se você ligar:

command > log.txt

Você redirecionará a saída para o arquivo log.txt Isto é semelhante a chamar:

command 1> log.txt

Como isso redireciona apenas o strout, você ainda poderá ver o erro no terminal. Para redirecionar o strerr para o seu arquivo log.txt, você terá que executar:

command 2> log.txt

Novamente, isso redireciona apenas o strerr. Se você deseja redirecionar stdout e stderr, é necessário duplicar a saída do stderr para stdout usando o comando >& .

command 1> log.txt 2>&1

Para entender este comando, você precisa lê-lo da direita para a esquerda, primeiro uma cópia do stderr é feita para stdout e, em seguida, o strout é redirecionado para o arquivo log.txt.

Quando você usa o redirecionamento desta maneira, o bash não irá procurar se o arquivo existe ou não e simplesmente criar um, independentemente de isso implicar o apagamento do existente. Se você quiser evitar perder o que já foi escrito em seu arquivo de log, você pode usar o comando >> da mesma maneira explicada acima, mas nesse caso todas as saídas serão anexadas aos arquivos existentes.

Para seu uso em C ++ com cin, cout e cerr, acho que o hash deu uma resposta melhor do que eu poderia.

Eu não sou especialista nisso, então talvez eu tenha entendido algumas coisas erradas. Para uma informação mais completa, aconselho a leitura do Guia Bash sobre o Wiki de Greg

    
por Presbitero 09.01.2014 / 02:27
6

Em C / C ++:

Em C / C ++, os operadores Esquerda e Direita Shift usam os símbolos << e >> como o operador bit a bit; que realizam operações de deslocamento em bits. O C ++ também faz o uso de operadores de deslocamento bit a bit sobrecarregados em operações básicas de Entrada / Saída; >> e << colchetes em C ++ são usados para extração e inserção de dados / informações para fluxos que podem ser entrada / saída padrão , arquivos.

Em Shell Script / Programação:

Em Shell Scripting / Programming, não muito diferente das operações de extração / inserção como mencionado acima, o >> / << (variantes de > / < operadores) são usados para redirecionar fluxos padrão de / para aqueles definidos por usuários e executar operações (diferentemente de > / < que sobrescrevem) .

Referências:

Você pode estar interessado em ler:

por precise 08.01.2014 / 09:36
0

No script de shell, o operador > criará um arquivo que você colocará corretamente e apagará todo o conteúdo do arquivo se existir mas o >> irá anexar o texto ao arquivo que será correto preferível >> usará ao escrever o arquivo de log. como você deseja adicionar tempo, contagem ou alguns logs de processo e > para criar um novo arquivo. Experimente:

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