linux - OS X 的 bash 脚本不能使用 --color=auto

标签 linux bash macos shell

我是 OS X 和其他 Linux 发行版(Ubuntu、CentOS、RHEL)用户的新手。

我想知道为什么 OS X 的 bash 不能使用 --color=auto 选项以及如何启用它。

我经常使用 ls --color=auto,但在 OS X 上,它不起作用。以下是命令输出:

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

我还阅读了 ls 的手册页,我发现 ls -G 是彩色输出的启用程序。 所以,在这个时候,没关系,但我有点烦人,因为我正在为我所有的 linux 环境共享 .bashrc.bash_profile

有人知道这些 bash 的不同之处吗?您是否有什么好主意可以在 OS X 和某些 Linux 发行版之间共享 .bashrc.bash_profile 而无需在每个环境上进行额外编辑。

附言 我的 friend 告诉我 AIX 上的 bash(Linux 服务器 IBM 版本?我不确定)也无法运行 ls --color=auto

最佳答案

ls 命令和其他命令如pstop 的实现是不同的,大多数utils 有GNU 版本和BSD 版本。 Linux 采用 GNU 版本,而 OSX 可能采用 BSD 版本,因此这些命令的选项可能不同。

如果你想制作一个在任何地方都可用的.bashrc.bash_profile,你应该在给你的命令起别名之前判断环境,例如:

_myos="$(uname)"

case $_myos in
  Linux) alias ls='ls --color';;
  Darwin) alias ls='ls -G';;
  *) ;;
esac

关于linux - OS X 的 bash 脚本不能使用 --color=auto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080913/

相关文章:

objective-c - OS X 在后台打开 URL 方案

c++ - 使用 linux 用户空间内存进行缓存

java - 在同一台物理机器上连接两个 Java 进程的最快方法是什么?

linux - 以 PID 作为操作数并打印其所有子代、孙代等的 PID 的脚本

linux - 如何从系统中的任何位置(当前目录之外)运行我的脚本?

linux - 如何格式化 ifconfig 的输出

c++ - gcc/linux : CppuTest shows memory leak using static vectors, 误报?

java - 助教 bash 脚本,用于自动执行查找、编译和运行 .java 文件的过程

macos - 为 UI 测试模拟低带宽?

macos - 如何在 OS X 中实现手势识别器?