2012-01-27 6 views
1

짧은 상태를 처리하고 sed로 구문 분석 한 다음 파일을 git의 'assum-unchanged'색인에 추가합니다.셸 명령을 사용하는 힘내 설정

그러나이 문제는 OS X bash에서 작은 따옴표를 이스케이프 처리하는 것에 대한 간단한 이해로 보입니다.

irm = !sh -c 'git ignore $(git st --short -u | sed '\''/^ D/s/^ D//g'\'')' 

이것은 gitconfig의 전체 라인입니다. 쉘 (sh와 따옴표 사용)에서 명령을 실행할 수 있지만, 아래의 조언에 따라 git irm

을 기반으로 실행하려고하면 구성이 엉망입니다. 약간 다르게 구성했습니다. 그러나 여전히 gitconfig에서는 작동하지 않습니다. 그래서 난이 추가 내 ~/.profile

alias irm="git ignore $(git st --short | grep '^ D' | sed 's/^ D //')" 
+0

sed 라인이 나를 괴롭혔습니다. 나는 당신이 이것을 찾고 있다고 생각한다 : sed -n -e "s/^ D // gp" –

+0

나는 그것이 삭제 된 파일들만을 조회하도록하고 싶다. M A는 제외해야합니다. – Drew

답변

1

당신은 큰 따옴표를 사용할 수 있어야하지만, 당신이 그들을 탈출해야합니다 :

irm = !sh -c 'git ignore $(git st --short -u | sed \"s/^ D//\")' 

당신은 이후 행을 선택할 필요가 없습니다 작업은 선택 항목과 동일합니다. -npsed으로 사용하여 다른 사람과 일치하는 줄만 출력하고 다른 줄은 제외하려는 경우 의견에서 Chris가 제안 할 수 있습니다.

또한 패턴이 고정되어 있으므로 전역 옵션이 필요하지 않습니다.

+0

당신은 gnu에 있습니까? 내가 OS X에서이 오류가있어. 배쉬 : sh -c 'git st --short -u | sed : 1 : ""s/^ ": 잘못된 명령 코드" – Drew

+0

@Drew : 예, 저는 GNU입니다. 큰 따옴표를 이스케이프하지 않고 시도하십시오. 또 다른 시도는 큰 따옴표로 전체 별칭을 싸는 것입니다 :'irm = "! sh -c 'git ignore $ (git st --short -u | sed \"s/^ D // \ ")'"'. 'sh -c'를 생략 할 수도 있습니다 :'git ignore $ (git st --short -u | sed \ "s/^ D // \")'. 이들 각각은 나를 위해 일합니다. –

관련 문제