Làm thế nào để ẩn (trong Thunar và Nautilus) một thư mục mà không đặt dấu chấm vào tên của nó?


14

Thông thường các chương trình Linux lưu trữ cài đặt của người dùng trong các thư mục ~ /.*. Nhưng thật không may, một số nhà phát triển (một số ứng dụng tôi cần) không tuân theo quy tắc này và không bắt đầu cài đặt tên thư mục lưu trữ của họ bằng dấu chấm. Điều này dẫn đến việc các thư mục không bao giờ được sử dụng lộn xộn (có lẽ không phải là từ đúng, vì không có nhiều, nhưng dù sao chúng cũng gây khó chịu) một thư mục chính. Đổi tên chúng không phải là một lựa chọn, vì các ứng dụng sẽ không tìm thấy chúng trong trường hợp này (và sẽ tạo lại chúng).

Có cách nào để ẩn một thư mục không có dấu chấm bắt đầu từ tên của nó được hiển thị trong các trình duyệt hệ thống tệp chung (tôi thực sự sử dụng Thunar của XFCE, cùng với Midnight Commander và Krusader, nhưng cũng không muốn biết về Nautilus).

Câu trả lời:


18

Nautilus (Cập nhật: Điều này cũng sẽ hoạt động với Thunar ngay bây giờ) sẽ ẩn bất kỳ tệp hoặc thư mục nào được liệt kê trong tệp .hiddennằm trong cùng thư mục.

Có hai cách để ẩn thư mục trong Nautilus:

Kịch bản Nautilus

  1. Lưu mã sau vào một tệp mới trong thư mục nhà của bạn. Đặt tên cho nó Hide.

    #!/usr/bin/env python
    
    import commands
    from os.path import join
    
    
    files = commands.getoutput("echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
    cwd = commands.getoutput("echo $NAUTILUS_SCRIPT_CURRENT_URI")
    cwd = cwd[7:]
    
    for f in files.split(" /"):
    
        f = f.split("/")[-1]
    
        commands.getoutput("echo "+f+" >> "+join(cwd, ".hidden"))
  2. Chạy lệnh sau để cài đặt tập lệnh:

    cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
    
  3. Trong Nautilus, chọn một hoặc nhiều tệp / thư mục và nhấp chuột phải. Chọn Ẩn từ menu Tập lệnh :

    nhập mô tả hình ảnh ở đây

    Tải lại vị trí hiện tại ( F5) và các tệp / thư mục đã chọn sẽ bị ẩn.

Dòng lệnh

Giả sử bạn muốn ẩn một thư mục có tên "Những cú đánh vĩ đại nhất của Rick Astley", chỉ cần chạy lệnh sau:

echo "Rick Astley's Greatest Hits" >> .hidden

2
Chính xác là một loại câu trả lời tôi muốn nhận được. Nhưng, thật không may, không làm việc cho Thunar.
Ivan

@Ivan, Hy vọng họ sẽ thêm nó vào cuối cùng, xem báo cáo lỗi tôi liên kết đến trong câu trả lời của tôi.
Ê-sai

Tại sao trích dẫn kép "ObnoxiousFolder" ??
karthick87

FYI, báo cáo lỗi đã bị đóng là WONTFIX (IMO khá thô lỗ, vì đã có bản vá cho nó và người bảo trì dự án về cơ bản đã nói "Tôi không quan tâm"). Chúng ta sẽ cần một giải pháp khác ...
waldyrious

Phiên bản gần đây của Thunar hỗ trợ điều này khi họ sử dụng GIO để xác định các thư mục ẩn và GIO hiện thực hiện hỗ trợ cho .hiddentệp.
Brian Campbell

1

Mở synaptic và tìm kiếm "nautilus-hide" cài đặt nó. Đăng xuất và đăng nhập. Bây giờ bấm chuột phải vào bất kỳ tập tin hoặc thư mục. Bây giờ bạn sẽ thấy tùy chọn "Ẩn" trong Menu ngữ cảnh.

Nó sẽ không sửa đổi tên nhưng ẩn thư mục.


0

Tôi đã sửa đổi tập lệnh tốt của Alvin thành (hy vọng) nhiều Pythonic hơn (và có khả năng nhanh hơn nếu nhiều tệp được thêm vào, vì chỉ .hiddenđược mở một lần):

#!/usr/bin/env python

import os

files = os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].split()
# According to https://help.ubuntu.com/community/NautilusScriptsHowto
# the list is newline-delimited, which is split()'s default separator

# No need for NAUTILUS_SCRIPT_CURRENT_URI
cwd = os.path.dirname(files[0])
# Assuming all selected files are in the same path, I cannot imagine why not

# Instead of relying on "echo ... >> ..." use Python's IO:
with open(os.path.join(cwd, ".hidden"), "a") as hidden:
    hidden.write("\n".join(
        [os.path.basename(f) for f in files.split()]))
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.