簡體   English   中英

我的 bashrc 包含奇怪的字符(如果 Ä -f ü/.bash_aliases Å; 那么。ü/.bash_aliases fi)

[英]my bashrc contains strange characters (if Ä -f ü/.bash_aliases Å; then . ü/.bash_aliases fi)

在 GCP 計算 Linux 不小心做了 cat filebeat 而不是 filebeat.yaml

之后我的 bashrc 包含以下字符,如果我輸入“~”,bash 正在打印“ü”需要幫助來解決這個問題

if Ä -f ü/.bash_aliases Å; then
    . ü/.bash_aliases
fi

這看起來像是您的終端意外配置為使用舊版 ISO-646-SE 或變體。 您的文件可能沒問題; 只是您的終端根據 1980 年代的方案重新映射顯示字符。

快速的十六進制轉儲應該驗證文件中的字符實際上是正確的。 這是您應該看到的示例。

bash$ echo '[\]' | xxd
00000000: 5b5c 5d0a                                [\].

即使字符顯示為 ÄÖÅ,如果您看到十六進制代碼 5B、5C 和 5D,它們也是正確的。 (如果您沒有xxd ,請嘗試hexdumpod -t x1 。)

大概

bash$ tput reset

可以將您的終端設置回正常設置。 也許stty sane也可能起作用(但根據我的經驗,可能性較小)。 否則,請嘗試注銷並重新登錄。

當 ASCII 是鎮上唯一的游戲,但美國(或實際上任何)硬件出口到字符庫不足的地方時,當地供應商會更換終端中的 ROM 芯片以重新映射一些不太常見的字符代碼以顯示作為缺少的本地字形。 隨着時間的推移,這變得標准化。 ISO-646標准已更新以記錄這些本地覆蓋。 (鏈接的 Wikipedia 頁面有許多帶有詳細信息的表格。)

最終,8 位字符集成為常態,然后大多數語言環境切換到 Latin-1 或其他不再需要這種 hack 的合適字符集。 然而,即使在 1990 年代初期,它仍然相當普遍。 在 2000 年代初期,Unicode 開始接管,所以現在這似乎是一個荒謬的安排。

我猜你cat遇到的文件包含一些控制字符,這些字符指示你的終端切換到這個舊字符集。 這並非完全不常見(盡管通常當它發生在我身上時,它會切換到一些“圖形”字符集,其中一些字符顯示畫框字符或數學符號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM