linux 命令历史扩展(Command History Expansion)

        引子:今天devops的同事给介绍了一个好用的功能,在linux里,使用history可以输出之前的命令行履历,使用!行号,就可以直接调出之前的命令执行,或者敲tab键再次输入该命令,调整或回车执行,很好用的功能,特意搜索整理下常用功能,方便使用。

1 查看命令历史:
# 显示之前执行的命令及其对应的行号
history
2 执行特定行号的命令:
# !行号
# 执行123行的命令
!123
3 执行最后一条命令:
# 重新执行上一次输入的命令
!!
4 执行以特定字符串开头的命令:
# !字符串
# 执行最近一次以 ls 开头的命令
!ls
5 引用最近命令的参数:
# 引用最近命令的最后一个参数:
# !$ 

# ls !$ 会展开为 ls foo。
echo foo
ls !$


# 引用最近命令的第一个参数:
# !^

# mv !^ directory/ 会展开为 mv file1 directory/。
cp file1 file2
mv !^ directory/
6 替换命令中的字符串:
# ^old^new

# 会执行 echo "hello universe"。
echo "hello world"
^world^universe
7 指定历史记录中的某个单词:
# !命令号:参数位置

# echo !123:2 会展开为 echo file2。
ls file1 file2 file3
echo !123:2
8 不执行命令,仅显示命令:
# !行号:p

# 会显示编号为 123 的命令,但不执行。
!123:p
9 组合使用替换和参数指定:
# !-2:1 会引用倒数第二条命令的第一个参数,即 file1,所以 mv !-2:1 newfile 会展开为 mv file1 newfile。

cp file1 file2
mv !-2:1 newfile

几个常用的示例:
  1  ls -l
  2  cd /var
  3  cp file1 file2
  4  echo "Hello, World!"



# 结果是 cp file1 file2
!3

# 结果是 echo "Hello, World!"
!!

# 结果是 cp file1 file2
!cp

# 假设上一条命令是 echo "Hello, World!",结果是 World!"
!$

# 结果是 /var
!2:1
补充:
1 在命令前加 # 可以阻止命令被记录到历史中:
# secret_command
2 使用 HISTSIZEHISTFILESIZE 可以设置历史记录的大小:
export HISTSIZE=1000
export HISTFILESIZE=2000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值