Alt - Seta para cima fornece o último argumento do comando anterior. Subseqüente empurra ciclo através de argumentos anteriores.
Eu não encontrei um equivalente satisfatório para !!
, exceto Acima então Ctrl - A
Estou usando o bash há uma década ou mais e me acostumei a digitar $ $ para repetir o último argumento, por exemplo:
$ mkdir foo
$ cd !$
cd foo
(Essa última linha é impressa pelo shell para informar a que seu comando foi avaliado). Da mesma forma eu frequentemente ao seguinte:
$ make_sandwich
-bash: make_sandwich: Permission denied
$ sudo !!
sudo make_sandwich
Eu realmente estou gostando da casca de peixe, mas minha memória muscular está bem estabelecida. Existe um equivalente em peixe? Posso configurar o fish para usar os mesmos comandos?
sudo !! (ou sudo bang bang) é um dos meus comandos mais usados. Eu ainda estou usando apenas bash simples que tem tudo bem. Desculpe ouvir que o peixe não o implementa corretamente. Um pouco de googling e achei isso:
function sudo
if test "$argv" = !!
eval command sudo $history[1]
else
command sudo $argv
end
end
Existem muito mais opções disponíveis no tópico: link
Eu encontrei essa resposta perfeita na lista de usuários de peixes :
function bind_bang
switch (commandline -t)[-1]
case "!"
commandline -t $history[1]; commandline -f repaint
case "*"
commandline -i !
end
end
function bind_dollar
switch (commandline -t)[-1]
case "!"
commandline -t ""
commandline -f history-token-search-backward
case "*"
commandline -i '$'
end
end
function fish_user_key_bindings
bind ! bind_bang
bind '$' bind_dollar
end
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 !!
Eu tive o mesmo problema que você e corrigi usando oh-my-fish
(é um gerenciador de plugins para fish
shell) link . Você pode instalá-lo com este comando:
curl -L https://get.oh-my.fish | fish
Em seguida, instale o plug-in bang-bang
com este comando:
omf install bang-bang
Tags command-line bash fish shell