Mac下使用Automator实现隐藏和显示

本文使用Makdown编辑


通常系统中打开一个文件有好多种方法,编辑也是。例如你要打开OmniGraffle来画个图(suppose you are working on the Mac OS X)
1.可以使用命令open来启动应用:open -a OmniGraffle [FiletoEdit]
2.各种文件管理器,默认的Finder, 还有PathFinder, DCommander, Transmit等,只要能调用Finder的open,save的也可以,Dock;
3.当然AppleScript/JavaScript, Shell(bash,zsh)也可以;
4.Alfred, Spotlight这类搜索类的;
----

Access Hidden Files or Folders

但是,有些文件和文件夹是隐藏的,Finder考虑到这个提供了『⌘+⇧+G』,这样只要你输入正确的路径就可以在finder中显示,这样可以通过点击继续任务,常用的~/Library$HOME/下的其他隐藏的文件夹都可以访问了
还有,通过 defaults write ... 来配置来显示:
defaults write com.apple.finder AppleShowAllFiles -bool true来显示所以隐藏的
defaults write com.apple.finder AppleShowAllFiles -bool false了关闭
还可以直接修改文件和文件夹的flag来弄:
chflags nohidden ***FileorFoldertoOperate***

But, 每次都有敲入这么多字符太麻烦,所以立马会想到用Shell的alias

alias showAll='defaults write com.apple.finder AppleShowAllFiles -bool true'
alias hideAll='defaults write com.apple.finder AppleShowAllFiles -bool false'

添加到.bash_profile, source .bash_profile,刷新Finder之后
But, 每次都有打开Terminal,尤其配置多了之后启动起来超级慢

更换iTerm 2

But, 这个配置是全局的,很多时候我只需要显示某一个或几个文件和文件夹,所以想到chflags

chflags nohidden Afile
chflags nohidden BFolder
chflags nohidden CFolder
...
...
# after
chflags hidden Afile
chflags hidden BFolder
chflags hidden CFolder
...

OK啦,但是很多时候打开Terminal,ls -la, ls -l, open, vim,发现并不需要显示或者隐藏什么
而打开Finder吧,有时候又需要显示隐藏
----
Object
所以想到Mac自带的任务流程工具 AppleScript/Automator,
写个Service添加到Folder

  1. 选中文件夹
  2. 可以选择『隐藏该文件夹』「Hide This」『显示该文件夹下所有隐藏的文件(夹)』「Show All Under」
  3. 允许选择多个文件夹
  4. 可以隐藏文件
    Services works with Finder

# Add a Finder Service

下面实现一下常用的几个


  1. 右键任何一个文件夹,选择Services->Create Service
  2. 搜selected,拖Get Selected Finder Items到右边panel
    step2
  3. 搜shell,拖Run Shell Script到右边panel
  4. Shell选/bin/bash,Pass Input选 as arguments
    4.1 隐藏 「hide」
for item in $@;do
 # doesn't matter it is a file or a directory
 echo $item
 chflags hidden "$item"
done

4.2 显示文件夹下的所以隐藏项「unhide under」

for folder in $@;do
    echo $folder
    if test -d $folder;then
    for dir in $folder/*;do
        if test -d $dir;then
        chflags nohidden "$dir"
        cat "$dir\n" >> .aHiddenItems
        fi
    done
    fi
done

4.3 隐藏文件夹下之前隐藏的「hide under」

for folder in $@;do
    if test -d $folder;then
        echo $folder
        if [ -d $folder/.aHiddenItems ];then
            for item in `cat $folder/.aHiddenItems`;do
                chflags hidden "$item"
            done
        fi
    fi
done
  1. Step和Run测试没有错误
    5.『⌘+S』保存,会自动保存到~/Library/Services/下
  2. 现在可以用了

转载于:https://www.cnblogs.com/raybiolee/p/5289342.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值