chown, chgrp: 'cannot dereference' instead of 'cannot access' for a missing operand

Đang mở Phù hợp với người mới
#15,867 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@emirmrkaljevic đang làm issue này rồi.

Từ ngày 26/10/2026.

  • #15868 của @emirmrkaljevic — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
84/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
cli

Hướng nghiên cứu

Bắt đầu với tests/by-util/test_chown.rs, đặc biệt là assertion đã bị chú thích trong test_chown_file_notexisting, sau đó kiểm tra cách xử lý lỗi của chown và chgrp mà assertion này kiểm thử. Bổ sung kiểm thử cho các toán hạng bị thiếu và trường hợp f/, đồng thời giữ nguyên cụm từ được mong đợi “cannot dereference” đối với các liên kết tượng trưng bị treo; hoàn tất khi kiểm thử của cả hai tiện ích đều vượt qua.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

U - chgrp U - chown

For a missing operand, chown and chgrp say "cannot dereference" where GNU says "cannot access". GNU only uses "cannot dereference" when the operand is a symlink whose target can't be reached.

$ touch f
$ chown "$(id -u)" f/ nosuch/x     # GNU coreutils 9.12
chown: cannot access 'f/': Not a directory
chown: cannot access 'nosuch/x': No such file or directory
$ uu-chown "$(id -u)" f/ nosuch/x
chown: cannot dereference 'f/': Not a directory
chown: cannot dereference 'nosuch/x': No such file or directory

chgrp behaves the same way. A dangling symlink (ln -s missing l; chown "$(id -u)" l) gives "cannot dereference" in both, which is correct. tests/by-util/test_chown.rs already has a commented-out assertion for this in test_chown_file_notexisting.

Found with behave, a tool that records a CLI's behaviour and replays it against another implementation.

Ngôn ngữ chính
Rust
Star
24.3k
Fork
2.1k
Merge trung bình
1 ngày 21 giờ
Pull request đã merge (30 ngày)
363

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của uutils/coreutils

Tất cả issue của uutils/coreutils

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.