一天一命令-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.(显示或者处理命令历史) helphistory infohistory manbash history命令格式和选项3种: history[-c][-doffset][n] history-anrw[filename] history-psarg[arg...] n:显示最近的n条命令 -c:清空当前的命令历史记录 -doffset:删除历史中指定的第几条命令 -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-d4//删除第4条命令,后续命令会自动往前补充 #history4//显示最近的4条命令 #history-p`pwd``ls`//执行命令但不保存在历史列表中 #history-s"rm-rfaaa"//不执行命令,只是将命令追加到历史列表中 #!ls//执行以ls开头的命令 ls/home/ abc/usera/ #!?init//执行包含init的命令 ls/etc/init.d/ functionsnetconsolenetworkREADME #!l:p//仅打印出以l开头的命令而不执行 ls/etc/init.d:p #id-uusera 1000 #^usera^root//参数替换 id-uroot 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 exportHISTTIMEFORMAT='%F%T' 彻底清空命令历史 rm-rf.bash_history history-c exit 此文章为个人学习总结,如有任何问题,可发送邮件至729815616@qq.com,互相交流。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |