Execute o comando bash dentro da função fish

1

Eu decidi experimentar o fish shell, e estou tendo problemas com alguns aliases. Então eu acho que a maneira indolor de fazer as coisas seria executar os comandos bash dentro das funções do fish shell. Algo assim:

function fish_function
start bash
    ... bash commands ... 
stop bash
end

Isso é possível?

por exemplo: o comando

pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq) 

não funciona no fish shell e não tenho idéia de como converter isso

    
por tjbrn 04.03.2016 / 19:51

1 resposta

2

Aparentemente fish usa ; and para && e () para substituições de comandos.

Apenas alterando o comando para

pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)

deve funcionar.

Respondendo a pergunta atual, normalmente você pode obter uma declaração para ser executada no Bash simplesmente redirecionando a instrução para STDIN de um comando bash por qualquer meio (observe que estou no Zsh, que suporta aqui strings, e a instrução imprime o conteúdo de uma variável específica do Bash):

% <<<'echo $BASH' bash
/bin/bash

No entanto, como regra geral, sugiro usar a opção bash -c . Por exemplo, aqui strings e pipes não tocam muito bem com vários comandos, aqui os documentos serão expandidos pelo shell atual, etc (no entanto, eles precisam ser suportados pelo shell atual).

No geral, bash -c parece ser sempre uma aposta segura:

bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'

Que para vários comandos se torna algo assim:

bash -c '
command1
command2
command3
'
    
por 04.03.2016 / 20:33

Tags