fish 함수에서 bash 명령 실행

fish 함수에서 bash 명령 실행

Fish Shell을 사용해 보기로 결정했지만 일부 별칭을 사용하는 데 문제가 있습니다. 그래서 가장 쉬운 방법은 Fish 쉘 함수에서 bash 명령을 실행하는 것입니다. 이 같은:

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

그게 가능합니까?

예: 명령

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

Fish Shell에서는 작동하지 않으며 변환하는 방법을 모르겠습니다.

답변1

확실히; and물고기는 명령 대체 &&에 사용됩니다 ().

따라서 명령을 다음으로 변경하십시오.

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

작동해야합니다.


실제 질문에 답하기 위해 일반적으로 bash어떤 방법으로든 명령의 STDIN으로 리디렉션하여 Bash에서 실행될 명령문을 얻을 수 있습니다. 여기서는 문자열을 지원하는 Zsh를 사용하고 있으며 명령문은 Bash의 내용을 인쇄합니다. 특정 변수):

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

그러나 일반적으로 bashs -c옵션을 사용하는 것이 좋습니다. 예를 들어, 여기의 문자열과 파이프는 여러 명령을 잘 처리하지 못하고, 여기의 문서는 현재 셸에 의해 확장됩니다(단, 현재 셸의 지원이 필요함).

전반적으로 bash -c항상 안전한 내기인 것 같습니다.

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

여러 명령의 경우 다음과 같습니다.

bash -c '
command1
command2
command3
'

관련 정보