Як періодично вимикати показ прихованих файлів?


10

Отже, щоб приховати деякі файли та папки до некваліфікованих очей, я змінив їхні імена, поставивши крапку на початку імені. Вона працює, а файли приховані. Нудні люди, які не є кваліфікованими, їх не побачать. І за допомогою Nautilus я включаю і вимикаю "показувати приховані файли" за допомогою комбінації клавіш Ctrl- H. Чудово. Але тоді я ніколи не знаю, залишаю чи вимикаю функцію.

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

  • Я не знаю, яку інструкцію bash використовувати, якщо така є. Я майже впевнений, що bash-скрипти можуть робити майже все, тому, будь ласка, допоможіть!
  • Я не знаю, як автоматично запускати скрипт bash кожні xx секунд чи хвилин.

Як це зробити?


Привіт Сарандаццо, якщо будь-яка з відповідей вирішила вашу проблему (я думаю, що існує кілька відповідей, які працюють), ви були б так люб'язно прийняти відповідь (позначте велике "V" під стрілками вгору / вниз ліворуч). Це відповідний спосіб вказати відповідь, яка працювала для вас.
Яків Влійм

Відповіді:


10

Ви можете використовувати 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

Щоб автоматично виконувати цю команду кожні х хвилин, є два хороших ресурси, щоб дізнатися, як цього досягти:

  • Використання cron(мінімальна роздільна здатність - 1 хвилина): help.ubuntu.com: Cron How-to

    Зауважте, що 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 секунд (без крона)?


Ха, ти бив мене 9 секунд :)
Яків Влійм

Привіт Байте, коли запускаєте з cron, вам потрібно встановити DBUS_SESSION_BUS_ADDRESSзмінну середовища, щоб змусити редагування gsettings працювати.
Яків Влійм

@JacobVlijm Спасибі, але я зовсім не досвідчений в cron. Ось чому я просто пов’язав сайт із практичними завданнями. Чи не проти ви допомогти мені?
Байт-командир

Абсолютно, коли запускаються команди з cron, набір env vars (дуже) обмежений, як я одного разу виявив, що намагався запускати команди з cron. Приємна публікація ця: stackoverflow.com/a/19666729/1391444 Рядки Раду, я завжди використовую в сценаріях під час редагування gsettings з cron.
Яків Влійм

@JacobVlijm Включено частину env. це правильно?
Байт командир

5

Мені доведеться перевіряти інші випуски, але 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

Додайте його до програм запуску

Щоб додати його до програм запуску: Даш> Запуски програм> Додати. Додайте команду:

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
Я можу підтвердити, що ваша схема / ключ gsettings правильна 15.10. І +1 :)
Байт командир

0
  1. Використовувати gconftool-2для nautilus-file-management-propertiesmanpage: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Використовуйте crontab -eдля свого розкладу. manpage: https://help.ubuntu.com/community/CronHowto

1
Я не можу вам точно сказати з тих пір, коли gconfвін застарілий і більше не використовується Наутілусом. У моїй системі 15.10 ваше налаштування більше не доступне. Також слід описати кроки чіткіше, а не просто давати підказки.
Байт-командир
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.