O que essa sintaxe significa?

15

Eu sou novo no terminal e estou tentando aprender como usá-lo.

O que essas linhas fazem? E como eles funcionam?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"
    
por Unknown person 07.02.2017 / 08:23

3 respostas

74
$ type echo
echo is a shell builtin

significando que o comando echo é parte do próprio programa bash (assumindo que você usa o bash)

-n é uma opção, então vamos ver o que ele faz

$ help echo
Write arguments to the standard output
...
-n  do not append a newline

Então, quando corremos a linha:

zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$ 

Hmm que não parece muito bom, porque não há nova linha após o texto impresso. Nós vamos voltar a isso.

$ type date
date is /bin/date

ah, então o comando date é um programa separado. O que isso faz?

$ man date
Display the current time in the given FORMAT, or set the system date.

Os caracteres após o comando date são opções de formato (que devem ser precedidas por + ) - partes diferentes da data são especificadas (por exemplo %A é o nome completo do dia da semana - consulte o resto de man date para a lista completa de opções)

$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017

Então, se colocarmos os comandos juntos em um script e, em seguida, executarmos o script, obteremos

Today's date is: Tuesday, February 7, 2017

Nice! Se você quiser o mesmo efeito em um terminal, você pode usar um ponto-e-vírgula para separar os dois comandos em vez de uma nova linha:

$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017
    
por Zanna 07.02.2017 / 08:48
10

Você deve começar com páginas de manual, o comando man . Basta digitar man <command> para obter informações sobre um <command> . Navegar em man não é muito intuitivo, mas há muitos guias para isso, por exemplo, o link .

Partes relevantes de man echo e man date :

echo

echo [SHORT-OPTION]... [STRING]...

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

Portanto, ele imprime a string e não vai para a nova linha depois disso (que é o comportamento padrão), então a saída do próximo comando será impressa no lado direito da string ecoada.

data

date [OPTION]... [+FORMAT]

FORMAT controls the output.  Interpreted sequences are:

%A     locale's full weekday name (e.g., Sunday)

%B     locale's full month name (e.g., January)

%d     day of month (e.g., 01)

%Y     year

By default, date pads numeric fields with zeroes.  The following optional flags may follow '%':

-      (hyphen) do not pad the field

Espero que esteja claro. Sinta-se à vontade para perguntar se não.

    
por Melebius 07.02.2017 / 08:36
4
echo -n "Today's date is: "

Ela será impressa: a data de hoje é:

date +"%A, %B %-d, %Y"

Será impresso algo assim: terça-feira, 7 de fevereiro de 2017

Conselho :

  1. use o comando man ou --help para saber mais sobre outros comandos.
    por exemplo:

    man echo
    echo --help
    
  2. Tente esses desafios os desafios são realmente bons para ajudá-lo a aprender a fazer as coisas no terminal.

por Avi 07.02.2017 / 09:42