Como editar e executar os últimos dois comandos com 'fc' no bash

0

Acabei de saber sobre o fc incorporado ao bash. Eu quero usá-lo para editar e executar os dois comandos anteriores, incluindo o comando mais recente .

Eu posso editar e executar dois comandos até , mas sem incluir o comando mais recente com fc -2 0 . Isso é o que eu quero, exceto o deslocamento de um para incluir o comando mais recente.

Uma solução viável, mas irritante, é examinar a saída de history (ou fc -l ), encontrar os números de comando absolutos e fornecer o intervalo de comando em termos absolutos. Por exemplo, se fc -l -2 gerar o seguinte:

502  echo hello
503  echo goodbye

... então eu poderia dizer fc 502 503 . Isso é o que eu quero, exceto que não quero a etapa extra de examinar a saída do histórico. (Eu sei, sou exigente.)

Existe alguma maneira de fazer isso que não envolva (1) exame manual da história ou (2) um comando descartável para tirar os comandos de interesse do ponto mais recente?

Estou executando GNU bash version 3.2.57 no macOS, pelo que vale a pena.

    
por Jeff Terrell Ph.D. 17.10.2017 / 22:40

2 respostas

1

Seria de esperar que fc -2 -1 funcionasse, mas parece haver confusão entre opções e parâmetros posicionais que começam com - . No entanto, usar o padrão -- para separar as opções dos parâmetros parece oferecer uma solução:

fc -- -2 -1

Observe que as versões de bash anteriores a 4.3. teve outros problemas com o comando fc , incluindo fff. here , onde a seleção da linha do histórico pode estar errada.

    
por 19.10.2017 / 16:48
0

Isso pega o id dos 2 últimos comandos e os executa novamente

fc -l -2 | cut -f1 | fc -s
    
por 18.10.2017 / 15:42