Làm cách nào để tắt định kỳ hiển thị các tập tin ẩn?


10

Vì vậy, để ẩn một số tệp và thư mục vào mắt không có kỹ năng, tôi đã sửa đổi tên của chúng đặt dấu chấm vào đầu tên. Nó hoạt động, và các tập tin được ẩn. Những người tò mò không có kỹ năng sẽ không nhìn thấy họ. Và bằng cách sử dụng Nautilus, tôi bật và tắt "hiển thị các tệp ẩn" bằng cách sử dụng tổ hợp phím Ctrl- H. Khỏe. Nhưng sau đó tôi không bao giờ biết nếu tôi bật hoặc tắt tính năng này.

Tôi muốn viết một tập lệnh bash tự động khởi động cứ sau 10 phút và sẽ tắt tính năng "hiển thị các tập tin ẩn". Vì vậy, tôi chắc chắn rằng đôi mắt tò mò sẽ không bao giờ nhìn thấy các tập tin ẩn. Bây giờ vấn đề là:

  • Tôi không biết hướng dẫn sử dụng bash nào, nếu có. Tôi khá chắc chắn rằng các tập lệnh bash có thể làm hầu hết mọi thứ, vì vậy, xin vui lòng giúp đỡ!
  • Tôi không biết cách tự động khởi động tập lệnh bash mỗi xx giây hoặc phút.

Tôi phải làm nó như thế nào?


Xin chào Sarandazzo, nếu một trong những câu trả lời giải quyết được vấn đề của bạn (tôi nghĩ có nhiều câu trả lời có hiệu quả), bạn sẽ thật tử tế khi chấp nhận câu trả lời (đánh dấu "V" lớn bên dưới mũi tên lên / xuống bên trái). Đây là cách thích hợp để chỉ ra câu trả lời có hiệu quả với bạn.
Jacob Vlijm 22/03/2016

Câu trả lời:


10

Bạn có thể sử dụng gsettingsđể truy cập cài đặt có trách nhiệm trong dconfsổ đăng ký một cách dễ dàng từ dòng lệnh.

Cài đặt hiển thị các tệp ẩn (có tên bắt đầu bằng .) được đặt trong lược đồ org.gtk.Settings.FileChooservà được gọi show-hidden.

Các giá trị được phép là true(hiển thị các tệp ẩn) hoặc false(không hiển thị chúng).

Vì vậy, đây là các lệnh để bật hoặc tắt hiển thị các tệp ẩn:

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

Để tự động chạy lệnh này mỗi x phút, có hai tài nguyên tốt để tìm hiểu cách đạt được điều này:

  • Sử dụng cron(độ phân giải tối thiểu là 1 phút): help.ubfox.com: Cron How-to

    Lưu ý rằng cronchạy các tác vụ với một bộ envbiến rất hạn chế không bao gồm DBUS_SESSION_BUS_ADDRESS, nhưng điều đó cần thiết gsettingsđể làm việc. Vì vậy, chúng ta phải tự thiết lập biến này trong tập lệnh mà chúng ta chạy nếu chúng ta cần nó

    Tôi đã chuẩn bị một kịch bản cho bạn (với sự giúp đỡ của @JacobVlijm , người đã liên kết với tôi câu trả lời này trên Stack Overflow của @Radu Rădeanu ) giải quyết vấn đề này và có thể được điều hành trực tiếp bởi 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
  • Không sử dụng cron: Làm thế nào để thực thi lệnh cứ sau 10 giây (không có cron)?


Ha, bạn đánh tôi 9 giây :)
Jacob Vlijm

Xin chào Byte, khi chạy từ cron, bạn cần đặt DBUS_SESSION_BUS_ADDRESSbiến môi trường để chỉnh sửa gsinstall hoạt động.
Jacob Vlijm

@JacobVlijm Cảm ơn, nhưng tôi không có kinh nghiệm về cron. Đó là lý do tại sao tôi chỉ liên kết trang web hướng dẫn. Bạn có phiền giúp tôi không?
Chỉ huy Byte

Hoàn toàn, khi chạy các lệnh từ cron, tập hợp các env vars bị giới hạn (rất), như tôi đã từng cố gắng chạy các lệnh từ cron. Bài đăng hay này là bài này: stackoverflow.com/a/19666729/1391444 Các dòng của Radu, tôi luôn sử dụng trong các tập lệnh khi chỉnh sửa gsinstall từ cron.
Jacob Vlijm

@JacobVlijm Bao gồm phần env. nó có đúng không?
Chỉ huy Byte

5

Tôi sẽ phải kiểm tra các bản phát hành khác, nhưng vào ngày 14.04 và 15.10, gsettingslệnh để kiểm tra mức độ hiển thị của các tệp ẩn là:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Để đặt giá trị thành false(không hiển thị các tệp ẩn):

    gsettings set org.gtk.Settings.FileChooser show-hidden false
  • hoặc true:

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

1. Một tập lệnh để (tái) đặt giá trị sau đó là:

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

Để chạy nó:

  • sao chép tập lệnh vào một tập tin trống, lưu nó dưới dạng reset_hidden.py
  • chạy nó bằng lệnh:

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

    trong đó khoảng thời gian tính bằng giây, vd

    python3 /path/to/reset_hidden.py 600

Thêm nó vào các ứng dụng khởi động

Để thêm nó vào Ứng dụng khởi động: Dash> Ứng dụng khởi động> Thêm. Thêm lệnh:

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

2. Chạy lệnh từ cron

Nếu bạn thích chạy lệnh từ cron thay vì tập lệnh nền, một biến môi trường quan trọng không được đặt:

DBUS_SESSION_BUS_ADDRESS

chỉnh sửa / cài đặt gsinstall từ cron chỉ hoạt động nếu bạn đặt biến đầu tiên .

Nếu bạn muốn chạy nó từ cron, hãy tạo cron chạy đoạn script bên dưới:

#!/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. Thanh lịch hơn, sử dụng thời gian nhàn rỗi

Nếu bạn đang làm việc trên máy tính của mình, có lẽ bạn sẽ không muốn các tệp bị ẩn bất ngờ trong khi làm việc.

Sử dụng tập lệnh bên dưới, các tệp sẽ bị ẩn sau một thời gian nhàn rỗi tùy ý. Thiết lập chính xác như thế [1]nhưng <interval>thời gian bây giờ là <idle_time>(tính bằng giây), trước khi các tệp sẽ ẩn (một lần nữa).

Kịch bản cần xprintidle:

sudo apt-get install xprintidle

Kịch bản

#!/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
Tôi có thể xác nhận rằng lược đồ / khóa gsinstall của bạn là chính xác vào ngày 15.10. Và +1 :)
Chỉ huy Byte

0
  1. Sử dụng gconftool-2cho nautilus-file-management-propertiesmanpage: http://manpages.ubfox.com/manpages/hardy/man1/gconftool-2.1.html
  2. Sử dụng crontab -echo lịch trình của bạn. trang web: https://help.ubfox.com/community/CronHowto

1
Tôi không thể nói cho bạn biết chính xác từ khi nào, nhưng gconfkhông được sử dụng bởi ít nhất là Nautilus. Trên hệ thống 15.10 của tôi, cài đặt của bạn không còn khả dụng. Ngoài ra, bạn nên mô tả các bước rõ ràng hơn thay vì chỉ đưa ra gợi ý.
Chỉ huy Byte
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.