Как мне периодически отключать показ скрытых файлов?
Итак, чтобы скрыть некоторые файлы и папки для неопытных глаз, я изменил их имена, поставив точку в начале имени. Это работает, а файлы скрыты. Любопытные люди, которые неопытны, не увидят их. А с помощью 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
- использование
gconftool-2
заnautilus-file-management-properties
Страница man: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html - использование
crontab -e
для вашего графика. man-страница: https://help.ubuntu.com/community/CronHowto