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

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

因此,为了隐藏一些文件和文件夹,不让不熟练的人看到,我修改了它们的名称,在名称开头加了一个点。这个方法有效,文件被隐藏了。不熟练的人将看不到它们。使用 Nautilus,我使用组合键Ctrl-来打开和关闭“显示隐藏文件” H。很好。但我从来不知道我应该打开还是关闭这个功能。

我想编写一个 bash 脚本,每隔 10 分钟自动启动一次,并关闭“显示隐藏文件”功能。这样我就能确保那些爱管闲事的人永远不会看到隐藏文件。现在的问题是:

  • 我不知道该使用什么 bash 指令(如果有的话)。我很确定 bash 脚本几乎可以做所有事情,所以,请帮忙!
  • 我不知道如何每 xx 秒或分钟自动启动 bash 脚本。

我该怎么做?

答案1

您可以从命令行轻松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谁链接了我Stack Overflow 上的这个答案经过@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)?

答案2

我必须检查其他版本,但在 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
    

将其添加到启动应用程序

要将其添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:

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

答案3

  1. 用于gconftool-2手册nautilus-file-management-properties页:http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. 用于crontab -e你的日程安排。手册页:https://help.ubuntu.com/community/CronHowto

相关内容