Как мне периодически отключать показ скрытых файлов?

Итак, чтобы скрыть некоторые файлы и папки для неопытных глаз, я изменил их имена, поставив точку в начале имени. Это работает, а файлы скрыты. Любопытные люди, которые неопытны, не увидят их. А с помощью Nautilus я включаю и выключаю "показывать скрытые файлы", используя комбинацию клавиш Ctrl-H. Хорошо. Но тогда я никогда не узнаю, оставляю ли я функцию включенной или выключенной.

Я хотел бы написать скрипт bash, который автоматически запускается каждые, скажем, через 10 минут и отключает функцию "показывать скрытые файлы". Поэтому я был бы уверен, что любопытные глаза никогда не увидят скрытые файлы. Теперь проблема в том, что:

  • Я не знаю, какую инструкцию bash использовать, если она есть. Я уверен, что bash-скрипты могут делать практически все, поэтому, пожалуйста, помогите!
  • Я не знаю, как автоматически запускать скрипт bash каждые XX секунд или минут.

Как мне это сделать?

3 ответа

Ты можешь использовать gsettings чтобы получить доступ к ответственной настройке в dconf Реестр легко из командной строки.

Параметр отображения скрытых файлов (имена начинаются с .) находится в схеме org.gtk.Settings.FileChooser и называется show-hidden,

Допустимые значения: true (показать скрытые файлы) или false (не показывать их).

Итак, вот команды для включения или отключения отображения скрытых файлов:

gsettings set org.gtk.Settings.FileChooser show-hidden true
gsettings set org.gtk.Settings.FileChooser show-hidden false

Чтобы автоматически запускать эту команду каждые x минут, есть два полезных ресурса, чтобы узнать, как этого добиться:

  • С помощью cron (минимальное разрешение - 1 минута): https://help.ubuntu.com/community/CronHowto

    Обратите внимание, что cron выполняет задачи с очень ограниченным набором env переменные, которые не включают DBUS_SESSION_BUS_ADDRESS, но это нужно для gsettings работать. Поэтому мы должны сами позаботиться об установке этой переменной в скрипте, который мы запускаем, если нам это нужно

    Я подготовил для вас сценарий (с помощью @JacobVlijm, который связал меня с этим ответом о переполнении стека @Radu Rădeanu), который решает эту проблему и может быть запущен непосредственно cron:

    #!/bin/bash
    
    # --> Script to disable showing hidden files - to be run as cron job <--
    
    # export DBUS_SESSION_BUS_ADDRESS environment variable
    PID=$(pgrep gnome-session)
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
    
    gsettings set org.gtk.Settings.FileChooser show-hidden false
    
  • Без использования cron: Как выполнять команду каждые 10 секунд (без cron)?

Я должен буду проверить другие выпуски, но 14.04 и 15.10 gsettings Команда для проверки видимости скрытых файлов:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Чтобы установить значение false (не показывать скрытые файлы):

    gsettings set org.gtk.Settings.FileChooser show-hidden false
    
  • или же true:

    gsettings set org.gtk.Settings.FileChooser show-hidden true
    

1. Сценарий для (пере) установки значения затем:

#!/usr/bin/env python3
import subprocess
import sys
import time

interval = int(sys.argv[1])

key = "org.gtk.Settings.FileChooser"
val = "show-hidden"

while True:
    time.sleep(interval)
    subprocess.Popen(["gsettings", "set", key, val, "false"])

Чтобы запустить это:

  • скопируйте скрипт в пустой файл, сохраните его как reset_hidden.py
  • запустите его командой:

    python3 /path/to/reset_hidden.py <interval>
    

    где временной интервал в секундах, например

    python3 /path/to/reset_hidden.py 600
    

Добавьте его в автозагрузку приложений

Чтобы добавить его в Startup Applications: Dash > Startup Applications > Add. Добавьте команду:

python3 /path/to/reset_hidden.py <interval>

2. Запустите команду из cron

Если вы предпочитаете запускать команду из cron вместо фонового скрипта, важная переменная среды не устанавливается:

DBUS_SESSION_BUS_ADDRESS

Редактирование / установка настроек из cron работает только при первой установке переменной.

Если вы хотите запустить его из cron, сделайте так, чтобы cron запустил следующий скрипт:

#!/bin/bash

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

gsettings set org.gtk.Settings.FileChooser show-hidden false

3. Более элегантно, используя простой

Если вы работаете на своем компьютере, вам, вероятно, не хотелось бы, чтобы файлы неожиданно скрывались во время работы.

Используя приведенный ниже скрипт, файлы будут скрыты после произвольного простоя. Настройка в точности как [1] но <interval> время сейчас <idle_time> (в секундах), прежде чем файлы должны скрыться (снова).

Скрипт нужен xprintidle:

sudo apt-get install xprintidle

Сценарий

#!/usr/bin/env python3
import subprocess
import sys
import time

interval = int(sys.argv[1])

key = "org.gtk.Settings.FileChooser"
val = "show-hidden"

idle1 = 0

while True:
    time.sleep(2)
    idle2 = int(subprocess.check_output(["xprintidle"]).decode("utf-8").strip())/1000
    if all([idle1 <= interval, idle2 >= interval]):
        subprocess.Popen(["gsettings", "set", key, val, "false"])
    idle1 = idle2
  1. использование gconftool-2 за nautilus-file-management-properties Страница man: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. использование crontab -e для вашего графика. man-страница: https://help.ubuntu.com/community/CronHowto
Другие вопросы по тегам