一天一命令-history

一天一命令-history

系统软硬件环境平台:

VMware Workstation Pro 12.5.5 build-5234757

CentOS Linux release 7.3.1611

软件版本:bash --version

GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)

测试时间:2017年5月29日


history-Display or manipulate the history list.(显示或者处理命令历史)

help history
info history
man bash

history命令格式和选项3种:

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
n:显示最近的n条命令
-c:清空当前的命令历史记录
-d offset:删除历史中指定的第几条命令
-a:追加本次会话中新执行的命令列表到历史文件.bash_history中
-n:读历史文件中未读过的行到历史列表
-r:读取历史文件附加到当前会话的历史列表(与-a相对)
-w:保存历史列表到指定的历史文件中
-p:展开历史参数成多行,但不保存在历史列表中
-s:展开历史参数成一行,附加在历史列表后

快捷键搜索匹配

执行上一个命令:向上方向键;按!!;输入!-1;多次按Ctrl+p重复显示之前的命令(同向上方向键)

执行下一个命令:向下方向键;或多次按Ctrl+n

执行历史中的某条命令:!n  !22

执行倒数第n个命令:!-n  !-4

执行最近的以字符串开头的命令:!keyword  !service

执行最近的包含关键字的命令:!?keyword  !?share

执行上一条命令的第n列命令或参数,常用于写脚本:!:n(!:0执行第0列命令,!:1执行第1列命令或参数)

搜索历史命令:Ctrl+r,退出Ctrl+g

重新调用前一个命令中的最后一个参数:!$ ; Esc,.(按Esc松开再按.键);Alt+.(按住Alt同时按.键)

!string:p  仅打印出最近的以字符串开头的命令历史而不执行

!$:p  打印输出!$(即上一条命令的最后一个参数)的内容

!*:p  打印输出!*(即上一条命令的所有参数)的内容

^string  删除上一条命令中的第一个string

^string1^string2  将上一条命令中的string1替换为string2

!:gs/string1/string2  将上一条命令中的所有的string1都替换为string2

调用历史参数

cmd !^  利用上一条命令的第一个参数作为当前cmd的参数

cmd !$  利用上一条命令的最后一个参数作为当前cmd的参数

cmd !*  利用上一条命令的全部参数作为当前cmd的参数

cmd !:n  利用上一条命令的第n个(列)参数作为当前cmd的参数

cmd !n:^  调用第n条命令的第一个参数

cmd !n:$  调用第n条命令的最后一个参数

cmd !n:m  调用第n条命令的第m个参数

cmd !n:*  调用第n条命令的所有参数

cmd !string:^  从命令历史中搜索以string开头的命令,并获取它的第一个参数

cmd !string:$  从...最后一个参数

cmd !string:n  从...第n个参数

cmd !string:*  从...所有参数

命令历史相关环境变量

HISTSIZE:命令历史记录的条数,定义大小的文件为/etc/profile

HISTFILE:指定命令历史文件,默认为~/.bash_history,注销后系统自动将history命令列表写入此文件中

HISTFILESIZE:上面指定的命令历史文件所记录的条数

HISTTIMEFORMAT=‘%F %T ‘:显示命令执行的时间

HISTIGNORE="str1:str2:...":忽略str1:str2:..的命令历史,也可以加*号模糊匹配,如hostname*:pwd

HISTCONTROL:命令历史控制变量,ignoredups默认,ignorespace忽略空白开头,ignoreboth前两个,erasedups删除重复命令

案例:

#history
#wc -l .bash_history
#history -c  //清除命令历史,但不清除.bash_history文件内容
#history -d 4  //删除第4条命令,后续命令会自动往前补充
#history 4  //显示最近的4条命令
#history -p `pwd` `ls`  //执行命令但不保存在历史列表中
#history -s "rm -rf aaa"  //不执行命令,只是将命令追加到历史列表中

#!ls  //执行以ls开头的命令
ls /home/
abc/  usera/
#!?init  //执行包含init的命令
ls /etc/init.d/
functions  netconsole  network  README
#!l:p  //仅打印出以l开头的命令而不执行
ls /etc/init.d :p
#id -u usera
1000
#^usera^root  //参数替换
id -u root
0

#ll /etc/issue
#cat !$
file (按键Esc,.)  //命令显示为file /etc/issue,即调用上一条命令的参数

#ls -l /home/usera
#!:0  //显示第0列的命令
ls
#!:2  //显示第2列的参数
/home/usera

