vỏ cá: tương tự shopt -s dotglob


9

Tôi đang cố gắng di chuyển từ bashđến fish.

Là những gì fish's analog để shopt? Tôi đang cố gắng bắt chước dòng này từ .bashrc:

shopt -s dotglob # for mv * see hidden files

Khá chắc chắn là không có. tài liệu nói về các tệp chấm không được đưa vào mà không đề cập đến bất kỳ cơ chế cấu hình nào. Có lẽ bạn sẽ phải toàn cầu với {,.}*thủ công.
glenn jackman

1
Lưu ý, bạn có thể muốn hỏi trên stackoverflow.com, một số người bảo trì cá đi chơi ở đó.
glenn jackman

Câu trả lời:


8

Đây là cố ý. Hầu hết thời gian người dùng không muốn vô tình khớp các tệp ẩn mà không nhìn thấy ls(không có -a). Thông thường, các tập tin được ẩn vì một lý do, không chỉ để troll bạn. Ngoài ra, nếu *phù hợp với các tệp bị ẩn, việc khớp các tệp không bị ẩn sẽ quá khó khăn.

Tuy nhiên, không giống như bash shopt -s dotgloblà không cần thiết để phù hợp với các tập tin ẩn. Trong bash, shopt -s dotgloblà cách duy nhất để khớp mọi tệp trong thư mục mà không vô tình khớp .hoặc ... Tuy nhiên, vỏ cá không bao giờ có thể khớp .hoặc ..với các khối, do đó không phải là vấn đề (nếu bạn thực sự cần phải khớp .hoặc ..vì một lý do ngớ ngẩn nào đó, chỉ cần nói rõ ràng). Ngoài ra, cá cố gắng tránh có các lựa chọn theo thiết kế, vì vậy nó không có dotglob.

Để khớp với từng tệp trong thư mục, bạn có thể muốn sử dụng mở rộng khung để phát hiện các tệp bắt đầu bằng dấu chấm và những tệp không có. {.,}là mở rộng khung phù hợp với dấu chấm có thể tồn tại hoặc không tồn tại. Ngôi sao sau khi nó phù hợp với tất cả mọi thứ. Bởi vì các khối trong cá không thể khớp .hoặc .., đoạn mã sau khớp với tất cả mọi thứ trừ hai thư mục đó (bash rất khớp, nếu bạn sử dụng mã bên dưới)

cat {.,}*
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.