Terminal

macOS:ls 命令停止工作

  • August 20, 2021

在我的 macOS (10.11.6) 終端上,我在 python 虛擬環境上進行了一些安裝。之後我的ls命令停止工作。它給出了一個錯誤:

$ ls
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

$ alias ls
alias ls='colourify ls --color'

哪個程序首先真正搞砸了我的lscmd,是python嗎?

你的ls命令是不變的。您的ls 別名很可能來自錯誤的 Bourne Again shell 設置。

請注意,您的別名正在通過另一個名為的ls別名執行名為 的命令。這來自Radovan Garabík 的 Generic Colourizer,其 Bourne Again shell aliases (in ) 和 Z shell aliases (in ) 設置了一個名為 的別名。 grc``colourifygrc.bashrcgrc.zshls

在某個地方,在一個 rc 文件中,您正在將這些別名添加到您的互動式 Bourne Again shell,按照Stack Overflow answer之類的建議。

Z shell 別名是

別名 ls="grc --color=auto ls"

它將--colour-auto選項傳遞給grc命令,該命令是採用該選項的命令。

但是,The Bourne Again shell 別名是

別名 ls='colorify ls --color'

這實際上是(通過colourify別名)

別名 ls='grc -es --color=auto ls --color'

它既通過著色器執行命令的輸出,又**試圖讓命令對其輸出著色。

ls``ls基本問題是,這些 Bourne Shell 別名的作者(2016 年 5 月來自 Oracle 的 Isaias Piña)並沒有滿足在 Linux 作業系統以外的任何東西上執行 Bourne Again shell,可能期望如果您使用的是 MacOS你正在使用類似 Oh My Zsh 的東西。另一個問題是作者不允許對grc輸出進行著色ls,而是希望ls對自己的輸出進行著色。

所以你有很多選擇:

  • 查找添加這些別名的位置並修復 Isaias Piña 的錯誤ls別名以-G在 MacOS 上使用該選項。
  • 找到添加這些別名的位置並修復 Isaias Piña 的錯誤ls別名,使其不使用任何選項,而是依靠著色器的conf.ls文件來完成其實際工作;就像湯姆穆德一樣
  • 找到添加這些別名的位置並ls完全刪除 Isaias Piña 的錯誤別名,CLICOLOR改為使用環境變數進行著色;正如諾埃爾 B 阿隆索所做的那樣
  • 找到添加這些別名的位置,並ls使用您自己的別名完全刪除 Isaias Piña 的錯誤ls別名;正如亞瑟尼斯涅維奇所做的那樣
  • 完全解除安裝 Generic Colourizer。
  • 使用 Z 外殼。

我剛剛將 iTerm2 更新到版本Build 3.0.14並遇到了這個問題。coreutils的命令ls不再在我的路徑中。執行後:

brew install coreutils

並打開一個新的外殼,問題就解決了。我的 ~/.bashrc 中有以下別名:

export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'

引用自:https://unix.stackexchange.com/questions/342599