Pushd / popd là một khái niệm đơn giản khiến tôi mất một lúc để hiểu vì mọi người có xu hướng dạy nó bằng cách định nghĩa các lệnh này là các lệnh 'thao túng ngăn xếp thư mục' mà theo tôi là khó hiểu.
Tôi nhìn nó theo một cách khác:
pushd [FOLDER_NAME] - ý chí cd tới [FOLDER_NAME] và sẽ ghi lại các điểm đến mà là [FOLDER_NAME] trong một ngăn xếp dir trong khi thư mục hàng đầu trong ngăn xếp sẽ luôn luôn là dir hiện tại bạn đang ở trong
popd - trước tiên sẽ đưa bạn vào bản ghi thư mục nằm trên cùng của ngăn xếp và sau đó xóa nó khỏi ngăn xếp
dirs - Sẽ in dir chồng (có thể được coi là các dir Db nơi entry tận cùng bên trái là thư mục hiện hành (trên cùng của ngăn xếp)
Vì vậy, 2 trường hợp sử dụng phổ biến nhất là:
Trường hợp sử dụng 1: Điều hướng bằng cách sử dụng Pushd và popd
root@mypc:/main/$ ls
dir1 dir2 dir3 dir4
root@mypc:/main/$ dirs # prints the current stack
/main
root@mypc:/main/$ pushd dir1 # Will cd to dir1 and document dir1 in dir stack, stack is now:
/main/dir1 /main
root@mypc:/main/dir1$ # I am now in /main/dir1
root@mypc:/main/dir1$ # Now let's go wild and document whatever I want
root@mypc:/main/dir1$ pushd ../dir2
root@mypc:/main/dir2$ # Woo I am in /main/dir2
root@mypc:/main/dir2$ pushd ../dir3
root@mypc:/main/dir3$ # Woo I am in /main/dir3
root@mypc:/main/dir3$ pushd ../dir4
root@mypc:/main/dir4$ # Woo I am in /main/dir4
root@mypc:/main/dir4$ dirs # Now dir stack is:
/main/dir4 /main/dir3 /main/dir2 /main/dir1 /main
Hãy nói rằng tôi đã làm như trên vì tôi muốn điều hướng trở lại những thư mục mà tôi đã ghi lại!
Lưu ý rằng nếu tôi thủ công cd, tôi sẽ ảnh hưởng đến mục nhập ngăn xếp thư mục hàng đầu (luôn luôn là thư mục hiện tại)
root@mypc:/main/dir4$ cd .. # Now dir stack is:
# (note that /main appear in the leftmost as well which is the top of the stack)
/main /main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$
Hãy điều hướng ngược lại ngay bây giờ:
root@mypc:/main$ popd
root@mypc:/main$ # Still in /main since it was at the top of the dir stack
root@mypc:/main$ dirs # Stack is now:
/main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$ popd
root@mypc:/main/dir3$ popd # Woo in dir3 now, about to navigate to dir2
root@mypc:/main/dir2$ popd # Woo in dir2, about to navigate to dir1
root@mypc:/main/dir1$ dirs # Stack is now:
/main
Một lần nữa tôi có thể ghi lại bất cứ thư mục nào tôi muốn và sau đó điều hướng thủ công đến một thư mục khác sau đó tôi sẽ có thể dễ dàng quay lại thư mục tài liệu mà tôi đã chèn vào ngăn xếp.
Trường hợp sử dụng 2: Điều hướng bằng chỉ mục ngăn xếp số
Hãy nói rằng tôi đã đẩy bằng cách sử dụng Pushd dir4 dir3 dir2 dir1, bây giờ đang chạy dir -v sẽ hiển thị:
root@mypc:/main$ dirs -v
0 /main/dir1 (this is the current dir you are in always)
1 /main/dir2
2 /main/dir3
3 /main/dir4
Bây giờ bạn có thể thực hiện bất kỳ hoạt động Linux nào liên quan đến các thư mục bằng cách sử dụng chỉ mục ngăn xếp:
root@mypc:/main$ cp ~2/temp.txt ~3/new_temp.txt # this will run in the background, something like:
# cp /main/dir2/temp.txt /main/dir3/new_temp.txt
Bạn thậm chí có thể xóa một mục cụ thể từ ngăn xếp dir:
root@mypc:/main$ popd ~4
Hy vọng rằng việc sử dụng các từ "tài liệu" hoặc suy nghĩ về ngăn xếp dir như một số loại Db đơn giản hóa khái niệm này!
cd -
, bí danh để rút ngắncd ..
, v.v.).