快捷键参考
- 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和多分屏的终端工具