Significado dos seguintes comandos linux

1
cat "$1" > /tmp/file.$$   2>/tmp/file0.$$
grep "*"  /tmp/file.$$    >/tmp/file0.$$

Eu entendi que no comando cat , se ocorrer um erro, o erro será mostrado em file0.$$ e, se não ocorrer, o conteúdo será mostrado em file.$$ . O que eu não entendo é o que é $1 .

Além disso, o que está acontecendo no comando grep .

    
por user50027 27.10.2013 / 06:35

2 respostas

3

O "$ 1" é o primeiro argumento do seu script:

bash your_script argument_1 argument_2 ... 

Em seguida, $1 será igual ao valor de argument_1 . É uma boa prática colocá-lo entre aspas duplas para obter o valor real do argumento (o shell irá ignorar a interpretação dos caracteres especiais no argumento, se houver algum).

    
por 27.10.2013 / 10:30
3

cat

O primeiro comando despeja a saída do que eu diria ser um arquivo, "$1" em dois arquivos. A saída para STDOUT vai para /tmp/file.$$ e a saída para STDERR vai para /tmp/file0.$$ . O $$ à direita é o ID do processo deste script quando está em execução.

O "$1" é um argumento de linha de comando ( arg1 ) que está sendo passado para esse script, como:

 $ script arg1 arg2

grep

Esta linha encontra todas as linhas que contêm uma estrela (" * ") no arquivo /tmp/file.$$ e as grava em /tmp/file0.$$ .

    
por 27.10.2013 / 06:52