Bash mine脚本,请[关闭]


-4

该脚本本身就是不言自明的。这个脚本可以进一步改进吗?

第一次迭代是在OS X 10.5.8 Leopard上进行的,当前迭代是在OS X 10.6.4 Snow Leopard和Safari 5.0.2(6533.18.5)上运行的。此外,任何关于为什么第一行'if [-f]'工作,但'if [-f~ / Library / Safari / LocalStorage / * .localstorage]'产生错误的照明?[是的,我有点像菜鸟]

码:

#! /bin/bash
# SafariClear0.0.6

if [ -f ]
then
cat /dev/null > ~/Library/Safari/LocalStorage/*.localstorage
rm -f ~/Library/Safari/LocalStorage/*.localstorage
fi

if [ -f ~/Library/Safari/LocalStorage/*.localstorage ]
then
echo "Oy vey!"  
fi
cd ~/Library/Safari/
cat /dev/null > WebpageIcons.db
cat /dev/null > TopSites.plist
cat /dev/null > LocationPermissions.plist
cat /dev/null > LastSession.plist
cat /dev/null > History.plist
echo "Clear"
exit

2
-f ~/…/*.localstorage将通配符扩展为localstorage存在的所有文件的文件名,这些文件-f无法测试。你需要一次做那个。如果你所做的只是echo "Oy vey"......那么我没有看到那句话的重点......那么,你究竟想做什么以及你在哪里被困?什么不起作用?
slhck

2
对于那些想要将其迁移到Stack Overflow的人:请重新考虑。OP没有做过任何研究工作,也没有写出一个准确的问题。Stack Overflow也不会想要这个问题。HomelyPoet,请编辑您的问题并将其归结为您想要解决的实际问题。
slhck

Answers:


2

看起来它会被关闭,不知道为什么,也许是因为它是超级用户的编程问题。

1)测试[-f]没有意义。-f测试用于测试是否存在某个文件并且存在。让-f没有文件什么也没做。

2)查看“目录是否包含一个或多个文件”比初看起来更难。幸运的是,你真的不需要。见下面的#3。

3)第一个代码块截断文件,然后删除。为什么要打扰截断?只需删除它们并完成它。你可以做:

find ~/Library/Safari/LocalStorage/ -type f -name '*.localstorage' -exec rm -f {} \;

4)然后你截断一些其他文件。这可以循环,这可能是一种改进。

cd ~/Library/Safari/
for FILE in WebpageIcons.db TopSites.plist LocationPermissions.plist LastSession.plist  History.plist
do
    cat /dev/null > $FILE
done

将这两个代码片段连接到脚本中可以完成脚本的所有操作。


1
Bash编程通常很好。然而,这恰好不是一个特别好问的问题,我想我们不做“代码审查” - 这就是投票的原因。
slhck

1

[ -f *.txt ]

  • 如果不存在此类文件,
    • 如果nullglob未启用shell选项(默认值),则单词*.txt保持未展开状态,并-f计算为false。
    • 如果nullglob启用了shell选项,*.txt则删除该单词,离开[ -f ],这相当于test -f。由于只给出了一个参数,因此规则是当且仅当参数不为null时表达式才为真。-f不为null,因此表达式为true。
  • 如果存在此类文件,*.txt则会扩展为其名称列表。
    • 如果只存在一个此类文件,请-f查看文件名并计算结果为true。
    • 如果存在两个这样的文件,则第三个参数应该是二元运算符(-a-o),并且您可能会收到binary operator expected错误。
    • 如果存在三个或更多此类文件,则会出现too many arguments错误。

要测试是否存在与模式匹配的文件,请参阅此主题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.