Bagaimana cara menonaktifkan file tersembunyi secara berkala?

10

Jadi, untuk menyembunyikan beberapa file dan folder ke mata yang tidak terlatih, saya memodifikasi nama mereka dengan meletakkan sebuah titik di awal nama. Ini berfungsi, dan file disembunyikan. Orang-orang usil yang tidak terampil tidak akan melihat mereka. Dan menggunakan Nautilus saya menghidupkan dan mematikan "tampilkan file tersembunyi" dengan menggunakan kombinasi tombol Ctrl- H. Baik. Tetapi kemudian saya tidak pernah tahu apakah saya menghidupkan atau mematikan fitur ini.

Saya ingin menulis skrip bash yang secara otomatis memulai setiap, katakanlah, 10 menit, dan akan mematikan fitur "tampilkan file yang tersembunyi". Jadi saya akan yakin bahwa mata yang ingin tahu tidak akan pernah melihat file tersembunyi. Sekarang masalahnya adalah:

  • Saya tidak tahu instruksi bash apa yang harus digunakan, jika ada. Saya cukup yakin bahwa skrip bash dapat melakukan hampir semua hal, jadi, tolong bantu!
  • Saya tidak tahu cara memulai skrip bash secara otomatis setiap xx detik atau menit.

Bagaimana saya melakukannya?

Salrandazzo
sumber
Hai Sarandazzo, jika salah satu jawaban memecahkan masalah Anda (saya pikir ada beberapa jawaban yang berfungsi), apakah Anda akan begitu baik menerima jawabannya (centang "V" besar di bawah panah atas / bawah di sebelah kiri). Ini adalah cara yang tepat untuk menunjukkan jawaban berhasil untuk Anda.
Yakub Vlijm

Jawaban:

10

Anda dapat menggunakan gsettingsuntuk mengakses pengaturan yang bertanggung jawab di dconfregistri dengan mudah dari baris perintah.

Pengaturan apakah akan menampilkan file tersembunyi (dengan nama yang dimulai dengan .) terletak di skema org.gtk.Settings.FileChooserdan dipanggil show-hidden.

Nilai yang diizinkan adalah true(tampilkan file tersembunyi) atau false(jangan perlihatkan).

Jadi di sini adalah perintah untuk mengaktifkan atau menonaktifkan menampilkan file yang tersembunyi:

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

Untuk menjalankan perintah ini secara otomatis setiap x menit, ada dua sumber yang bagus untuk mempelajari cara mencapai ini:

  • Menggunakan cron(resolusi minimum adalah 1 menit): help.ubuntu.com: Cron How-to

    Perhatikan bahwa cronmenjalankan tugas dengan set envvariabel yang sangat terbatas yang tidak termasuk DBUS_SESSION_BUS_ADDRESS, tetapi itu diperlukan untuk gsettingsbekerja. Jadi kita harus mengatur variabel ini sendiri dalam skrip yang kita jalankan jika kita membutuhkannya

    Saya menyiapkan skrip untuk Anda (dengan bantuan @JacobVlijm yang menautkan saya jawaban ini di Stack Overflow oleh @Radu Rădeanu ) yang menangani masalah ini dan dapat dijalankan langsung dengan 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
  • Tanpa menggunakan cron: Bagaimana menjalankan perintah setiap 10 detik (tanpa cron)?

Komandan Byte
sumber
Ha, Anda mengalahkan saya 9 detik :)
Jacob Vlijm
Hai Byte, ketika dijalankan dari cron, Anda perlu mengatur DBUS_SESSION_BUS_ADDRESSvariabel lingkungan untuk membuat pengeditan gsettings berfungsi.
Jacob Vlijm
@ JacobVlijm Terima kasih, tapi saya tidak berpengalaman dalam cron sama sekali. Itu sebabnya saya hanya menautkan situs how-to. Maukah Anda membantu saya?
Byte Commander
Tentu saja, ketika menjalankan perintah dari cron, himpunan env vars (sangat) terbatas, seperti yang pernah saya temukan ketika mencoba menjalankan perintah dari cron. Posting yang bagus adalah yang ini: stackoverflow.com/a/19666729/1391444 Baris Radu, saya selalu menggunakan skrip saat mengedit gsettings dari cron.
Jacob Vlijm
@JacobVlijm Termasuk bagian env. Apakah itu benar?
Byte Commander
5

Saya harus memeriksa rilis lain, tetapi pada 14.04 dan 15.10, gsettingsperintah untuk memeriksa visibilitas file tersembunyi adalah:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Untuk mengatur nilainya false(jangan tampilkan file tersembunyi):

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

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

1. Sebuah skrip untuk (mengatur ulang) nilainya adalah:

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

Untuk menjalankannya:

  • salin skrip ke file kosong, simpan sebagai reset_hidden.py
  • jalankan dengan perintah:

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

    di mana interval waktu dalam detik, mis

    python3 /path/to/reset_hidden.py 600

Tambahkan ke Aplikasi Startup

Untuk menambahkannya ke Aplikasi Startup: Dash> Startup Applications> Add. Tambahkan perintah:

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

2. Jalankan perintah dari cron

Jika Anda lebih suka menjalankan perintah dari cron daripada skrip latar belakang, variabel lingkungan penting tidak disetel:

DBUS_SESSION_BUS_ADDRESS

pengeditan / pengaturan gsettings dari cron hanya berfungsi jika Anda pertama kali mengatur variabel .

Jika Anda ingin menjalankannya dari cron, buat cron jalankan skrip di bawah ini:

#!/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. Lebih elegan, menggunakan waktu idle

Jika Anda bekerja di komputer, Anda mungkin tidak ingin menyembunyikan file secara tidak terduga saat bekerja.

Menggunakan skrip di bawah ini, file akan disembunyikan setelah waktu idle sewenang-wenang. Penyiapannya persis seperti [1]tetapi <interval>waktu sekarang adalah <idle_time>(dalam detik), sebelum file harus bersembunyi (lagi).

Kebutuhan skrip xprintidle:

sudo apt-get install xprintidle

Naskah

#!/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
Yakub Vlijm
sumber
1
Saya dapat mengonfirmasi bahwa skema / kunci gsettings Anda benar pada 15.10. Dan +1 :)
Byte Commander
0
  1. Gunakan gconftool-2untuk nautilus-file-management-propertieshalaman manual: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Gunakan crontab -euntuk jadwal Anda. manpage: https://help.ubuntu.com/community/CronHowto
Ivan Temchenko
sumber
1
Saya tidak bisa memberi tahu Anda secara persis sejak kapan, tetapi gconfsudah usang dan tidak lagi digunakan oleh setidaknya Nautilus. Di sistem 15.10 saya, pengaturan Anda tidak lagi tersedia. Anda juga harus menjelaskan langkah-langkahnya lebih jelas daripada hanya memberi petunjuk.
Byte Commander