Aqui está uma versão com algumas melhorias.
-
Não inclua seu nome de usuário no script, use
~
para se referir ao seu diretório pessoal. -
Armazene o nome do diretório de resultados em uma variável. Isso ilustra como usar uma variável em um script de shell.
-
Faça a parte que remove o resultado de uma pesquisa anterior mais robusta: ela não removerá nada que não seja um link simbólico.
-
O mais importante: sua versão falharia com nomes de arquivos contendo espaços ou alguns caracteres especiais, porque o shell faz algum reparo do resultado de
$(...)
e$file
. Você deve sempre colocar substituições de variáveis entre aspas duplas (ou seja, escrever"$file"
). Minha versão funciona corretamente com todos os nomes de arquivos (exceto se eles contiverem novas linhas, mas isso é inescapável comlocate
).
#!/bin/bash
results_dir=~/Desktop/results
mkdir -p "$results_dir"
find "$results_dir" -type l -exec rm {} +
echo "Please enter some input: "
read -r input_variable
locate "$input_variable" | while read -r line; do
ln -s "$line" "$results_dir/"
done