2016-11-02 8 views
0

나는이 별칭 작업을하려고하지 :bash는 별칭 작업 (VIM의 탭으로 열기 자식 상태 출력 파일)

alias ciao="vim -p `git status --short | awk '{print $2}'; git show --pretty="format:" --name-only` 

는 기본적으로 나는 정력 탭으로, git status 인쇄 된 모든 파일을 열하고자합니다. 프롬프트에서 직접 실행할 때 명령이 제대로 작동하지만 별칭을 만들 수 없습니다.

vim -p은 인쇄 된 첫 번째 파일에는 적용되지만 다른 파일에는 적용되지 않습니다 (git status의 파일이 둘 이상인 경우).

누군가 내가 뭘 잘못하고 있는지 말할 수 있다면 좋겠어. 내가 붙여 넣은 별칭에 명백한 문제가있다. (도망 간다.) 미안하다.

+0

승인 된 답변에서 알 수 있듯이 명령 대체에 대한 백틱보다는 항상 '$ (...)'를 선호해야합니다. – dimo414

+0

나를위한 필연적 인 질문은 "이유"였습니다. 그래서 여기에 내가 찾은 대답이 있습니다. 누군가 다른 사람에게도 관심이있을 수 있습니다. http://stackoverflow.com/questions/4708549/whats-the-difference-between-command - 및 - 셸 - 명령 프로그래밍 – lzzluca

답변

1
alias ciao='vim -p $(
    git status --short | awk "{print $2}"; 
    git show --pretty="format:" --name-only 
)' 
+0

고마워, 작동합니다. ( – lzzluca

1

ls -l보다 복잡한 것은 별칭이 아닌 함수 여야합니다.

ciao() { 
    vim -p $(git status --short | awk '{print $2}' 
      git show --pretty="format:" --name-only) 
} 
+0

Vim이 열리지 만 파일이로드되지 않음 – lzzluca

+1

@lzzluca, 5 분 동안 댓글을 편집 할 수 있음, 여러 개의 댓글을 달 수있는 또 다른 옵션 아직 해결되지 않았고 모든 정보를 하나의 주석에 넣는 것입니다 – user3439894

+0

하나의 문제는 하나의 인수를'vim '에 전달하는 명령 대체를 인용 한 것입니다. 두 개의'git' 명령 중 두 개는 분명히 여러 개의 파일 이름으로 간주됩니다. 명령 대체는 따로 지정할 수 없지만 결과에 단어 분리와 globbing이 적용됩니다. 즉 모든 합법적 인 파일 이름에 적용되지 않을 수 있습니다. – chepner