![是什么导致我的外壳看起来像这样?](https://linux22.com/image/7118/%E6%98%AF%E4%BB%80%E4%B9%88%E5%AF%BC%E8%87%B4%E6%88%91%E7%9A%84%E5%A4%96%E5%A3%B3%E7%9C%8B%E8%B5%B7%E6%9D%A5%E5%83%8F%E8%BF%99%E6%A0%B7%EF%BC%9F%20.png)
我目前正在为我的公寓开发一个家庭自动化框架。这涉及到从 Arduino 通过串行获取 JSON。当 JSON 无法解析时(通常仅在启动时),我将其记录为错误。
今天发生了一些奇怪的事情,损坏的 JSON 导致我的一个终端变得很奇怪。
[nodemon] restarting due to changes...
[nodemon] starting `node build/server`
sensor living-room-humidity on serial:arduino-master:42
sensor living-room-temperature on serial:arduino-master:42
sensor living-room-motion on serial:arduino-master:42
sensor living-room-brightness on serial:arduino-master:42
sensor kitchen-humidity on serial:arduino-master:43
sensor kitchen-temperature on serial:arduino-master:43
sensor kitchen-motion on serial:arduino-master:43
sensor kitchen-brightness on serial:arduino-master:43
listening on http://127.0.0.1:50000
serial opened: arduino-master
serial error can't parse JSON: S≤┼├▒│E⎼⎼⎺⎼: U┼e│⎻ec├ed ├⎺┐e┼
⎽e⎼☃▒┌ d☃⎽c⎺┴e⎼ed: /de┴/├├≤USB▮
/#Y⎼dB▒±dPSX2≤TB☃8AAAA c⎺┼┼ec├ed
/#Y⎼dB▒±dPSX2≤TB☃8AAAA ▒┤├▒e┼├☃c▒├ed
[┼⎺de└⎺┼] ⎼e⎽├▒⎼├☃┼± d┤e ├⎺ c▒▒┼±e⎽↓↓↓
[┼⎺de└⎺┼] ⎽├▒⎼├☃┼± ◆┼⎺de b┤☃┌d/⎽e⎼┴e⎼◆
⎽e┼⎽⎺⎼ ┌☃┴☃┼±↑⎼⎺⎺└↑▒┤└☃d☃├≤ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:42
⎽e┼⎽⎺⎼ ┌☃┴☃┼±↑⎼⎺⎺└↑├e└⎻e⎼▒├┤⎼e ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:42
⎽e┼⎽⎺⎼ ┌☃┴☃┼±↑⎼⎺⎺└↑└⎺├☃⎺┼ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:42
⎽e┼⎽⎺⎼ ┌☃┴☃┼±↑⎼⎺⎺└↑b⎼☃±▒├┼e⎽⎽ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:42
⎽e┼⎽⎺⎼ ┐☃├c▒e┼↑▒┤└☃d☃├≤ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:43
⎽e┼⎽⎺⎼ ┐☃├c▒e┼↑├e└⎻e⎼▒├┤⎼e ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:43
⎽e┼⎽⎺⎼ ┐☃├c▒e┼↑└⎺├☃⎺┼ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:43
⎽e┼⎽⎺⎼ ┐☃├c▒e┼↑b⎼☃±▒├┼e⎽⎽ ⎺┼ ⎽e⎼☃▒┌:▒⎼d┤☃┼⎺↑└▒⎽├e⎼:43
┌☃⎽├e┼☃┼± ⎺┼ ▒├├⎻://127↓▮↓▮↓1:5▮▮▮▮
⎽e⎼☃▒┌ ⎺⎻e┼ed: ▒⎼d┤☃┼⎺↑└▒⎽├e⎼
⎽e⎼☃▒┌ d☃⎽c⎺┴e⎼ed: /de┴/├├≤USB▮
⎽e⎼☃▒┌ e⎼⎼⎺⎼ c▒┼'├ ⎻▒⎼⎽e JSON: π"☃d":42←"b⎼☃±▒├┼e⎽⎽":126←"└⎺├☃⎺π"☃d":42←"b⎼☃±▒├┼e⎽⎽":125←"└⎺├☃⎺┼":▮←"├e└⎻e⎼▒├┤⎼e":23↓8▮←"▒┤└☃d☃├≤":29 S≤┼├▒│E⎼⎼⎺⎼: U┼e│⎻ec├ed ├⎺┐e┼ ☃
/#5┌9⎻PA°2P└_└┐c_WAAAA c⎺┼┼ec├ed
/#5┌9⎻PA°2P└_└┐c_WAAAA ▒┤├▒e┼├☃c▒├ed
/#5┌9⎻PA°2P└_└┐c_WAAAA d☃⎽c⎺┼┼ec├ed
/#▒▒73J1G⎺CK↑▒XdVbAAAB c⎺┼┼ec├ed
/#▒▒73J1G⎺CK↑▒XdVbAAAB ▒┤├▒e┼├☃c▒├ed
/#▒▒73J1G⎺CK↑▒XdVbAAAB d☃⎽c⎺┼┼ec├ed
/#├┌7⎺°_▒R6FDON─┐HAAAC c⎺┼┼ec├ed
/#├┌7⎺°_▒R6FDON─┐HAAAC ▒┤├▒e┼├☃c▒├ed
/#├┌7⎺°_▒R6FDON─┐HAAAC d☃⎽c⎺┼┼ec├ed
/#┤_Q┬├XdLW1└C▒Z⎻8AAAD c⎺┼┼ec├ed
/#┤_Q┬├XdLW1└C▒Z⎻8AAAD ▒┤├▒e┼├☃c▒├ed
/#┤_Q┬├XdLW1└C▒Z⎻8AAAD d☃⎽c⎺┼┼ec├ed
/#3☃┐R±°_⎼E⎻☃Q┼K┘▒AAAE c⎺┼┼ec├ed
/#3☃┐R±°_⎼E⎻☃Q┼K┘▒AAAE ▒┤├▒e┼├☃c▒├ed
我知道这很可能可以通过重新启动该 shell 来解决,但我仍然想了解为什么会发生这种情况和(如果可能的话)防止再次发生。
答案1
发生这种情况是因为您生成的输出包含终端接口解释为控制代码的代码。
这通常可以通过 或 来reset
解决stty sane
。
答案2
Ctrl-VCtrl-O解决此问题的另一个常见方法是在 shell 提示符下键入。第一个将 shell 置于“文字”模式,这样它就不会修改后面的字符,这是几乎所有常见终端类型都能理解的终端重置命令。
echo
在某些终端上,您可能需要这样做。