【问题标题】:How to check the ls version如何查看ls版本
【发布时间】:2009-11-04 20:35:02
【问题描述】:

本主题是关于 util 'ls' BSD 版本使用参数 '-G' 为输出着色, 而Linux版本使用参数'--color'

另外设置颜色的环境变量也不同: BSD:$LSCOLORS Linux:$LS_COLORS

但现在的问题是:我想确定安装的是哪个版本(使用一个小的 Shell 脚本),所以我可以在我的 .bachrc 文件中设置别名 ls 和适当的环境。

【问题讨论】:

    标签: shell


    【解决方案1】:

    正如我上面提到的,这在我看来是最方便的方法

    if ls --color -d . >/dev/null 2>&1; then
        GNU_LS=1
    elif ls -G -d . >/dev/null 2>&1; then
        BSD_LS=1
    else
        SOLARIS_LS=1
    fi
    

    我的 l script 中基本上有这个,我在各种平台上使用它来调整 ls 输出,因为我喜欢

    【讨论】:

      【解决方案2】:

      只需运行 'ls' 并查看它是否会引发错误,例如在我的 Mac 上:

      $ ls --color 1>/dev/null 2>&1
      $ echo $?
      1
      

      而

      $ ls -G 1>/dev/null 2>&1
      $ echo $?
      0
      

      支持-G,但不支持--color。

      【讨论】:

      • ls --color -d 。 >/dev/null 2>&1 && gnu_ls=1 || bsd_ls=1
      • 这句话可能很愚蠢,但是当当前目录包含很多很多文件时,这不会导致很多开销吗?或者它是选项“-d”的位置?
      • @To1ne - 不傻,好电话。您可以插入一个合适的参数 - 也许是根目录? - 将被找到,并且不太可能充满许多文件。或者您可以创建一个临时文件并明确地 ls (然后将其删除)。或者您可以使用 /dev/null 作为参数。同意里面应该有东西,而不是什么都没有。
      • 像 pixelbeat 建议的那样使用它。但是使用&>/dev/null 重定向到黑洞。
      • -d 只列出目录而不是其内容。所以现在我们有 4 个 cmets 来解释这一点,而不是被查找/尝试。
      【解决方案3】:

      具有讽刺意味的是,大多数 BSD 系统不支持 --version 开关 Kimmo 提到的 :-)

      为您的特定设置编写可移植的配置文件可能是一项艰巨的任务。在您的情况下,如果您确定您的 .bashrc 将仅在 GNU/Linux 和 BSD 系统上使用,您可以检查 ls' 之一中存在但另一个中不存在的开关:例如, -D 在我的 BSD 机器(FreeBSD 和 Mac OS X)上似乎不是 ls 接受的开关,而它适用于 GNU ls。相反,-P 在 BSD 上被接受,但在 GNU/Linux 上不被接受。知道了这一点,就可以区分这两个ls',并相应地设置环境变量了。

      【讨论】:

        【解决方案4】:
        $ ls --version
        ls (GNU coreutils) 6.10
        Copyright (C) 2008 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
        
        Written by Richard Stallman and David MacKenzie.
        

        【讨论】:

        • MacOSX 自带的版本虽然不支持'--version'
        • 缺少版本也会告诉你一些事情。我目前无法访问我的 Mac OSX 机器,但如果您无法使用“ls --version”获取它,您可以尝试strings | grep version。
        猜你喜欢
        • 2011-03-21
        • 2020-10-25
        • 2011-04-18
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多