0

我正在使用 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
4

3 回答 3

2

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

#!/bin/bash

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

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

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

于 2011-08-31T13:35:16.893 回答
0

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

如果您主要谈论点,则可以通过多种方式执行此操作。一个是阿赫展示的。另一种是这样的:

if [[ ${fileName%%.*} = "" ] then echo "文件名以句点开头" else echo "文件名不以句点开头" fi

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

因此:

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

是相同的

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

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

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

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

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

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

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

您可能需要重新启动 Finder:

killAll Finder
于 2011-08-31T17:02:59.013 回答
0

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

#!/bin/sh

name=whatyoulookingatfool

for f in . ''; do
    test -d "$f$name" || continue
    mv "$f$name" "${f:-.}$name"
    break
done
于 2011-08-31T17:23:53.957 回答