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