Wie schalte ich das Anzeigen versteckter Dateien regelmäßig aus?

10

Um einige Dateien und Ordner für ungelernte Augen zu verbergen, habe ich ihre Namen geändert und einen Punkt an den Anfang des Namens gesetzt. Es funktioniert und Dateien werden ausgeblendet. Neugierige, die nicht qualifiziert sind, werden sie nicht sehen. Und mit Nautilus I turn „Versteckte Dateien anzeigen“ ein- und ausschalten , indem Sie die Tastenkombination Ctrl- H. Fein. Aber dann weiß ich nie, ob ich die Funktion ein- oder ausschalte.

Ich möchte ein Bash-Skript schreiben, das beispielsweise alle 10 Minuten automatisch startet und die Funktion "Versteckte Dateien anzeigen" deaktiviert. Ich wäre mir also sicher, dass neugierige Augen niemals versteckte Dateien sehen werden. Das Problem ist nun:

  • Ich weiß nicht, welche Bash-Anweisung ich verwenden soll, wenn überhaupt. Ich bin mir ziemlich sicher, dass Bash-Skripte fast alles können, also bitte helfen Sie!
  • Ich weiß nicht, wie ich das Bash-Skript alle xx Sekunden oder Minuten automatisch starten soll.

Wie mache ich es?

Salrandazzo
quelle
Hallo Sarandazzo, wenn eine der Antworten Ihr Problem gelöst hätte (ich denke, es gibt mehrere Antworten, die funktionieren), würden Sie die Antwort so freundlich akzeptieren (kreuzen Sie das große "V" unter den Aufwärts- / Abwärtspfeilen links an). Dies ist der geeignete Weg, um die für Sie erarbeitete Antwort anzugeben.
Jacob Vlijm

Antworten:

10

Sie können verwenden, gsettingsum dconfeinfach über die Befehlszeile auf die verantwortliche Einstellung in der Registrierung zuzugreifen .

Die Einstellung, ob versteckte Dateien (mit Namen beginnend mit .) angezeigt werden sollen, befindet sich im Schema org.gtk.Settings.FileChooserund wird aufgerufen show-hidden.

Zulässige Werte sind entweder true(versteckte Dateien anzeigen) oder false(nicht anzeigen).

Hier sind die Befehle zum Aktivieren oder Deaktivieren der Anzeige der versteckten Dateien:

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

Um diesen Befehl automatisch alle x Minuten auszuführen, gibt es zwei gute Ressourcen, um zu lernen, wie dies erreicht wird:

  • Verwenden cron(Mindestauflösung 1 Minute): help.ubuntu.com: Cron How-to

    Beachten Sie, dass cronAufgaben mit einem sehr begrenzten Satz von envVariablen ausgeführt werden, die nicht enthalten sind DBUS_SESSION_BUS_ADDRESS, aber für gsettingsdie Arbeit erforderlich sind . Wir müssen uns also darum kümmern, diese Variable selbst in dem Skript festzulegen, das wir ausführen, wenn wir es brauchen

    Ich habe ein Skript für Sie vorbereitet (mit Hilfe von @JacobVlijm, der mir diese Antwort auf Stack Overflow von @Radu Rădeanu verknüpft hat ), das sich um dieses Problem kümmert und direkt ausgeführt werden kann von 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
  • Ohne Verwendung cron: Wie wird der Befehl alle 10 Sekunden ausgeführt (ohne Cron)?

Byte Commander
quelle
Ha, du hast mich 9 Sekunden geschlagen :)
Jacob Vlijm
Hallo Byte, wenn Sie von cron ausgeführt werden, müssen Sie die DBUS_SESSION_BUS_ADDRESSUmgebungsvariable festlegen, damit das Bearbeiten von Einstellungen funktioniert.
Jacob Vlijm
@JacobVlijm Danke, aber ich habe überhaupt keine Erfahrung mit Cron. Deshalb habe ich gerade die How-to-Site verlinkt. Würde es Ihnen etwas ausmachen, mir zu helfen?
Byte Commander
Absolut, wenn Befehle von cron ausgeführt werden, ist die Menge der env-Variablen (sehr) begrenzt, da ich einmal versucht habe, Befehle von cron auszuführen. Netter Beitrag ist dieser: stackoverflow.com/a/19666729/1391444 Radus Zeilen, die ich immer in Skripten verwende, wenn ich gsettings von cron bearbeite.
Jacob Vlijm
@JacobVlijm Enthält den env-Teil. ist es richtig?
Byte Commander
5

Ich muss nach anderen Versionen suchen, aber am 14.04 und 15.10 gsettingslautet der Befehl zum Überprüfen der Sichtbarkeit versteckter Dateien:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • So setzen Sie den Wert auf false(versteckte Dateien nicht anzeigen):

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

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

1. Ein Skript zum (erneuten) Setzen des Werts lautet dann:

#!/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"])

Um es auszuführen:

  • Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter reset_hidden.py
  • Führen Sie es mit dem folgenden Befehl aus:

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

    wobei das Zeitintervall in Sekunden ist, z

    python3 /path/to/reset_hidden.py 600

Fügen Sie es zu Startanwendungen hinzu

So fügen Sie es zu Startanwendungen hinzu: Dash> Startanwendungen> Hinzufügen. Fügen Sie den Befehl hinzu:

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

2. Führen Sie den Befehl von cron aus

Wenn Sie den Befehl lieber von cron anstelle eines Hintergrundskripts ausführen möchten, wird keine wichtige Umgebungsvariable festgelegt:

DBUS_SESSION_BUS_ADDRESS

Das Bearbeiten / Einstellen von Einstellungen von cron funktioniert nur, wenn Sie die Variable zuerst festlegen .

Wenn Sie es von cron aus ausführen möchten, lassen Sie cron das folgende Skript ausführen:

#!/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. Eleganter mit Leerlaufzeit

Wenn Sie an Ihrem Computer arbeiten, möchten Sie wahrscheinlich nicht, dass die Dateien während der Arbeit unerwartet ausgeblendet werden.

Mit dem folgenden Skript werden Dateien nach einer beliebigen Leerlaufzeit ausgeblendet. Das Setup ist genau wie, [1]aber die <interval>Zeit ist jetzt die <idle_time>(in Sekunden), bevor sich die Dateien (wieder) verstecken sollten.

Das Skript benötigt xprintidle:

sudo apt-get install xprintidle

Das Skript

#!/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
Jacob Vlijm
quelle
1
Ich kann bestätigen, dass Ihr gsettings-Schema / Schlüssel am 15.10 korrekt ist. Und +1 :)
Byte Commander
0
  1. Verwendung gconftool-2für die nautilus-file-management-propertiesManpage: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Verwenden Sie crontab -efür Ihren Zeitplan. Manpage: https://help.ubuntu.com/community/CronHowto
Ivan Temchenko
quelle
1
Ich kann dir seit wann nicht genau sagen, ist aber gconfveraltet und wird zumindest von Nautilus nicht mehr benutzt. Auf meinem 15.10-System ist Ihre Einstellung nicht mehr verfügbar. Außerdem sollten Sie die Schritte klarer beschreiben, anstatt nur Hinweise zu geben.
Byte Commander