web-dev-qa-db-ja.com

隠しファイルの表示を定期的にオフにするにはどうすればよいですか?

そのため、一部のファイルとフォルダーを熟練していない目に見えないようにするために、名前の先頭にドットを付けて名前を変更しました。それは機能し、ファイルは隠されます。熟練していないおせっかいな人々はそれらを見ません。そして、Nautilusを使用して、キーの組み合わせを使用して「隠しファイルを表示」をオンまたはオフにします Ctrl-H。いいよしかし、その機能をオンにするかオフにするかはわかりません。

たとえば、10分ごとに自動的に開始し、「隠しファイルを表示」機能をオフにするbashスクリプトを作成したいと思います。だから私は、おせっかいな目で隠しファイルを見ることはないだろうと確信しています。問題は次のとおりです。

  • 使用するbash命令がある場合、それはわかりません。 bashスクリプトはほとんどすべてを実行できると確信しています。
  • Xx秒または数分ごとにbashスクリプトを自動的に開始する方法がわかりません。

どうすればいいのですか?

10
Salrandazzo

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分ごとに自動的に実行するには、これを実現する方法を学ぶための2つの優れたリソースがあります。

  • cronを使用(最小解像度は1分): help.ubuntu.com:Cron How-to

    cronは、DBUS_SESSION_BUS_ADDRESSを含まないenv変数の非常に限られたセットでタスクを実行しますが、gsettingsが機能するために必要です。したがって、必要な場合は、実行するスクリプトでこの変数を設定する必要があります。

    私をリンクした(@ JacobVlijmの助けを借りて、スクリプトを準備しました スタックオーバーフローに関するこの回答 by@ 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なし)?

10
Byte Commander

他のリリースを確認する必要がありますが、14.04および15.10では、隠しファイルの可視性を確認するgsettingsコマンドは次のとおりです。

gsettings get org.gtk.Settings.FileChooser show-hidden
  • setに値を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からコマンドを実行する場合、重要な環境変数はnotsetです:

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
5
Jacob Vlijm
  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
0
Ivan Temchenko