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