및 새해 복 많이 받으세요. 크리스마스 저녁 식사에서 회복하기 까다로운 문제가 있습니다! 내가 원하는 어떻게 정확하게 코드의SVN : awk (bash에서) 명령 행 svn에 색상을 추가
function svn {
command svn "[email protected]" | awk '
BEGIN {
cpt_c=0;
}
{
if ($1=="C") {
cpt_c=cpt_c+1;
print "\033[31m" $0 "\033[00m"; # Conflicts are displayed in red
}
else if ($1=="A") {
print "\033[32m" $0 "\033[00m"; # Add in green
}
else if ($1=="?") {
print "\033[36m" $0 "\033[00m"; # New in cyan
}
else if ($1=="D") {
print "\033[35m" $0 "\033[00m"; # Delete in magenta
}
else {
print $0; # No color, just print the line
}
}
END {
print cpt_c, " conflicts are found.";
}';
}
이 부분 : 여기
는 작동 배쉬 코드 (내가 파일의 .bashrc 에 넣어) 느릅 나무의 일부입니다. svn 함수 (상태, 업데이트 등)는 색상으로 인쇄됩니다. 내부적으로 필요한 경우 colorsvn 또는 svn-color 같은 것을 설치하고 싶지 않습니다. 여기 는 위의 코드의 예입니다 (이미지를 게시 한 정도로 명성을하지 않음) 다시
그리고, 내가을 원하는 완벽하다 을. 문제는 충돌이 발견 될 때 (예 : 업데이트 할 때) 발생합니다. 실제로 파일 충돌시 svn이 몇 자의 문자를 입력 할 수 있도록 사용자에게 넘겨줍니다 (아래 참조)
# svn update
Conflict discovered in 'test.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
사용자 유형 뭔가를 수 있도록 awk가 할 수있는 방법이 있나요 (다음 &이을 종료 저장, e를 입력 한 후 일부 행을 삭제 예를 들어 ) 무언가를, (예를 전자에 대한 는 빔 충돌하는 파일 오픈 이십 기가 바이트) 충돌을 해결하기 위해 다른 문자를 입력 한 다음 마침내 svn update (다른 파일 등)의 다음 단계를 표시 하시겠습니까?
다른 말로하면, 사용자가 svn과 상호 작용할 수 있도록 색상을 표시하는 스크립트를 "일시 중지"한 다음 svn update가 계속 진행되기를 원합니다. awk가 호출자 스크립트를 멈추게 할 수있는 방법을 알고 미래에 매우 유용 할 것이라고 생각합니다.
나 자신을 분명하게 만들었습니까? 내 영어가 내가 원하는만큼 좋지 않다 :/
자세한 내용은 언제든지 문의하십시오!
'명령 svn'은 여전히 사용자의 입력을받습니다. 자율적 인 실행과 대화식 실행 사이를 전환 할 수있는 '기대'와 같은 도구가 있지만 여기에는 다소 요점이있을 수 있습니다. 올바른 해결책은 저수준 래퍼입니다. 사용하고 싶지 않은 래퍼와 같을 것입니다. awk 스크립트는 입력 된 frim을 파이프로 받지만,'/ dev/tty' 또는 그 밖의 입력으로부터 추가 입력을 읽는 모드를 추가하기 위해 뭔가를 해킹 할 수 있습니다. – tripleee
bash 함수'svn'을 확장하여이 모든 것을 처리하고 싶습니까, 아니면'svn' 함수가 실행 된 후에 별도의 코드로 '일시 정지'가 필요하다고 생각합니까? 덧붙여서 당신의 영어는 괜찮습니다! 행운을 빕니다. – shellter
@shellter : 글쎄, 나는 bash 함수를 확장하고 싶다. 하지만 모든 가능한 해결책에 대해 열려 있습니다;) Ty for my english! –