fish: sudo: !!: comando não encontrado

5

Eu tenho peixe instalado no meu Linux Mint DE. Eu realmente gosto de como o peixe facilita as coisas e parece tão bonito, embora eu não tenha encontrado uma resposta correta sobre por que não posso executar:

sudo: !!: command not found

No começo eu tentei escapar dos sinais de exclamação com o sudo !! mas também não funcionou. Alguém sabe por que isso está falhando?

    
por VaTo 13.10.2015 / 02:03

3 respostas

4

Eu não encontrei um substituto interno para !! em Fish, mas você pode escrever uma função que permita que você continue usando !!

Extraído desta resposta link

function sudo
    if test "$argv" = !!
    eval command sudo $history[1]
else
    command sudo $argv
    end
end
    
por 21.04.2016 / 10:07
10

A sintaxe !! faz parte do recurso de substituição de histórico bash, que o peixe não implementa. Veja este link para uma discussão. Por favor, sinta-se à vontade para pesar sobre o que você acha que os peixes deveriam fazer.

A substituição mais eficiente (em termos de pressionamento de tecla) para sudo !! é a seta para cima para recuperar o último item do histórico, ctrl-A para ir para o início da linha e, em seguida, digite sudo.

    
por 13.10.2015 / 03:16
1

Se você usar !! apenas no contexto de sudo !! , poderá definir uma atalhos de teclado para ^s (CTRL + s) que prepends sudo ao seu comando:

function prepend_command
  set -l prepend $argv[1]
  if test -z "$prepend"
    echo "prepend_command needs one argument."
    return 1
  end

  set -l cmd (commandline)
  if test -z "$cmd"
    commandline -r $history[1]
  end

  set -l old_cursor (commandline -C)
  commandline -C 0
  commandline -i "$prepend "
  commandline -C (math $old_cursor + (echo $prepend | wc -c))
end

Isso permite digitar qualquer comando e prefixar o sudo durante a digitação ou, como no seu caso, como uma substituição de sudo !!

Veja o comentário da Ahti sobre a discussão do github

    
por 11.05.2016 / 13:38