2

私はMacシェルスクリプトを初めて使用しますが、Macで隠しファイルの表示/非表示を切り替えるためにこれを書きました。(その後、自動化アプリケーションを実行)これは良い解決策ですか?

#!/bin/sh

view=$(defaults read com.apple.finder AppleShowAllFiles)

if [ "$view" = "1" ]
then
defaults write com.apple.finder AppleShowAllFiles -bool false
else
defaults write com.apple.finder AppleShowAllFiles -bool true
fi
killall Finder
4

5 に答える 5

2

Mac のターミナルから隠しファイルをすばやく表示/非表示にする方法が必要な場合は.bash_profile、ホーム ディレクトリのファイルに次の行を追加します。

alias hidden-files-show="defaults write com.apple.finder AppleShowAllFiles YES; killall Finder";
alias hidden-files-hide="defaults write com.apple.finder AppleShowAllFiles NO; killall Finder";

新しいコマンドを有効にするために、新しいターミナル ウィンドウを閉じてから開きaliasます。その後、「hid」-Tab をすばやく入力してオートコンプリートできます。

$ hidden-files-show
$ hidden-files-hide
于 2015-03-22T16:50:57.707 に答える
2

私は次のようなスクリプトを使用しています:

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

killall Finderそれほど危険かどうかもわかりません。Finder に TERM シグナルを送信します。これは通常、プロセスが正常に終了するためにキャッチできます。Finder は 10.8 の時点で突然の終了をサポートしていませんが、サポートしている場合は、KILL シグナルを送信しても安全です。

于 2013-08-17T12:34:28.303 に答える
1

この質問は古いですが、コードを使用した良い解決策は次のとおりです。

osascript -e 'tell app "Finder" to quit'

ファインダーを閉じるのと同様の方法ですが、ポール Rの回答よりも簡潔です。ポール、これを見て潜在的な問題を見逃している場合は、お知らせください

または、次を使用できます。

STATUS=`defaults read com.apple.finder AppleShowAllFiles`
if [ $STATUS == TRUE ]; 
then
 defaults write com.apple.finder AppleShowAllFiles FALSE
else
 defaults write com.apple.finder AppleShowAllFiles TRUE
fi
osascript -e 'tell app "Finder" to quit'
于 2013-08-16T17:35:17.560 に答える
1

の代わりにkillall Finder、これはやや極端で危険です (ファイルのコピーやその他の I/O 操作の途中で Finder を強制終了する可能性があります)。代わりに、AppleEvent を Finder に送信して、特定のウィンドウを更新するように指示することができます。たとえば、最前面のウィンドウを更新するには、AppleScript でこれを行うことができます。

tell application "Finder"
  tell front window
    update every item with necessity
  end tell
end tell

( http://hints.macworld.com/article.php?story=2009091413423819より)

必要に応じて、開いているすべての Finder ウィンドウを更新するように簡単に変更できます。

上記のような AppleScript コードを bash スクリプトから実行するには、osascriptコマンド ライン ツールを使用できます。

osascript <<EOF
tell application "Finder"
  tell front window
    update every item with necessity
  end tell
end tell
EOF
于 2011-10-14T10:13:10.007 に答える