我正在使用 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
我正在使用 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
我这里没有任何 osx 机器,但我假设 mac 有一个 basename 命令和足够新的 bash。
#!/bin/bash
dir=$1
bn=$(basename $dir)
if [[ -d $dir && $bn == .* ]]
then
echo yep
else
echo nay
fi
请注意,这不适用于.
and..
目录。
好的,您是在谈论被 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
那么如果名称存在重命名为.name,反之亦然?
#!/bin/sh
name=whatyoulookingatfool
for f in . ''; do
test -d "$f$name" || continue
mv "$f$name" "${f:-.}$name"
break
done