No bash, você poderia escrever uma função de wrapper como essa.
function scp {
if grep -q ':[^ $]' <<< "$*" ; then
command "${FUNCNAME[0]}" "$@"
else
echo "missing or invalid hostname:path in scp command"
return 1
fi
}
Este é um exemplo muito grosseiro, tudo o que ele faz é verificar se há um :
seguido por pelo menos um caractere não espacial na linha de comando (isso é bom o suficiente para um exemplo de prova de conceito, mas inadequado para uso no mundo real). Se houver, ele executará o comando scp
. Caso contrário, imprime uma mensagem de erro e retorna com o código de saída 1.
Ou você pode escrever como um script - isso faz pouca diferença de qualquer forma.
BTW, eu disse "In bash" acima, porque eu só testei a função acima no bash. Não é para implicar que apenas bash pode fazer isso.
A maioria das outras implementações sh permite que você faça o mesmo ou similar. A sintaxe pode variar um pouco, e você pode ter que codificar command scp ...
em vez do genérico command "${FUNCNAME[0]} ..."
.
PS: Eu não faço nenhum julgamento sobre se o scp "deveria" se comportar assim ou não. Isso é para você decidir sobre seu próprio sistema. No entanto, tornar-se dependente de coisas como essa o coloca em uma desvantagem severa quando você tem que trabalhar no sistema sem todos os seus hacks / muletas.