临时生效
echo $HISTTIMEFORMAT
HISTTIMEFORMAT=‘%F %T ‘
永久生效
将定义的环境变量写入/etc/profile或~/.bash_profile中
vi ~/.bash_profile
export HISTTIMEFORMAT=‘%F %T ‘

彻底清空命令历史
rm -rf .bash_history
history -c
exit

此文章为个人学习总结,如有任何问题,可发送邮件至[email protected],互相交流。

时间: 2024-10-05 20:30:31

一天一命令-history的相关文章

一天一命令-ls

一天一命令-ls 系统软硬件环境平台: VMware Workstation Pro 12.5.5 build-5234757 CentOS Linux release 7.3.1611 软件版本:ls (GNU coreutils) 8.22 测试时间:2017年5月26日 ls - list directory contents,显示目录中的文件列表 一.ls基本信息 #ls --version ls (GNU coreutils) 8.22 #type -a ls ls is aliase

一天一命令-screen

一天一命令-screen screen 多终端窗口管理器,可以通过该软件同时连接多个本地或远程会话,并自由切换 Use: screen [ -options ] [ cmd [ args ] ] screen -r [[pid.]tty[.host]] screen -r sessionowner/[[pid.]tty[.host]] -A 将所有的窗口都调整为目前终端机的大小 -c file 读取指定配置文件 -d 剥离别处正在运行的会话 -D 剥离并退出远程会话 -h 设置回滚的命令历史大小

一天一命令-sed

一天一命令-sed sed - stream editor for filtering and transforming text sed 4.2.2 sed是一种流编辑器,读取一行,处理一行,输出一行.sed先读取文件中的一行内容存储到被称为模式空间(pattern space)的临时缓冲区中,接着根据设定的条件来处理缓冲区中的内容,多个条件则多次处理,处理完成后,输出到屏幕,接着读取和处理下一行.源文件内容并没有改变,除非使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对多个文

历史命令history

历史命令在用户注销之后会保存在用户家目录下的-/.bash_history中 history #查看系统中实时缓存的历史命令,与.bash_history中的内容并不完全相同 history -c #清空历史命令 history -w #把缓存中的历史命令写入历史命令保存文件.bash_history中 历史命令的存储容量可在/etc/profile中通过添加 HISTSIZE=1000 来改变. 历史命令的调用: 使用上.下箭头或ctrl+p.ctrl+n 使用 !n 执行第n条历史命令 使用

一天一命令-命令帮助

一天一命令-命令帮助 如何系统的学习一个bash命令: 需求,了解命令的格式,选项,帮助手册,案例,练习,拓展. 想要达到什么效果,有没有这样的命令,命令的格式和使用方法,有什么其他的选项,系统中的完整的帮助手册,常用的选项和案例有哪些,拓展的命令使用方法. 5w1h方法:what,why,when,where,who,how 1.程序自身的帮助文档:/usr/share/doc/cmd-version 2.发行版官方文档:http://www.redhat.com/docs 3.Google

一天一命令-xargs

一天一命令-xargs xargs 传递标准输入作为下一个命令的参数或者重新格式化并输出 xargs默认命令是echo,默认分隔符是空格.xargs可以将输入文本转换为单行或多行显示,即指定每行显示的个数. Usage: xargs [OPTION]... COMMAND INITIAL-ARGS... -0 显示为一列,默认显示为一行,以空格为分隔符 -a file 从文件读取数据而非标准输入 -d 指定分隔符 -l num 指定每行显示的参数个数 -n num 指定以空格为分隔符显示每行的参

Linux 命令 - history: 显示或操作历史列表

命令格式 history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] 命令参数 -c 清除历史列表. -d offset 删除编号为 offset 的历史条目. n 显示最近的 n 条记录. 历史记录扩展 序列 行为  !!  重复最后一个执行过的命令.按向上箭头键再按 Enter 键也可以实现相同的功能,而且更符合操作习惯.  !number   重复历史记录中第 number 行的命令.  !s

用日志记录Linux用户执行的每一条命令(history)

工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案.这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器 第一种方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # vi /etc/profile #设置history格式 export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S

【Linux命令详解】10、查看历史命令—[ history]

10.history     可以查看命令历史记录,每一条命令前面都会有一个序列号标示. 10.1.1 命令语法:     history [选项] 10.1.2 选项参数 history命令选项参数含义 选项              选项含义 -c                 清除命令历史记录 -w                让bash将历史命令立即从内存写到.bash_history文件 -a                 将目前新增的history历史命令写入.bash_his