loại bỏ hoặc xóa ngăn xếp của đường dẫn popd / Pushd


39

Sau khi pushding quá nhiều lần, tôi muốn xóa toàn bộ đường dẫn.

Làm thế nào tôi có thể popdtất cả các mục trong ngăn xếp?

Tôi muốn popdmà không cần biết có bao nhiêu trong ngăn xếp?

Hướng dẫn bash dường như không bao gồm điều này .

Tại sao tôi cần biết điều này? Tôi khó tính và dọn dẹp đống đồ.


1
BTW, hướng dẫn sử dụng bash hoàn chỉnh đã kết thúc tại gnu.org. Nếu bạn sử dụng tất cả trên một phiên bản trang, có thể dễ dàng tìm thấy nội dung ở đó.
jw013

Ah muốn google lập chỉ mục đó. Cảm ơn @ jw013
chrisjlee

Câu trả lời:


47

dirs -c là những gì bạn đang tìm kiếm.


1
cái này không làm trống ngăn xếp, nhưng không khôi phục thư mục làm việc từ đáy ngăn xếp
Eliran Malka

8

Để làm trống cả ngăn xếp khôi phục thư mục làm việc từ dưới cùng của ngăn xếp:

  • lấy thư mục đó từ dirs, thay đổi thư mục đó và xóa ngăn xếp:

    cd "$(dirs -l -0)" && dirs -c

    Các -ltùy chọn ở đây sẽ liệt kê đường dẫn đầy đủ, để đảm bảo chúng tôi không thất bại nếu chúng ta cố gắng cdvào ~, và -0lấy các mục nhập đầu tiên từ ngăn xếp dưới.

    @ jw013 đề xuất làm cho lệnh này mạnh mẽ hơn, bằng cách tránh mở rộng đường dẫn:

    pushd -0 && dirs -c
  • hoặc, popdcho đến khi bạn gặp lỗi (đó là trạng thái của một popdcuộc gọi khi ngăn xếp thư mục trống):

    while (( $? == 0 )); do popd; done

1
Phương pháp đầu tiên là chính xác những gì tôi muốn. Cái thứ hai sẽ không hoạt động trong trường hợp của tôi vì tôi đã gọi pushdmột vài lần, sau đó xóa một trong những thư mục ở giữa, sau đó popdthất bại khi tôi cố gắng hủy đăng ký. Tôi cần phải nhảy qua tất cả những thứ bị mắc kẹt ở giữa để quay lại nơi tôi bắt đầu.
Chuck Wilbur

đúng @ChuckWilbur - nếu bạn xáo trộn ngăn xếp dir, popdsẽ không cứu bạn :)
Eliran Malka

Tốt hơn là pushd -0thay vì cd "$(dirs ...)".
jw013

@ jw013 thế nào? điều đó sẽ gây rối với ngăn xếp dir hơn nữa (mà chúng tôi đang cố gắng xóa ở đây ..)
Eliran Malka

1
cd "$(...)"hoạt động trong 90%, thậm chí có thể là 99% trường hợp sử dụng, nhưng với pushd -0bạn có thể tự tin nói 100%. Có rất nhiều vấn đề tiềm ẩn và các trường hợp cạnh liên quan đến việc mở rộng đường dẫn tệp / thư mục trong shell mà điều mạnh nhất cần làm là chỉ cần tránh nó hoàn toàn, điều pushd -0này rất chính xác. Không có cơ hội bị bắt bởi một lỗi với trường hợp cạnh kỳ lạ nếu bạn không bao giờ chấp nhận rủi ro. Nếu bạn muốn đọc thêm về những cơn đau đầu có thể liên quan đến tên tệp / đường dẫn Unix, điểm khởi đầu tốt là mywiki.wooledge.org/ParsingLs
jw013
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.