Diferença na sintaxe do comando de localização

2

Olhando para o comando find, estou curioso para saber qual é a diferença entre os dois:

find -type f

e

find ${1} -type f

Ambos parecem executar a mesma função, então qual é o ${1} ?

    
por J Telep 30.08.2017 / 18:58

3 respostas

2

Este ${1} não tem nada a ver com o find, é um parâmetro do shell.

Se o segundo comando find for executado dentro de um script de shell, por exemplo, seu test.sh é como:

#!/bin/bash
find ${1} -type f

Então, se você chamar isso test.sh com

./test.sh cica

Em seguida, o cica será substituído pelo shell na linha de comando find . O comando find verá um

find cica -type f

.. e assim será executado (assim, ele procurará arquivos no diretório cica e não no diretório atual).

p. Uma vez em nossas vidas, todos nós devemos ler o manual de bash , ls , cp e strace .

    
por 30.08.2017 / 19:05
2

Como @DopeGhoti mencionou, $ {1} (ou $ 1) é o primeiro argumento para um script ou função.

Eu suspeito que o código que você está questionando é parte de uma função que se parece com isso:

#/bin/bash
function show {
    find ${1} -type f -print
}
show        #...find with current directory as starting point...
show mydir  #...find using 'mydir' as starting point...

Ou seja, se nenhum argumento estiver presente quando a função for chamada, ${1} estará vazio e find -type f... será executado.

    
por 30.08.2017 / 19:42
1

${1} (ou $1 ) é o primeiro argumento para um script ou função. O comando que você chama em sua pergunta provavelmente está em um script. Para um exemplo muito básico:

#!/bin/bash
find "${1}" -type f

Se esse arquivo foi salvo como um executável seek.sh e você executou o comando ./seek.sh /home , o comando que seria executado é find "/home" -type f .

    
por 30.08.2017 / 19:05