Shell 使用中的一些命令小技巧(pushd & popd、!)

1. pushdpopd

1.1 作用

  • pushd /path/to/directory 命令用来将目录添加到目录栈的顶部,并且切换到这个目录
  • popd 命令用来移除目录栈顶部的目录,并且切换到新的栈顶目录
  • 为了查看当前目录栈的内容,可以使用 dirs 命令

cd - 的比较

cd - 命令在 shell 中用来切换到上一个目录,它实际上是切换到 OLDPWD 环境变量存储的路径。这个命令只记住了最近一次访问的目录,所以你只能在两个目录之间来回切换。

pushdpopd 管理一个目录栈,这意味着你可以存储多个目录,并且可以在这个栈中依次向前或向后移动。它们提供了更加复杂的目录导航功能,允许你“堆栈”多个目录,然后按照后进先出(LIFO)的顺序访问它们。

总结一下,这两者的区别主要在于:

  • cd - 只能记忆一个目录,即上一次所在的目录,而 pushdpopd 可以记忆多个目录。
  • cd - 只能在最近两个目录间切换,pushdpopd 可以在多个目录间顺序切换。
  • cd - 是一个简单的快捷方式,而 pushdpopd 提供了一个完整的目录栈管理系统。

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 个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郎碎碎念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值