【问题标题】:How to make a script to show/hide hidden files in Mac OS X?如何制作一个脚本来显示/隐藏 Mac OS X 中的隐藏文件?
【发布时间】:2013-12-09 11:48:53
【问题描述】:

我刚刚获得了带有 Retina 的 MBP,而且我对 Mac OS X 非常陌生(以前使用 PC)。我注意到 Mac 没有图形用户界面来显示/隐藏像 Windows 这样的隐藏文件。我研究并看到了这个网站Show Hidden Files on your Mac。是的,它有效。

显示隐藏文件: (使用终端) 默认写com.apple.finder AppleShowAllFiles TRUE killall Finder

隐藏隐藏文件: defaults write com.apple.finder AppleShowAllFiles FALSE killall Finder

我想做的是制作一个可执行脚本,当我双击它时将执行上述命令,这样我就不必在终端中键入命令来显示/隐藏隐藏文件。我看到了 Applescript,但我对它不是很熟悉。我不知道执行我想要的命令。但我读过一些。

有人可以帮我制作一个可执行脚本来显示/隐藏我的 Mac 中的隐藏文件吗?

【问题讨论】:

    标签: macos applescript show hidden finder


    【解决方案1】:

    您不再需要脚本。打开查找器,按 + ⇧ Shift + .,它将显示/隐藏您的文件。

    【讨论】:

    • 需要注意的是,这种方法只会持续到下一次 Finder 重新启动(即重启、退出等),并且会恢复到默认设置。
    【解决方案2】:
    display dialog "Show all files" buttons {"TRUE", "FALSE"}
    set result to button returned of result
    if result is equal to "TRUE" then
        do shell script "defaults write com.apple.finder AppleShowAllFiles -boolean true"
    else
        do shell script "defaults delete com.apple.finder AppleShowAllFiles"
    end if
    do shell script "killall Finder"  
    

    使用 AppleScript 编辑器并保存为应用程序。

    【讨论】:

    • 感谢您的回答。顺便说一句,为什么命令变成了删除?它会输出相同的结果吗? "默认删除 com.apple.finder AppleShowAllFiles"
    • 默认写入 com.apple.finder AppleShowAllFiles -boolean false 不适用于 10.9 osx
    • 哦,好的。所以这就是原因。
    【解决方案3】:

    您也可以使用 Automator 来创建这样的服务:

    do shell script "[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true
    defaults write com.apple.finder AppleShowAllFiles -bool $b"
    tell application "Finder"
        quit
        delay 0.2 -- without this delay there was a "connection is invalid" error
        reopen -- open a new default window
        activate -- make Finder frontmost
    end tell
    

    您可以从键盘首选项窗格中为服务提供键盘快捷键。

    【讨论】:

      【解决方案4】:

      我更喜欢始终坚持使用 shell 脚本。在@user495470 的回答中再次提出,切换隐藏文件并重新启动查找器的脚本是:

      [[ $(defaults read com.apple.finder AppleShowAllFiles) = ON ]] && b=OFF || b=ON
      defaults write com.apple.finder AppleShowAllFiles $b
      killall Finder
      

      您可以将所有脚本存储在~/bin 中。如果您将上述代码保存到 ~/bin/toggle_files.command,这会使您的脚本成为可执行文件:

      chmod +x ~/bin/togglefiles.command
      

      该脚本现在是“可点击的”。我妈妈更喜欢单击她的 shell 脚本,并将它们存储在 ~/Documents/Scripts 中。我想这是一个品味问题。为了从终端调用你的脚本(我喜欢这样做),你应该在你的个人资料中创建一个别名。我使用 bash(我认为这是 OS X 中的默认设置),您的 bash 配置文件将位于 ~/.bash_profile。如果你添加

      alias togglefiles="~/bin/togglefiles.command"
      

      对于~/.bash_profile,您的所有终端会话都会将命令togglefiles 视为对位于bin 目录中的shell 脚本的调用。

      【讨论】:

        【解决方案5】:

        我制作了简单的 MAC OS X 应用程序来显示/隐藏系统文件。它是一个状态栏应用程序。非常轻巧。

        您可以从这里下载:http://ShowHiddenFilesOnMACOSX.blogspot.com

        【讨论】:

          【解决方案6】:

          基于@user495470 的answer...

          在 macOS Sierra(可能更早)中,您可以将其放入 automator 中的 Run Apple Script 框中:

          do shell script "[[ $(defaults read com.apple.finder AppleShowAllFiles) = ON ]] && b=OFF || b=ON
          defaults write com.apple.finder AppleShowAllFiles $b
          killall Finder"
          

          换行很重要(否则我会在上面评论)。

          killall Finder 替换整个 tell 块,因为它准备好后会自行重新启动。

          【讨论】:

            【解决方案7】:

            这是一个切换所有不可见文件可见性的脚本。

            set myShell to "defaults read com.apple.Finder AppleShowAllFiles"
            set myVisible to (do shell script myShell)
            if myVisible = "0" then
                set myShell to "defaults write com.apple.Finder AppleShowAllFiles 1"
            else
                set myShell to "defaults write com.apple.Finder AppleShowAllFiles 0"
            end if
            set myResult to (do shell script myShell)
            tell application "Finder"
                quit
                delay 2
            end tell
            activate application "Finder"
            return myVisible
            

            我不记得为什么要这样写,例如为什么我在最后添加了 return 命令。我知道它适用于自 10.6.8 以来的所有 OSX 版本。与 Parag Bafna 的另一个答案的不同之处在于,不会询问您是显示还是隐藏文件。如果文件被隐藏,它们就会显示出来,如果它们是可见的,它们就会被隐藏。

            【讨论】:

            • @DigiMonk 我真的很惊讶这很重要。文章没有解释原因。只有当您将硬盘格式化为“Mac OS Extended (Case Sensitive)”时,这可能才重要。
            • @DigiMonk 的错误是什么?如果你告诉我错误,我会调整脚本。
            • @DigiMonk 我在其他版本的 OSX 中尝试过这个,这不是问题,即使 shell 返回错误。你在 OSX 10.9 中试过吗?您可以在此处粘贴错误消息的文本吗?第一次运行脚本时,它根本不做任何事情。如果您在脚本中切换 0 和 1,它将起作用。
            • 没问题,@DigiMonk
            • 感谢您的回答@Mark。
            【解决方案8】:

            我看到了一个链接,它提供了显示/隐藏隐藏文件的选项。

            http://appducate.com/2013/01/how-to-show-hidden-files-folders-on-your-mac/

            我使用了 Automator Script,您可以从我提供的链接中下载它。

            为了让我更有效地显示/隐藏隐藏文件,我使用 Automator 将脚本保存为应用程序。

            然后为我使用此处找到的步骤创建的“显示隐藏文件”应用程序创建了一个键盘快捷键:

            https://superuser.com/questions/245711/starting-application-with-custom-keyboard-shortcut

            现在,如果我想显示或隐藏隐藏文件,我只需按下键盘快捷键。我可以在任何应用程序中做到这一点。 :)

            顺便说一句,谢谢大家的回答。这只是另一种有效显示/隐藏隐藏文件的方法。

            【讨论】:

              【解决方案9】:

              要在 Mac OSX ElCaptain 中显示或隐藏文件,这是一个使用别名的简单脚本。创建一个别名并将其绑定到一个函数上。所以:

              #!/bin/bash
              
              #create an alias with function 
              
              a="s" 
              b="h" 
              
              function showHideFiles(){
              if [[ "$1" = "$a" ]];       #show hidden files
              then
                defaults write com.apple.finder AppleShowAllFiles true; killall Finder
              elif [[ "$1" = "$b" ]];     #hide hidden files
              then      
                defaults write com.apple.finder AppleShowAllFiles false; killall Finder
              fi
              }
              
              alias files=showHideFiles
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-06-25
                • 2015-05-22
                • 2018-06-03
                • 1970-01-01
                • 1970-01-01
                • 2012-10-24
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多