Mac Bash脚本 - 如果隐藏了隐藏文件夹,请说明

时间:2011-08-31 12:53:29

标签: macos bash hidden-files

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

3 个答案:

答案 0 :(得分:2)

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

#!/bin/bash

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

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

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

答案 1 :(得分:0)

好的,您是在谈论Finder隐藏的文件,还是以句点开头的文件,因此除非您指定参数,否则它们会在ls等命令上隐藏 (比如-a)可以看到它们吗?

如果您主要谈论点,您可以采取各种方式。一个由Ahe显示。另一种是这样的:

if [[$ {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

答案 2 :(得分:0)

因此,如果name存在重命名为.name,反之亦然?

#!/bin/sh

name=whatyoulookingatfool

for f in . ''; do
    test -d "$f$name" || continue
    mv "$f$name" "${f:-.}$name"
    break
done