如何定期关闭显示隐藏文件?


10

因此,为了将某些文件和文件夹隐藏在不熟练的人眼中,我修改了它们的名称,并在名称的开头加了一个点。它有效,并且文件被隐藏。不熟练的爱管闲事的人不会看到他们。使用Nautilus,我可以使用组合键Ctrl- 打开和关闭“显示隐藏文件” H。精细。但是后来我不知道是否要启用或禁用该功能。

我想编写一个bash脚本,该脚本每隔10分钟自动启动一次,并将关闭“显示隐藏文件”功能。因此,我可以确定,爱管闲事的眼睛永远不会看到隐藏的文件。现在的问题是:

  • 我不知道要使用什么bash指令(如果有)。我非常确定bash脚本几乎可以完成所有操作,所以请帮忙!
  • 我不知道如何每隔xx秒或每分钟自动启动bash脚本。

我该怎么做?


嗨,萨兰达佐,您好,如果其中一个答案解决了您的问题(我认为有多个答案都可以使用),那么您是否愿意接受答案(请选中左侧向上/向下箭头下方的大“ V”)。这是表明答案对您有用的适当方法。
Jacob Vlijm '16

Answers:


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

要每x分钟自动运行此命令,有两个不错的资源来学习如何实现此目的:

  • 使用cron(最小分辨率为1分钟):help.ubuntu.com:Cron操作方法

    请注意,cron运行带有非常有限的env变量集的任务,这些变量不包含DBUS_SESSION_BUS_ADDRESS,但这是gsettings工作所需的。因此,如果需要,我们必须在运行的脚本中自行设置此变量

    我编写了一个脚本,你(的帮助下@JacobVlijm谁联系我堆栈溢出此答案@RaduRă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)?


哈,你打败我9秒钟:)
雅各布·弗利姆

嗨,字节,从cron运行时,您需要设置DBUS_SESSION_BUS_ADDRESS环境变量以使编辑gsettings起作用。
Jacob Vlijm '16

@JacobVlijm谢谢,但是我完全没有cron的经验。这就是为什么我只链接了方法站点。你介意帮我吗?
字节指挥官

绝对地,当从cron运行命令时,env vars的集合非常有限,因为我曾经发现尝试从cron运行命令。好的帖子是这样的:stackoverflow.com/a/19666729/1391444 Radu的代码行,当从cron编辑gsetting时,我总是在脚本中使用。
Jacob Vlijm '16

@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编辑/设置gsettings

如果要从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-2nautilus-file-management-properties手册页:http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. crontab -e你的日程安排。联机帮助页:https : //help.ubuntu.com/community/CronHowto

1
我不能确切地告诉您何时开始,但gconf已被Nautilus弃用,并且不再使用。在我的15.10系统上,您的设置不再可用。另外,您应该更清楚地描述步骤,而不仅仅是给出提示。
字节指挥官
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.