1. pushd 和 popd
1.1 作用
pushd /path/to/directory命令用来将目录添加到目录栈的顶部,并且切换到这个目录popd命令用来移除目录栈顶部的目录,并且切换到新的栈顶目录- 为了查看当前目录栈的内容,可以使用
dirs命令
与 cd - 的比较
cd - 命令在 shell 中用来切换到上一个目录,它实际上是切换到 OLDPWD 环境变量存储的路径。这个命令只记住了最近一次访问的目录,所以你只能在两个目录之间来回切换。
pushd 和 popd 管理一个目录栈,这意味着你可以存储多个目录,并且可以在这个栈中依次向前或向后移动。它们提供了更加复杂的目录导航功能,允许你“堆栈”多个目录,然后按照后进先出(LIFO)的顺序访问它们。
总结一下,这两者的区别主要在于:
cd -只能记忆一个目录,即上一次所在的目录,而pushd和popd可以记忆多个目录。cd -只能在最近两个目录间切换,pushd和popd可以在多个目录间顺序切换。cd -是一个简单的快捷方式,而pushd和popd提供了一个完整的目录栈管理系统。
1.2 一个实际场景
假设管理员需要在三台服务器的配置目录间切换:Web 服务器 /etc/nginx/,数据库服务器 /etc/mysql/,和邮件服务器 /etc/postfix/。他们需要检查配置文件,然后依次重启每个服务
# 当前在用户的家目录
# 场景目的:切换到 Nginx 配置目录
pushd /etc/nginx/ # 将 /etc/nginx/ 推入栈顶,并切换到该目录
# 栈: /etc/nginx/ ~/
# 检查 Nginx 配置...
# 场景目的:切换到 MySQL 配置目录
pushd /etc/mysql/ # 将 /etc/mysql/ 推入栈顶,并切换到该目录
# 栈: /etc/mysql/ /etc/nginx/ ~/
# 检查 MySQL 配置...
# 场景目的:切换到 Postfix 配置目录
pushd /etc/postfix/ # 将 /etc/postfix/ 推入栈顶,并切换到该目录
# 栈: /etc/postfix/ /etc/mysql/ /etc/nginx/ ~/
# 检查 Postfix 配置...
# 现在我们已经检查了所有的配置文件,开始依次重启服务
# 场景目的:返回 MySQL 配置目录以重启 MySQL 服务
popd # 弹出栈顶目录 /etc/postfix/,并回到 /etc/mysql/
# 栈: /etc/mysql/ /etc/nginx/ ~/
# 重启 MySQL 服务...
# 场景目的:返回 Nginx 配置目录以重启 Nginx 服务
popd # 弹出栈顶目录 /etc/mysql/,并回到 /etc/nginx/
# 栈: /etc/nginx/ ~/
# 重启 Nginx 服务...
# 场景目的:返回用户的家目录
popd # 弹出栈顶目录 /etc/nginx/,并回到用户的家目录
# 栈: ~/
2. !
2.1 历史命令快速访问
!!:执行上一条命令。!string:执行最近的以 string 开始的命令。!?string?:执行最近的包含 string 的命令。
2.2 快速引用参数
!$:引用上一命令的最后一个参数
!^:引用上一命令的第一个参数
!:n:引用上一命令的第 n 个参数
4271

被折叠的 条评论
为什么被折叠?



