जब मैं आउटपुट docker exec
को किसी अन्य कमांड से पाइप करता हूं , तो यह मेरे टर्मिनल की लाइन एंडिंग को गड़बड़ाने के लिए प्रकट होता है।
उदाहरण के लिए:
$ docker exec -it foo sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | jq
{
"a": "b",
"c": "d"
}
$
लेकिन अगर मैं तुरंत मेजबान पर, एक ही टर्मिनल में एक ही कमांड चलाता हूं:
$ sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | jq
{
"a": "b",
"c": "d"
}
...जैसा सोचा था।
अगर मैं आउटपुट को पाइप करता हूं xxd
, तो यह सीआर चरित्र के साथ-साथ LF (0d0a, 0a के बजाय) को पेश करता है; इससे आउटपुट भी गड़बड़ हो जाता है xxd
:
$ docker exec -i -t foo sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | xxd
00000000: 7b22 6122 3a22 6222 2c22 6322 3a22 6422 {"a":"b","c":"d"
00000010: 7d0d 0a
अगर मैं \r\n
खुद को छोड़ कर डॉक करने की कोशिश करता हूं, तो यह ठीक है:
$ printf "{\"a\":\"b\",\"c\":\"d\"}\r\n" | xxd
00000000: 7b22 6122 3a22 6222 2c22 6322 3a22 6422 {"a":"b","c":"d"
00000010: 7d0d 0a }..
$
... जिसका अर्थ है कि यह docker exec
।
मेरे मेजबान और कंटेनर दोनों लिनक्स चला रहे हैं। docker info
रिपोर्ट Server Version: 18.03.1-ce
। docker -v
रिपोर्ट Docker version 18.03.1-ce, build 9ee9f40
।
docker exec
मेरे टर्मिनल (अस्थायी रूप से) ने क्या किया , और मैं इसे कैसे ठीक करूं?
ubuntu:latest
या समान के साथ पुन: पेश कर सकते हैं ? (मैं नहीं कर सकता)
-t
; अगर कोई यह समझाते हुए उत्तर लिख सकता है कि, यह पर्याप्त होगा।