Thay đổi thư mục mà không cần gõ cd?


17

Có thể thực hiện bash thay đổi thư mục trong dòng lệnh chỉ bằng cách gõ thư mục đó mà không có bất kỳ lệnh nào như thế cdnào?

Ví dụ là có thể thay vì viết này:

$ cd /tmp

Tôi chỉ muốn viết điều này:

$ /tmp

Nói cách khác, nếu tôi gọi thư mục là một ứng dụng thì tôi muốn đặt thư mục đó là một ứng dụng.


9
Có cần phải bash? zsh có thể làm điều đó ( autocd)
Michael Mrozek

1
Không-không-không, tôi cần giải pháp trong bash =) Đó là yêu cầu chính vì ở một số tổ chức khoa học ở Nga lạnh có những di tích chỉ có bash là ngôn ngữ kịch bản;)
Vladimir

Số lượng nhập được lưu bằng cách không gõ "cd" có thể sẽ được bù bằng cách không tự động hoàn thành mặc định thông minh cho các đường dẫn. Ngoài ra phương pháp thay đổi thư mục này, thường như người ta thay đổi thư mục, có một chút đáng sợ khi vô tình chạy một chương trình (có khả năng độc hại) (mà bạn nghĩ là một thư mục) rất có thể.
michael

Nó hoạt động với tôi trong ZSH
is leatherx2

Câu trả lời:


36

Trong bash cũng có autocdtùy chọn. Bạn có thể kích hoạt nó bằng cách sử dụng shopt -s autocd:

pbm@tauri ~ $ shopt -s autocd
pbm@tauri ~ $ django # Now just type this
cd ./django    <- it's done automatically
pbm@tauri ~/django $

2
Tính năng mới yêu thích của tôi trong bash 4 để sử dụng tương tác. (Đối với kịch bản, nó **.) Thật không may, nó không có trong các phiên bản cũ hơn.
Gilles 'SO- ngừng trở nên xấu xa'

0

Tôi sẽ tưởng tượng như vậy. Có một số cơ chế bắt tất cả mà Ubuntu có. Khi bạn chạy một lệnh không có trên hệ thống, đôi khi nó sẽ báo:

Không có lệnh 'foo' được tìm thấy có nghĩa là: ...

Tôi cá là bạn có thể chiếm đoạt bất cứ thứ gì và thêm một tấm séc để xem nó có được đưa vào một thư mục không. Có lẽ đáng để đăng một câu hỏi khác hỏi những gì làm điều đó.

EDIT: Đã tìm thấy nó: https://wiki.ubfox.com/CommandNotFoundMagic


Vâng, đó là những gì người ta thường mong đợi - tuy nhiên, bash thông minh hơn chúng ta và thậm chí không gọi lệnh_not_found_handle cho các thư mục :(
Thomas Themel

Sau khi một số nghiên cứu tôi đã tìm thấy một bản vá nhỏ ( mail-archive.com/bug-bash@gnu.org/msg06761.html ) có thể sửa chữa nó. Thật không may, bản vá này không chính thức nên không thể sử dụng với phiên bản bash được cung cấp cùng với Ubuntu.
Vladimir
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.