shell如何再次执行之前的命令

时间:2019-04-16 23:59:04  来源:igfitidea点击:

bash中有一个重新调用命令-history

bash将历史命令放在缓冲区或者 ~/.bash_history文件中。
history缓冲区可以存放很多命令。
使用history命令可以显示在shell提示符下输入的历史命令列表。您还可以再次执行存储在历史中的命令。
history命令可以通过行号来显示历史命令列表。
默认情况下启用历史记录,但是可以使用set命令来禁用。

查看已执行的命令列表

[root@rhel6 tmp]# history
    1  ls 
    2  ls -l
    3  cd /etc/openldap/
    4  ls
    5  ls -l
    6  cat slapd.conf.bak 
    7  vi slapd.conf.bak 
    8  ls -l
    9  cp slapd.conf.bak slapd.conf
   10  vi slapd.conf
   11  ls
   12  mv slapd.d slapd.d.bak

linux搜索已执行的命令

在控制台(终端)上按 ctrl+r可以搜索在历史命令缓冲中的已执行的命令:

(reverse-i-search)`ldapmodify': ldapmodify -D "cn=ldapadmin,dc=theitroad,dc=com" -w onit-road -x -a -f root-user.ldif 

linux bash如何执行上次的命令

要执行上次执行的命令,可以使用向上箭头键 或者 两个感叹 !!

[root@rhel6 tmp]# date
Wed Apr  8 01:23:00 CST 2017
[root@rhel6 tmp]# !!
date
Wed Apr  8 01:23:06 CST 2017

linux再次执行最近以某个字符串开头的命令

再次执行最近以en开头的命令。(env命令)

  592  declare -i y=10
  593  echo $y
  594  y=a
  595  echo $y
  596  env
  597  which ls
  598  which pwd

[root@rhel6 tmp]# !en
env
HOSTNAME=rhel6
TERM=vt100

linux再次执行指定编号的历史命令

再次执行 540 命令

  540  vmstat -S m
  541  alias vmstat = 'vmstat -S m'

[root@rhel6 tmp]# !540
vmstat -S m
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0   1628     30    179    0    0     3     0   19   31  0  0 99  1  0
[root@rhel6 tmp]#