vimdiff để so sánh đầu ra thay vì các tập tin


15

Tôi đang cố gắng so sánh hai đầu ra lệnh (không có tệp)

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

Tôi đã thử chơi với chuyển hướng, đường ống, vim - -cnhưng tôi phải thiếu một cái gì đó. Ai có thể giúp tôi không ?

Câu trả lời:


22

Bạn đang bối rối $(…)với <(…). Bạn đã sử dụng trước đây, mà đi đầu ra như lập luận để vimdiff. Ví dụ: nếu dòng cuối cùng /path/to/foochứa bar bar bar, thì lệnh sau

echo $(tail -1 /path/to/foo)

tương đương với

echo bar bar bar

Thay vào đó, bạn cần sử dụng <(…). Điều này được gọi là thay thế quá trình và chuyển đầu ra dưới dạng tệp giả cho vimdifflệnh. Do đó, sử dụng như sau.

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

Điều này hoạt động trong bash và zsh, nhưng rõ ràng không có cách nào để thay thế quá trình trong tcsh.


Tuy nhiên, điều này chỉ có trong bash
simona

@simona Làm việc cho tôi trong zsh quá. Có lẽ là csh và tcsh là tốt.
Sparhawk

@Sparhawk nó không hoạt động trong tcsh
simona

@simona Cảm ơn thông tin đó; Tôi không quen thuộc với tcsh. Bạn có thể xem xét đưa ra một câu trả lời hoạt động trong tsch. Chúc mừng.
Sparhawk

@Sparhawk rõ ràng là không có cách nào để làm điều này tcshmà không tạo một tập tin unix.stackexchange.com/questions/5111/ chủ
simona
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.