Por que esses comandos do winepath não funcionam?

0

Eu tentei código de esta questão e por algum motivo eles não funcionam, por que e como consertá-los?

a@ubuntu:~$ echo "#!/bin/sh" > ~/bin/run_linx_program
bash: !/bin/sh": event not found
a@ubuntu:~$ echo "$1 "\'wine winepath -u \"$2\"\'\"" >> ~/bin/run_linx_program
> ?
> ^C
a@ubuntu:~$ 
    
por UAdapter 16.01.2011 / 21:41

4 respostas

2

Corrigi a resposta original (e testei desta vez):

mkdir -p ~/bin/
echo '#!/bin/sh' > ~/bin/run_linx_program
echo '$1 "'wine winepath -u "$2"'"' >> ~/bin/run_linx_program
chmod a+x ~/bin/run_linx_program

Esqueci isso! é interpretado dentro de " s. Eu deveria ter usado ' s. ! inicia uma partida de substituição de histórico e não era isso que eu queria.

    
por Oli 16.01.2011 / 22:03
1

tem um significado especial no bash:

% bl0ck_qu0te%

Há duas maneiras de impedir a expansão do histórico, seja escapando o ! com uma barra invertida ou usando aspas simples:

a@ubuntu:~$ echo "#\!/bin/sh" > ~/bin/run_linux_program
a@ubuntu:~$ echo '#!/bin/sh' > ~/bin/run_linux_program

Em construções complexas, tente evitar o caractere " (aspas duplas) e use o caractere único ( ' ):

echo "$1" '"$(wine winepath -u "'$2'")"' >> ~/bin/run_linux_program

Eu substituí os backticks por $( e ) para deixar a linha mais clara.

    
por Lekensteyn 16.01.2011 / 21:57
1

Esta é uma maneira de fazer as coisas. O primeiro tipo cria um arquivo e grava #!/bin/sh nele, o segundo acrescenta algo ao arquivo.

  • Para conseguir isso funcionar

    1. Crie o diretório bin em seu diretório pessoal, seja no Nautilus ou digitando

      mkdir -p ~/bin
      
    2. Crie um novo arquivo ~/bin/run_linx_program (onde ~ é a abreviação de "seu diretório pessoal") e coloque estas linhas nele:

      #!/bin/bash
      $1 "'wine winepath -u "$2"'"
      

      Você pode criar o arquivo fazendo nano ~/bin/run_linx_program ou pode usar o Editor de Texto.

    3. Execute chmod a+x ~/bin/run_linux_program para tornar o arquivo executável, alternativamente, você pode clicar com o botão direito do mouse no arquivo, abrir as propriedades, ir para Permissões e definir 'executável'.

por Stefano Palazzo 16.01.2011 / 22:04
0

A menos que você realmente use ou precise de expansão de histórico, recomendo apenas desativá-lo adicionando a linha

set +H

no seu ~/.bashrc . Eu fiz isso e estou muito feliz de nunca ser incomodado por event not found mensagens novamente.

Independentemente disso, a expansão de histórico só é ativada para shells interativos, por isso não afeta os scripts.

    
por geirha 20.01.2011 / 20:21