일부 명령은 stdout으로만 출력됩니다.
일부 도구는 파일에만 작동합니다.
서로 붙이는 명령이 있나요?
고안된 간단한 예:
diff $(echo 1 | stdout-to-temp-file) $(echo 2 | stdout-to-temp-file)
내 실제 사용 사례: 현재 해결 방법:
git show HEAD:$1 > /tmp/left && meld /tmp/left $1
내 실제 사용 사례는 다음과 같습니다.
meld $(git show HEAD:$1 | stdout-to-temp-file) $1
몇 가지 다른 상황에서도 사용할 것입니다(예: git 또는 meld 전용 수정을 찾고 있지 않습니다).
답변1
<
출력을 로 리디렉션 할 수 있습니다 stdin
.
어떻게 작동하는지 모르겠지만 meld
diff 예제와 관련하여 작동 방식은 다음과 같습니다.
임시 파일 사용
$ cmd1 > file1.tmp
$ cmd2 > file2.tmp
$ diff file1.tmp file2.tmp
임시 파일 없음
$ diff <(cmd1) <(cmd2)
사용 중인 셸에 따라 구문이 다를 수 있습니다(저는 ksh88을 사용하고 있습니다).
답변2
mktemp
임시 파일 이름이 생성됩니다. 파일 이름을 변수에 저장하고 두 슬롯 모두에서 해당 파일 이름을 사용하십시오.
특정 문제를 더 잘 해결하려면 다음을 검토하세요.git difftool
. Meld를 사용하도록 설정했는데 훌륭합니다.
답변3
나는 meld를 사용한 적이 없지만 일반적으로 대부분의 cli 유틸리티의 - 매개변수를 사용하여 이 작업을 수행할 수 있습니다. 예를 들어
cat /path/to/left/file | diff /input/from/right/file -
특히 meld 명령의 경우 다음을 시도해 볼 수 있습니다.
git show HEAD:$1 | meld - $1