Làm cách nào để làm mới thư mục trong BASH?


24

Tôi có một thư mục, chứa các tập tin được tạo bởi trình biên dịch. Trong mỗi lần xây dựng lại, thư mục này được dọn sạch và sau quá trình xây dựng lscho tôi đầu ra trống. Sau khi tôi cdra khỏi thư mục và sau đó trở lại nó ls hoạt động đúng. Các câu hỏi là:

  1. Có cách nào khác, thanh lịch hơn để làm mới thư mục?
  2. Điều gì thực sự xảy ra khi các tập tin bị xóa và tái tạo? Tại sao tôi cần phải cdxem nội dung thư mục thực tế?

Câu trả lời:


10

Kịch bản của bạn rất có thể xóa thư mục, và không chỉ các tệp ở đó. Vì vậy, khi bạn đã cdnhập nó và thư mục bị xóa, bạn sẽ thực hiện lstrên một thư mục không thực sự tồn tại.

Bởi cd ..cd (directory)bạn di chuyển lên và trở lại vào thư mục (mới được tạo) và các tệp có ở đó như bạn mong đợi.

Cách thay thế tốt nhất là thay vì cdvào và ra khỏi thư mục, là thêm tên thư mục vào lslệnh của bạn và chạy nó từ thư mục mẹ. Vì vậy, ls YourSubdirectorythay vì chỉ ls.


45

Thậm chí còn có một cách ngắn hơn: cd .


3
Hấp dẫn. Giống như chim ruồi, điều này, về mặt logic, không nên hoạt động - và có vẻ như nó hoạt động. Tôi đoán rằng bạn biết rằng nó hoạt động vì bạn đã thử nó. Bạn có tài liệu nào cho nó không? Tức là, nếu tôi ở trong nhóm phát triển POSIX / bash, tôi sẽ bị coi là lỗi này. Bạn có biết bất kỳ tài liệu nào nói rằng nó phải hoạt động theo cách này không?
G-Man nói 'Phục hồi Monica'

3
Giống như chim ưng, cái này, đẹp, bay lơ lửng trên những bông hoa - nhưng nó nuốt chửng những con chim ruồi.
Matt Faus

Vâng! quá hoàn hảo
chrismarx

1
Đây là câu trả lời tốt hơn.
depdebme

À. Tôi biết mà! Phải có một cách. Cảm ơn!
andersoyvind

10

Nó có vẻ kỳ lạ, nhưng nó ngắn và làm mới thư mục:

cd `pwd`

Lưu ý đó là những dấu tích ngược, không phải là trích dẫn đơn xung quanh pwd


2

Những gì @Kent đã nói hoặc: không xóa thư mục mà chỉ xóa nội dung của nó, bằng cách này bạn có thể ở trong thư mục (không có " cd .. && cd -") và "ls" thực hiện những gì bạn mong đợi.


2

Sẽ tốt hơn nếu bạn không xóa thư mục, nhưng thay vào đó cd ..; cd -bạn có thể làm cd $PWD.


2

tạo một bí danh refresh = "cd .. && cd -" sẽ đưa một thư mục lên và sau đó lại cd vào thư mục trước đó

nếu bạn chắc chắn rằng bạn sẽ cần một danh sách một lần nữa, bạn có thể có

alias refresh="cd .. && cd - && ls -lrt"

một khi ailas được tạo lưu trữ bí danh vào tệp ~ / .bashrc của bạn bằng cách thực hiện

alias | grep refresh >> ~/.bashrc

để nó có sẵn lần sau khi bạn đăng nhập.


Trong Unix refreshlà không có sẵn.
kenorb

Bạn có ý nghĩa gì bởi "ngoài luồng"? Khi tôi nhìn thấy nó, tôi giải thích nó có nghĩa là "tiêu chuẩn"; bây giờ tôi đang tự hỏi ý của bạn là gì Xác định "UNIX". Cygwin không có tiêu chuẩn lệnh "refresh" (OK, Cygwin đang thiếu rất nhiều thứ là tiêu chuẩn trong POSIX / * nix / bất cứ điều gì) và hệ thống Linux của tôi cũng không.
G-Man nói 'Tái lập Monica'
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.