Processamento de linha de comando - tokens e metacaracteres

1

Estou apenas aprendendo sobre processamento de linha de comando e esperando que alguém possa confirmar como estou interpretando a seguinte declaração. No livro que estou lendo, o primeiro passo no processamento da linha de comando é:

  1. Splits the command into tokens that are separated by the fixed set of metacharacters: SPACE, TAB, NEWLINE, ;, (, ), <, >, |, and &. Types of tokens include words, keywords, I/O redirectors, and semicolons

Estou certo em pensar que para o comando:

ls | more

ls e more são os tokens, e o caracter pipe é o meta character que separa os dois tokens?

Eu fiquei um pouco confuso, pois ele diz que < e > são meta characters , mas depois diz que os tokens podem ser I/O directors .

    
por John D 08.10.2015 / 14:51

1 resposta

1

Esta não é uma explicação muito boa. Um token é uma sequência de caracteres que forma um sinal de palavra ou de pontuação. Caracteres como < e | também fazem parte dos tokens. Você pode chamá-los metacaracteres, mas isso não é uma terminologia útil. As regras básicas são:

  • Espaços em branco não fazem parte de um token e separam tokens.
  • Um token é composto de caracteres comuns ou de caracteres do operador ()<>&|; , mas não de ambos. Por exemplo, foo<@a&>b consiste nos tokens foo (ordinário), < (operador), @a (ordinário), &> (operador) e b .

Depois, há regras adicionais sobre aspas: caracteres especiais perdem seu significado se forem citações, com regras diferentes dependendo do tipo de cotação. Por exemplo, foo'&&'bar\|qux é um único token com a seqüência de caracteres foo&&bar|qux .

    
por 09.10.2015 / 03:47

Tags