Eu sei para que >>
serve, ele grava todas as mensagens em um arquivo em vez de na tela. E eu acho <<
que reverter, eu tento e recebo uma mensagem:<< was unexpected at this time.
Por favor, diga-me o que é <<
usado e como usar.
fonte
Eu sei para que >>
serve, ele grava todas as mensagens em um arquivo em vez de na tela. E eu acho <<
que reverter, eu tento e recebo uma mensagem:<< was unexpected at this time.
Por favor, diga-me o que é <<
usado e como usar.
O shell padrão de comando do Windows - cmd.exe
- não usa o <<
operador em tudo .¹
Um único <
significa "ler arquivo na entrada padrão " para cmd.exe
, mas dois <
caracteres consecutivos não fazem sentido cmd.exe
, portanto, fornece o erro que você recebeu.
O <<
operador é significativo para todos os principais tipos de shell de comando do Unix , onde é usado para os documentos aqui : ²
$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
Essas três linhas são enviadas para some-command
sua entrada padrão.
Isso é útil para enviar muito texto em um comando sem gravá-lo em um arquivo primeiro, como você faria com o <
operador. Eu freqüentemente o uso para incorporar uma mensagem de "uso" em um script:
#!/bin/sh
if [ -z "$1" ]
then
cat <<USAGE
usage: myscript <files...>
Grobbles the foobie for all files given on the command line.
USAGE
exit 1
fi
# ... do something with command line arguments
Isso é melhor do que escrever echo
várias instruções, pois o texto do heredoc é formatado exatamente como é impresso na tela. Além disso, é mais fácil lidar com espaço em branco, cotação, redirecionamento e interpolação de variáveis nesse contexto. Observe, por exemplo, que usei colchetes angulares na mensagem de uso sem precisar fazer nada inteligente para impedir que o shell tente usá-los para o redirecionamento de E / S.
Se você quiser fazer coisas assim no Windows, poderá instalar o Cygwin e usar uma de suas conchas. Se você estiver no Windows 10, poderá usar o WSL .
Notas de rodapé:
Esse link vai para a árvore de documentação arquivada do Windows XP. A Microsoft quebrou o link que eu estava usando anteriormente quando arquivaram esses documentos. Portanto, caso o quebrem novamente, aqui está uma referência de backup de terceiros.
O único outro cmd.exe
material de referência que conheço no microsoft.com é o PDF de comandos do Windows (4,9 MB, 948 páginas), que pouco mais do que fornece uma referência para a maioria (!) Dos comandos externos internos e fornecidos pela Microsoft você pode dar no cmd
prompt. Este PDF está incompleto em duas bases. Primeiro, e mais relevante aqui, não há discussão combinada de como o redirecionamento funciona no cmd.exe
shell; não há sequer uma discussão sobre gramática de shell. Em segundo lugar, a lista de comando do PDF é incompleta: a primeira coisa que aconteceu com a seleção não está coberto: diskpart
.
Eu acredito que tudo isto decorre claras tentativas da Microsoft para substituir cmd.exe
com PowerShell , que vêm acontecendo há muitos anos. Na atualização mais recente do Windows 10, até o momento em que este artigo foi escrito, eles tomaram outras medidas para ocultar a existênciacmd.exe
, embora ainda não tenha desaparecido completamente.
Vale ressaltar que o PowerShell também não oferece suporte a um <<
operador de redirecionamento . Nem - em uma triste regressão dos dois shells do Unix e cmd.exe
- ele suporta <
redirecionamento!
A maneira canônica de iniciar um documento aqui é como escrevi acima, sem espaço entre a <<
palavra delimitadora e a. Minha lembrança difusa é que todos os usos dos documentos aqui que eu vi nos scripts de shell também são feitos dessa maneira. A especificação POSIX para documentos aqui também usa esse estilo em seus exemplos.
No entanto, uma leitura cuidadosa de outras partes da especificação POSIX.1-2008 revela que é legal colocar algum número de caracteres de espaço ou tabulação entre a <<
palavra delimitadora e a. Em particular, ver o reconhecimento simbólico regras 7 e 10 , a definição de io_here
em gramática shell , e a definição de o "blank" classe de personagem .
É assim que você documenta um shell. Faça anotações, Microsoft. ;)
Testando aqui no Bash 4 e ksh93
confirma que isso funciona conforme o esperado.
Existe
>
e ,>>
somente<
, não há<<
Fonte: http://ss64.com/nt/syntax-redirection.html
fonte
>
grava em um novo arquivo.>>
anexa a um arquivo<
lê de um arquivo|
envia uma saída de comandos para a entrada de outro comandoVeja aqui para obter uma lista . Digitar% ^ into cmd.exe é um ovo de páscoa do Windows?
Desde que foi publicado, este foi adicionado.
fonte