Você sempre pode passar seus comandos como argumentos para bash .
Alguns exemplos de trabalho:
bash -c "rm -fR /some/dir/to_delete; mkdir /hello; touch /hello/foo.bar"
Isso deve funcionar para excluir /some/dir to delete , em seguida, criar dir /hello e gravar baz no arquivo /hello/foo.bar :
bash -c 'rm -fR "/some/dir to delete"; mkdir "/hello"; echo "baz" > "/hello/foo.bar"'
Isso não funcionará corretamente:
Tenha cuidado com as aspas, isso quebrará as coisas porque o comando quoting error será rm -fR "/some/dir/to e tudo o mais será ignorado ( ou para ser mais preciso delete"; mkdir /hello" será expandido se $0 for usado dentro do comando ):
bash -c "rm -fR "/some/dir/to delete"; mkdir /hello"
^-------^ ^
quoted part unquoted whitespace here
E aqui está outra coisa para mencionar. Se você quiser que ~ se expanda como diretório pessoal e o caminho do seu arquivo possa conter espaços em branco precisam ser citados , isso não funcionará. O arquivo ~/hello world.tmp não é criado no lugar certo, mas tenta encontrar o diretório denominado ~ do diretório de trabalho atual qualquer que seja e criar o arquivo aqui, entretanto ~/level2.ls é criado no diretório home:
bash -c 'echo "Hello World" > "~/hello world.tmp"; cd /; ls * > ~/level2.ls;'
^
fully quoted filename prevents ~ from expanding
Em vez disso, você deve usar aspas desse modo para permitir ~ expandindo:
bash -c 'echo "Hello World" > ~/"hello world.tmp"; cd /; ls * > ~/level2.ls;'
^
now ~ is not quoted at all
Aqui está a linha para o seu caso:
A strong citação de ' é necessária para o caractere especial * , se não for ignorado, expandirá muito cedo.
bash -c 'cd "/home/seraex/MyDoc"; rm -f MyDoc.tgz; tar -czf MyDoc.tgz *'
OU se você quiser usar mais geral ~ como home dir, use isso:
bash -c 'cd ~/"MyDoc"; rm -f MyDoc.tgz; tar -czf MyDoc.tgz *'
Portanto, esta é apenas uma maneira possível de fazer o que você precisa, pode ou não funcionar diretamente também (sem bash -c e aspas exteriores). Pelo menos com o launcher do KDE 4, ele irá lidar com o comando cd ~/"MyDoc"; rm -f MyDoc.tgz; tar -czf MyDoc.tgz * sem nenhum problema. No entanto, outros exemplos devem funcionar com qualquer ativador que permita especificar argumentos para o programa e o comportamento ainda depende de muitas coisas e, pelo menos, você pode querer verificar se quaisquer caracteres especiais são expandidos no momento certo.
Eu não testei isso e não posso fazer isso agora porque respondi com meu telefone, mas ele deve funcionar bem. Agora testei e posso confirmar que funciona bem