我們有一個 Arduino Yun Rev 2,透過 YunDiskExpander 草圖將 extroot 設定到 32 GB sandisk microSD 上,分割區為 extroot 提供 512 MB 空間。
然而奇怪的是,每當我們使用 ls 時,結果都會以一個[
數字(通常是1
)和;
兩個數字(通常是34
)字母開頭m
,然後我們得到文件或資料夾名稱,然後總是附加[m
到它後面。當 vim 在 Arduino 上運行時,這似乎也會發生在每個字元上。
我們透過公開可用的串行監視器作為終端草圖來存取它。這些意想不到的特徵明顯阻礙了發展,因此我們將不勝感激任何幫助。
答案1
您所描述的內容是(部分)轉義序列負責改變文字的前景色。在我的 Debian 中ls
可能會產生以下範例輸出:
^[[01;34mfoobar^[[0m
其中^[
代表單一字元:轉義字元 ( 0x1b
)。支援此功能的終端應在收到此類資料後以foobar
藍色列印。您沒有提到零,我的測試表明它^[[1;34mfoobar^[[m
也有效,所以您可能ls
會產生後一種形式。
ls
嘗試對其輸出進行著色,但看起來轉義字元由於某種原因在傳輸中丟失,或者它們被正確傳輸,但您的終端忽略它們(既不列印它們的表示也不識別後面的控制序列)。實際上你會看到:
[1;34mfoobar[m
純粹ls
的沒有選項不應該使用顏色,POSIX沒有提到顏色。儘管如此,實作仍然可以為您提供對輸出進行著色的選項,並且通常ls
是ls --color=auto
.通常這很有效,用戶甚至可能不知道涉及別名。檢查此場景是否適合您的情況:invoke alias ls
。我想確實如此。
可能的解決方案:
- 根據需要覆蓋該選項:
ls --color=no
; - 按需繞過別名:
command ls
; - 銷毀別名(每個 shell 會話一次)
unalias ls
:; - 找出別名是在哪個啟動腳本中定義的,並刪除相關行或註解掉;這是一個永久的解決方案。