Показать / Скрыть скрытые файлы без перезапуска искателя?

13

Я понял, что следующим образом можно переключать видимость скрытых файлов:

defaults write com.apple.finder AppleShowAllFiles YES
# replace YES with NO to hide hidden files
killall -HUP Finder /System/Library/CoreServices/Finder.app

Есть ли способ показать / скрыть скрытые файлы, не убивая Finder?

Вивек Рагунатан
источник

Ответы:

6

Изменить: Это больше не работает, начиная с Эль-Капитан. killall Finderкажется, единственный путь сейчас.

Это мой текущий метод El Capitan, который также должен работать для Mountain Lion и старше

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState & "; killall Finder"

Для Маверикс и Йосемити ...

Вам не нужно перезапускать Finder, только обновить окна.

Этот Applescript будет переключать состояние и обновлять ...

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState


tell application "Finder"
    set theWindows to every Finder window
    repeat with i from 1 to number of items in theWindows
        set this_item to item i of theWindows
        set theView to current view of this_item
        if theView is list view then
            set current view of this_item to icon view
        else
            set current view of this_item to list view

        end if
        set current view of this_item to theView
    end repeat
end tell

Кредит ganbustein для улучшения скрыть / показать рутину

Tetsujin
источник
Вам не нужен tell application "System Events"блок вокруг двух do shell script ...команд. На самом деле, я удивлен, что System Events позволяет вам сказать, что он вызывает do shell script.
Ганбастейн
Я не эксперт в этом - я всегда просто использовал системные события, если мне кажется, что «кому-то конкретно» нечего сказать ;-)
Tetsujin
2
Он «всегда работал», потому что системные события возвращают код ошибки, который означает «сделай сам», и сценарий молча делает именно это для обработки ошибки. Проблема в том, что вы будете вызывать do shell scriptс привилегиями другого приложения, не давая ему возможности проверить сценарий. Apple внесла это изменение, чтобы закрыть дыру в безопасности, где вы могли бы попросить программу, работающую от имени пользователя root, сделать ваш сценарий для вас.
Ганбастейн
1
@ganbustein Я вставил вашу версию в пару других мест на SE. Я использовал это в ответе. Спасибо за вклад. Наиболее ценится.
Тецудзин
Это здорово, за исключением того, что он не меняет сам рабочий стол. Есть ли способ сделать это, кроме перезапуска Finder?
TJ Luoma
10

В macOS Sierra версии 10.12.4 и выше вы можете нажимать + Shift+ . (точка) , чтобы переключать скрытые файлы в Finder.

Позднее редактирование: в настоящее время это работает и в Мохаве, начиная с b5, 18 августа 2018 года.

viktorstrate
источник
@ fd0, в нем говорится «... переключать скрытые файлы внутри Finder.», а ключевое слово здесь - «переключать», что обычно подразумевает нажатие одной и той же комбинации клавиш быстрого доступа, и в этом случае скрывает / скрывает скрытые файлы. +1
user3439894
Знаете ли вы эквивалент для неамериканских версий?
ogerard
Не забывайте, что вы можете использовать ту же комбинацию клавиш в диалоговых окнах Открыть / Сохранить, чтобы временно показать скрытые файлы.
boris42
Все еще работает в апреле 2019 года!
Серебряный Волк - Восстановить Монику