【问题标题】:Mac Bash Script - Telling if a hidden folder is hidden or notMac Bash Script - 判断隐藏文件夹是否隐藏
【发布时间】:2011-08-31 12:53:28
【问题描述】:

我正在使用 Mac OSX Lion,我想要一个脚本来告诉我目录是隐藏还是可见。目录是 .whatyoulookingatfool。

这就是我现在所拥有的......

#!/bin/bash

#Check for dir
if test -d /Users/NSutton/Documents/.whatyoulookingatfool; then
    echo "go go go"
else
    echo "well shit"
fi

【问题讨论】:

  • 请在你的理解中定义"visible"
  • 好吧,在 mac 上使用 mkdir 时添加点会使文件隐藏。所以我想创建一个脚本,在运行时根据其当前状态使其隐藏或可见。
  • 好的,这应该被称为隐藏而不是可见。可见主要是指用户有足够的读取权限,所以文件夹是可见的。
  • 更改了标题,不再混淆。
  • 工具dirnamebasenamegrepsed 可以完成这项工作。但是,它需要是一个 bash 脚本吗? Perl、Python、...

标签: macos bash hidden-files


【解决方案1】:

我这里没有任何 osx 机器,但我假设 mac 有一个 basename 命令和足够新的 bash。

#!/bin/bash

dir=$1
bn=$(basename $dir)

if [[ -d $dir && $bn == .* ]]
then
   echo yep
else
   echo nay
fi

请注意,这不适用于 ... 目录。

【讨论】:

  • 谢谢,这很有帮助,但我意识到我对 bash 感到困惑。我想我必须想出一个用 python 破解的方法。
【解决方案2】:

好的,您是在谈论被 Finder 隐藏的文件,还是以句点开头的文件,因此它们在诸如 ls 之类的命令中隐藏,除非您指定参数(例如-a) 来看看?

如果您主要谈论点,则可以通过多种方式进行。一个由Ahe 显示。另一种是这样的:

如果 [[ ${fileName%%.*} = "" ] 然后 echo "文件名以句点开头" 别的 echo "文件名不以句点开头" 菲

顺便说一句,方括号相当于test 命令,通常是首选。

因此:

if test -d /Users/NSutton/Documents/.whatyoulookingatfool; then

相同
if [ -d /Users/NSutton/Documents/.whatyoulookingatfool ]; then

注意方括号周围的空格。在 Bash 程序中还内置了更多使用可以进行模式匹配的双方括号的测试。请参阅BASH manpage 了解更多信息。

现在,如果您想知道文件是否在 Finder 中隐藏。例如,$HOME/Library 在命令行工具中可见,但在 Finder 中通常不可见,您必须使用 GetFileInfo 命令。这是 Mac OS X 内置的,用于查看文件是否对 Finder 不可见。

还有/.hidden 目录列出了在 Mac OS X 10.4 (Tiger) 之前使用的所有隐藏文件。

不幸的是,我面前没有 Mac 来运行任何测试,所以我不能给你确切的命令,但请检查 GetFileInfo manpage,并玩一下看看它是如何工作的。

顺便说一句,您可以通过以下命令打开和关闭文件隐藏:

defaults write com.apple.finder AppleShowAllFiles TRUE  #Shows hidden files
defaults write com.apple.finder AppleShowAllFiles FALSE #Hides hidden files

您可能需要重新启动 Finder:

killAll Finder

【讨论】:

    【解决方案3】:

    那么如果name存在则重命名为.name,反之亦然?

    #!/bin/sh
    
    name=whatyoulookingatfool
    
    for f in . ''; do
        test -d "$f$name" || continue
        mv "$f$name" "${f:-.}$name"
        break
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2023-03-12
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多