Fish 별칭에서 별칭이 아닌 명령에 액세스

Fish 별칭에서 별칭이 아닌 명령에 액세스

별칭 내에서 별칭이 없는 명령 버전에 어떻게 액세스할 수 있나요? Bash에서는 alias ls='\ls -l'이 별칭 내의 비별칭 액세스와 같은 작업을 수행할 수 있습니다 . 물고기에게 어떻게 이런 일을 할 수 있나요?lsls

지금은 env이 명령을 사용하여 실행 파일을 가져오고 있는데 더 좋은 방법이 있습니까? alias man='PAGER="bat -p" /usr/bin/env man'

답변1

간단한 상황에서는 물고기가 alias스스로 알아낼 것입니다.

이렇게 하면 alias ls='ls -l'다음과 같은 기능이 생성됩니다.

 function ls --description 'alias ls=ls -l'
     command ls -l $argv
 end

왜냐하면

  1. Fish는 alias기능을 정의하는 싸구려 래퍼입니다.
  2. 이름으로 명령을 호출하고 함수를 건너뛰고 내장 명령을 사용하는 방법은 다음과 같습니다.command

그래서 당신은 할 수 있습니다

alias man='PAGER="bat -p" command man'

(마찬가지로 builtin foo내장된 "foo"를 호출하면 모든 기능을 건너뜁니다.)

이 특정한 경우에 가장 좋은 해결책은 별칭을 완전히 건너뛰고 $MANPAGER를 설정하는 것입니다.

set -gx MANPAGER "bat -p"

또한 함수를 직접 정의하여 Fish 별칭 관련 문제를 방지할 수 있습니다.

function man
     PAGER="bat -p" command man $argv
end

또는 사용약어대신에.

관련 정보