물고기: 별칭의 공백

물고기: 별칭의 공백

공백이 포함된 디렉터리의 실행 파일에 별칭을 추가하려고 합니다. 예를 들어:

alias myfile="/home/ben/test case/myfile"

이제 이것은 내가 원하는 방식으로 확장되지 않습니다( /home/ben/test실행 파일이라고 생각합니다). Bash에서는 추가 따옴표를 추가할 수 있습니다.

alias myfile="'/home/ben/test case/myfile'"

불행히도 이것은 물고기에서는 작동하지 않습니다. 나는 무엇을 해야 합니까?

답변1

물고기의 다른 이름그냥 포장지내장 기능, 이는 POSIX 쉘과의 이전 버전과의 호환성을 위해 존재합니다. 작동 alias하지 않았습니다fishPOSIX 별칭.

POSIX에 해당하는 것을 원한다면 alias사용해야합니다약어, 에 추가되었습니다.피쉬 2.2.0:

abbr -a myfile "'/home/ben/test case/myfile'"

또는:

abbr -a myfile "/home/ben/test\ case/myfile"

답변2

이 답변은 댓글 영역에서 이동되었습니다.

물고기 alias는 순진하다기능이 이름(및 )을 사용하여 함수를 생성하는 데 익숙해지기 위해 eval버그가 있다는 것은 놀라운 일이 아닙니다. 내 생각에는 물고기 함수를 작성하는 방법을 배우는 것이 좋을 것 같습니다.

주어진 예에서는 다음 줄로 변환됩니다 eval.

function myfile --wraps /home/ben/test; /home/ben/test case/myfile $argv; end

따라서 alias myfile="'/home/ben/test case/myfile'"다음과 같은 어리석은 출력을 제공하므로 사용하는 것도 도움이 되지 않습니다. --wraps 'home/ben/test; '/home/ben/test case/myfile'(그 외로운 작은 따옴표를 보세요!)

따라서 함수를 직접 작성해 보면 물고기가 말도 안 되는 소리여서 상호 작용의 재미와 친근감을 파괴한다는 것을 알게 될 것입니다.

function myfile --wraps '/home/ben/test case/myfile'; '/home/ben/test case/myfile' $argv; end

실제로 이것을 테스트하지는 않았으며 구문을 올바르게 이해한 경우에만 작동할 것입니다.

실제로 f??????-id??tic-shell내장된 기능을 처음 읽었을 때는 40분 안에 충분했습니다.

답변3

불행하게도 당신은 그랬어요물고기에 곤충, 공백이 포함된 별칭이 깨졌습니다.

어쨌든 대체 항목을 작성하는 것은 매우 쉽습니다.

function myfile
    /home/ben/test\ case/myfile $argv;
end
funcsave myfile

이는 새 함수를 정의하고( myfile) 모든 명령줄 인수를 사용하여 대상을 실행하도록 설정한 다음( ) $argv자동 로딩을 위해 함수를 저장합니다( funcsave).

다른 답변에서 지적했듯이,단축 명령abbr별칭을 정의하는 또 다른 옵션이지만 귀하의 경우에는 함수(별칭)가 실제로 더 유용하다고 생각합니다.

관련 정보