Caractere especial do script Bash e bug de job em segundo plano

0
gnome-terminal --tab -e "
sh -c '
 gedit'/media/ubuntuman/Onces And for Al/scripts/faceBook' & ;
 sudo cpulimit -e ubuntu-tweak -l 80;'"

Esta é a parte do código que quero editar. O caractere especial ' (aspas simples) em sh -c entrará em conflito com a aspa simples de gedit , como posso resolvê-lo?

Eu também acho que se eu executar o primeiro trabalho em segundo plano, o terminal não executa o segundo trabalho de sudo cpulimit bla bla ... Por quê?

    
por Ahmed Zain El Dein 16.09.2014 / 11:14

2 respostas

1

Por favor, tente o seguinte comando, ele deve iniciar os dois trabalhos:

gnome-terminal --tab -e "
sh -c '
 (gedit /media/ubuntuman/Onces\ And\ for\ Al/scripts/faceBook &) ;
 sudo cpulimit -e ubuntu-tweak -l 80;'"

Os parênteses denotam um subshell no bash. Para citar a página man:

   (list) list is executed in a subshell environment (see  COMMAND  EXECU‐
          TION  ENVIRONMENT below).  Variable assignments and builtin com‐
          mands that affect the  shell's  environment  do  not  remain  in
          effect  after  the  command completes.  The return status is the
          exit status of list.
    
por Sylvain Pineau 16.09.2014 / 11:48
0

Como você não está usando nenhum caractere especial (isto é, especial para o shell) no nome do arquivo, e como você não está enviando nenhum outro comando, é possível usar a opção -x e omitir as citações que o cercam. o shell:

gnome-terminal --tab -x bash -c \
   'gedit "/media/ubuntuman/Onces And for Al/scripts/faceBook" & \
    sudo cpulimit -e ubuntu-tweak -l 80'

Observe que & não precisa ser seguido por ; .

    
por muru 16.09.2014 / 12:11