Làm thế nào bạn sẽ xóa một thư mục có tên * in / from bash?


8

Hãy nói rằng tôi đã có một thư mục có tên *dưới /. Tôi biết rằng các lệnh phổ biến như rm -rf * sẽ không hoạt động. Có ai giúp đỡ không?


2
Về mặt kỹ thuật, rm *sẽ làm việc để xóa thư mục đó.
Đại tá Panic

Câu trả lời:


7

sử dụng lệnh ngắn này:

rm /\*

1
Điều đó sẽ không hoạt động - đó là một thư mục.
ness101

1
Sau đó sử dụng 'rmdir / \ *'. Tùy chọn khác là sử dụng 'rm -rf / \ *'. Nhưng làm điều sau là nguy hiểm nếu bạn làm sai.
Serge

14

Bạn có thể trích dẫn các đối số duy nhất để ngăn chặn xử lý bằng shell.

rm -r '/*'

Kiểm tra nó một cách an toàn bằng cách sử dụng ls(trong các thư mục chứa tệp):

$ ls '*'
ls: *: No such file or directory

Trong trường hợp này, dấu ngoặc kép cũng hoạt động tốt, nhưng nếu có $liên quan, chúng sẽ không, vì shell sẽ cho rằng đó là một biến:

$ ls "foo$bar"
ls: foo: No such file or directory
$ ls 'foo$bar'
ls: foo$bar: No such file or directory

Đối với GNU rm, bạn cũng có thể thêm --trước các đối số tên tệp để ngăn chúng khỏi bị phân tách thành đối số. Điều này sẽ cho phép bạn xóa các tệp có tên -rfmà không có vấn đề.


Không yêu cầu. Bạn chỉ có thể thoát khỏi '*' để nó không được mở rộng bằng vỏ như Serge trả lời.
darnir

5
@darnir Bạn không cần sử dụng nó nếu bạn không thích nó. Nhưng bạn phải biết những nhân vật nào sẽ trốn thoát khi sử dụng cách tiếp cận của Serge (xem xét &) và thoát khỏi chúng một cách riêng lẻ, điều này có thể dễ dàng trở thành nỗ lực hơn so với trích dẫn một lần. Do đó, tôi xem xét cá nhân thoát khỏi kém hơn và đăng thay thế này.
Daniel Beck

3
@Serge Tôi không nói câu trả lời của bạn là xấu. Nó hoàn thành công việc và được chấp nhận . Tuy nhiên, nếu có nhiều cách (hợp lý khác nhau) để đạt được điều gì đó với những ưu và nhược điểm khác nhau, hãy liệt kê tất cả. Chúng có thể không hoạt động trong mọi tình huống, vì vậy thật tốt khi có các lựa chọn thay thế. Cũng xin lưu ý rằng người dùng có vấn đề tương tự (không giống nhau) có thể đến câu hỏi từ Google. Đó cũng là một ý tưởng tốt để mở rộng phạm vi nếu nó dẫn đến các câu hỏi có thể giúp nhiều người hơn. Viết câu trả lời phạm vi rộng hơn là một khởi đầu ở đó.
Daniel Beck

1
Tôi không có mục đích để có được tất cả các câu trả lời của tôi được chấp nhận và với nỗi đau cao nhất. Tôi dành vài ngày (cuối tuần này) với một số trang web này. Ấn tượng đầu tiên là tôi có thể chia sẻ với mọi người kiến ​​thức của mình, đây là lý do tại sao tôi bắt đầu cung cấp câu trả lời. Trên SO tôi đã nhận được 760 điểm trong ba ngày này. Có, một số câu trả lời của tôi không có chất lượng cao từ các điểm khác nhau. Nhưng tất cả đều đúng. Nhưng bây giờ tôi thấy rằng hầu hết những người đặt câu hỏi ở đây - là những học sinh không muốn dành một giây để tự tìm giải pháp. Điều gì cho tôi sẽ dành thời gian của tôi?
Serge

1
@Serge Không chắc ý kiến ​​của bạn là gì. Từ những gì tôi thấy sau khi bạn đề cập đến nó, bạn đã có một khởi đầu ấn tượng để đóng góp cho các trang web. Nếu có điều gì đó tôi có thể giúp bạn trong việc sử dụng các trang web hoặc điều gì khác mà bạn muốn thảo luận, vui lòng ping tôi khi trò chuyện. Tôi đang ở UTC + 2, vì vậy bạn có thể không nhận được phản hồi sớm. Về câu hỏi "người mới bắt đầu": Hãy nhớ rằng một số thông tin không dễ khám phá. Đọc toàn bộ bashtrang man sẽ mất một lúc nếu bạn không biết tìm kiếm gì.
Daniel Beck
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.