Você pode encontrar mais sobre [ digitando man [ no terminal. Esta é uma construção de teste para uso após if , etc. Portanto,
-z STRING
the length of STRING is zero
-e FILE
FILE exists
! EXPRESSION
EXPRESSION is false
-d FILE
FILE exists and is a directory
1) [ -z "$(which ssh)" ] significa testar se "$(which ssh)" é uma cadeia de comprimento zero. $(...) significa executar a parte ... primeiro. Se você executar which ssh em um terminal, verá que ele produzirá o caminho para o executável shh , se existir. Portanto, se isso existir, a cadeia não será de comprimento zero e o teste falhará.
2) ~ é um atalho para o seu diretório pessoal, geralmente localizado em /home/your_user_name . [ -e filename ] significa testar se esse arquivo existe e retornar true, se houver.
3) [ ! -d ~/.ssh ] significa testar se ~/.ssh (provavelmente /home/your_user_name/.ssh ) existe e é um diretório e, se não for , , retornará true.
== EDIT ==
Você deve tentar resolver o problema do homem, porque isso realmente fará avançar seu conhecimento bash. Se man [ não funcionar, tente man test . ( test é sinônimo de [...] .) Se não, aqui está uma versão online .
-w FILE
FILE exists and write permission is granted
Eu realmente acho que você pode ter o caminho errado. Deve ser
[ -w "$1" ]
não
[ "$1" -w ]