快捷键参考

  • ctrl+r(查找历史命令)、ctrl+p(上一历史命令)、ctrl+a(跳到行首)、ctrl+e (调到行尾)、ctrl+f (前进)、ctrl+b (后退)
  • ctrl+u (删除光标前所有)、ctrl+k (删除光标后所有)
  • alt+t (交换最后两个参数的位置)

bash历史命令展开

  • 命令替换
!!                  # 执行上一次命令
!n                  # 表示第n条命令
!-n                 # 表示倒数第n条命令
!string             # 表示以string开始的最近的一条命令
!?string?           # 表示含有string的最近的一条命令
$ ^string1^string2^ # 表示执行上一条命令,并将其中的第一个string1替换为string2,如果string1不存在则替换失败,不会执行命令。
!#                  # 表示当前命令现在已经输入的部分,如echo 1 2 !#会执行echo 1 2 echo 1 2
  • 参数获取
!!:0              # 表示上一命令的第0个参数,即命令本身
!2:n              # 表示第2个命令的第n个参数
!!:^              # 表示上一命令第1个参数,可进一步简写为!^,与!!:1同义
!!:$              # 表示上一命令的最后一个参数,可进一步简写为!$
!!:x-y            # 表示第x到第y个参数,-y意为0-y
!!:*              # 表示上一命令的参数部分,可进一步简写为!*
!!:n*             # 跟!!:n-$同义
!!:n-             # 意为!!:n-$-1,从第n个参数到倒数第二个参数

bash脚本中的一些特殊变量

$_ 代表上一个命令的最后一个参数
$# 参数个数
$0 当前 shell 名称(zsh or bash)或脚本的名字 $1 传递给该shell脚本的第一个参数
$2 传递给该shell脚本的第二个参数
$@ 表示所有的独立的参数,将各个参数分别加双引号返回
$* 以一对双引号给出参数列表
$$ 脚本运行的当前进程ID号或所在命令的PID
$? 显示最后命令的退出状态,0表示执行成功,其他表示失败
$! 代表最后执行的后台命令的PID

特殊变量PS1配置

通过修改PS1可以修改终端提示,比如我的终端: 我的终端

参数 含义
\d 日期,格式为weekdat month date
\H 完整的主机名称
\h 仅取主机的第一个名字
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v bash版本信息
\w 完整的工作目录名称。家目录会以~代替
\W 利用basename取得工作目录名称,所以只会列出最后一个目录
# 下达的第几个命令
$ 提示字符,如果是root,提示符为:#,普通用户则为:$
! 命令行动态统计历史命令次数

推荐工具

fzf 配合ctrl+r查找历史的时候可以动态的选择命令,用一次你就会爱不释手
terminator 在一个窗口下多tab和多分屏的终端工具


Table of contents