Làm thế nào để đi đến thư mục làm việc trước đó trong thiết bị đầu cuối?


213

Trong terminal, làm thế nào tôi có thể xác định một khóa để đi đến thư mục trước mà tôi đã ở khi thay đổi thư mục bằng cdlệnh?

Ví dụ, tôi vào /opt/soft/binvà tôi cdvào /etc/squid3và tôi muốn quay lại thư mục đầu tiên.

Câu trả lời:


284

Bạn có thể dùng

cd -

hoặc bạn có thể sử dụng

cd $OLDPWD

3
Bất cứ ý tưởng tại sao tên thư mục được in ra bàn điều khiển khi sử dụng "cd -"?
dtmland

4
Có lẽ vì các shell cũ không hiển thị tên của thư mục hiện tại trong lời nhắc, nên rất hữu ích khi xem tên của thư mục khi bạn gõ cd -. Ví dụ: khi bạn nhập cd /usr/localbạn biết rằng bạn đang ở trong đó /usr/loal, nhưng khi bạn nhập cd -bạn không luôn nhớ từ thư mục nào bạn đến từ đâu. Vì vậy, nó tiết kiệm cho bạn từ gõ cd -; pwd. Nhưng đây là tất cả suy đoán.
Raphael Ahren

2
Hoặc bạn có thể sử dụng bí danh: Thiết lập bí danh alias -- -='cd -'sau đó sử dụng -(1 char) thay vì cd -(4 char). Nhanh hơn:D
ADTC

2
Làm thế nào tôi có thể sống mà không có điều này?
VSZM

1
@ AndréKuhlmann Bạn có thể làm cd -hai lần. Đừng cd /; cd /usr; cd -; cd -bạn phải ở trong /usr. Nhưng có lẽ tôi nhớ đã hiểu câu hỏi của bạn.
Raphael Ahren

54

Các câu trả lời khác chắc chắn là đầy đủ theo nghĩa trả lời trực tiếp. cd -cd $OLDPWDchắc chắn là những lựa chọn chính cho việc này. Tuy nhiên, tôi thường thấy rằng việc tham gia vào một quy trình làm việc với pushdpopdhoạt động tốt hơn.

Câu chuyện dài, nếu bạn đang di chuyển vào một thư mục với mục đích cuối cùng là quay lại nơi bạn bắt đầu, hãy sử dụng pushd/ popd.

Ví dụ mở rộng

Sự khác biệt chính dễ dàng được hiển thị bằng một ví dụ.

$ cd dir1
$ pushd dir2

Tại thời điểm này, bạn có một ngăn xếp thư mục dir2, dir1. Chạy pushdmà không có đối số sẽ đưa bạn trở lại dir1với ngăn xếp như bây giờ dir1, dir2. popdsẽ làm như vậy, nhưng sẽ để lại cho bạn một ngăn xếp thư mục trống. Điều này không khác nhiều so với cách bạn sẽ làm với cd -quy trình làm việc.

Tuy nhiên, bây giờ bạn có thể thay đổi thư mục nhiều lần và quay lại dir1. Ví dụ,

$ cd dir1
$ pushd dir2
$ cd dir3

Nếu bạn chạy popdvào thời điểm này, bạn sẽ quay trở lại dir1.


2
Bạn cũng có thể xếp chồng các thư mục, vì vậy hãy sử dụng nhiều lần pushdvà quay lại thư mục trước trong khi popd-ing.
Bernhard

1
Chắc chắn rồi. Tôi gần như đưa ra một ví dụ lớn bao gồm kiểm tra ngăn xếp với dirs -v, nhưng thực tế đối với tôi là thường thì trường hợp đơn giản là tất cả những gì tôi thực sự sử dụng. (Hoặc, tệ hơn, tôi mắc lỗi khi thử push +2hoặc tương tự) Ngoài ra, tôi nghĩ các bước bé để có ai đó thử quy trình làm việc. :)
Josh Berry

Làm thế nào để bạn cdlên đỉnh của ngăn xếp mà không xuất hiện?
Jon Deaton

18

Bạn nên sử dụng:

cd ~-

nó thực hiện giống như cd -(từ câu trả lời hiện được chấp nhận) mà không có tiếng vang khó chịu của thư mục và dễ gõ hơn cd "$OLDPWD"hoặc cd - > /dev/null.


2
Chuyển hướng tiếng vang thành tập tin null! Thật là thiên tài !!
Ram

2
Tiếng vang cho thấy thư mục mới không phải là thư mục trước. Và tôi sẽ thấy nó hữu ích, để tôi biết mình đang ở đâu, đặc biệt là nếu tôi ở trong một vỏ chỉ hiển thị tên thư mục hiện tại (hoặc không có gì cả) trên dấu nhắc, và tôi quá khó chịu để thay đổi nhắc để hiển thị đường dẫn đầy đủ. Tất nhiên, nếu lời nhắc của bạn đã hiển thị đường dẫn đầy đủ, tiếng vang sẽ là dư thừa và gây khó chịu. Trong trường hợp đó, tôi nghĩ bạn có thể thử thực hiện alias -- -='cd "$OLDPWD"'sau đó sử dụng -(1 char) thay vì cd ~-(5 char). :)
ADTC

Nguồn và giải thích: unix.stackexchange.com/a/330885/38213 Spoilers, - là một toán hạng và ~ là các bí danh đường dẫn. Vì vậy, cd ~-/..hoạt động nhưng cd -/..không!
Ray Foss

16
$ cd - 

sẽ thay đổi thư mục làm việc trước đó.


3

Bạn có thể "xác định khóa" cho 'cd -' bằng cách chỉnh sửa tệp '~ / .bashrc' của mình và bao gồm bí danh cho lệnh. Ví dụ: bạn có thể thêm 'cdc' để biến nó thành 'cd -' sẽ cung cấp cho bạn một cách ngắn hơn để đến thư mục cuối cùng bằng cách thêm:

alias cdc='cd -'

Bằng cách này, bạn chỉ cần gõ 'cdc' và nó sẽ đưa bạn vào thư mục làm việc cuối cùng của bạn.


5
Và làm bạn bối rối khi bạn sử dụng một hệ thống không có bí danh. Nó tiết kiệm gõ một ký tự mỗi lần trong một thời gian. Tại sao còn bận tâm?
CVn

2
"Trong thiết bị đầu cuối, làm thế nào tôi có thể xác định một khóa để đi đến thư mục trước" Tôi không bao giờ bị nhầm lẫn. Nó chỉ là một phím tắt, khi bạn đang ở trên một hệ thống khác, chỉ cần sử dụng cách lâu dài.
Atari911

@ Atari911 câu hỏi tuyệt vời! Đây là câu trả lời: stackoverflow.com/questions/4200800 Đây là những gì tôi đã làm (ràng buộc F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(hoặc tốt nhất là di chuyển nó sang inputrctệp như đã đề cập trong câu trả lời).
ADTC

1

cd ..đi đến thư mục tiền lệ trong cây của thư mục.
cd -đi đến thư mục mà trước đó. Lệnh này không hoạt động trên một số bản phân phối (ubfox 16.04), hoạt động trong debian 9.

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.