一、命令行历史操作
在Linux中有一个history命令,通过它我们可以很方便的查找并执行原来的操作,但是在方便的同时,这个命令也会给系统带来安全隐患,所以配置恰当的history命令是一个Linux运维人员的基本技能之一。
当登录系统时,Linux会自动加载~/.bash_history中的内容到缓存中
登陆后执行的命令操作会记录在缓存中,当用户退出时,系统会自动将缓存中的内容写入命令文件中
history最大的用处是方便我们查找调用以前的命令,其中重复执行前一个命令有4种方法:
使用上下方向键查找
执行!!并回车
执行!-1回车执行
按ctrl+p回车执行
# !!lsadjtime e2fsck.conf krb5.conf pki sestatus.conf......
[root@centos7 etc]# !-1lsadjtime e2fsck.conf krb5.conf pki sestatus.conf......
!字符串:执行前一个以字符串开头的命令
!数字n:执行history中数字n的命令
!?字符串:执行前一个包含字符串的命令
!-n:执行第前n个命令
也可以用ctrl+r来通过关键字搜索以前执行的命令
如果要重新使用上一个命令的参数,有下面几种方法:
!$表示上一个命令的最后一个参数
esc+.:通常在ssh客户端,先按esc松手后在按.,同样表示上一个命令的最后一个参数
调用历史参数:
!^:上一个命令的第一个参数
!$:上一个命令的最后一个参数
!*:上一个命令的所有参数
!:n :上一个命令的第n个参数
!n:^:调用第n个命令的第一个参数
!n:$:调用第n个命令的最后一个参数
!m:n:调用第m个命令的第n个参数
!m:*:调用第m个参数的所有命令
!str:^:调用以str开头命令的第一个参数
!str:$:调用str开头命令的最后一个命令
!str:*:调用str开头命令的所有命令
!str:n:调用str开头的第n个命令
history的命令选项:
-c:清空history列表
-d:删除指定的命令,后面接num
n:显示最近的n条历史
-a:追加本次会话新加的命令到历史文件
-n:读历史文件中没有读的到历史列表
-r:读历史文件附加到列表,会叠加原来的命令
-w:保存历史列表到指定的文件
-p:展开历史参数成多行,但不存在列表中
-s:展开历史参数成一行,保存在列表后
history的相关环境变量:
HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:历史文件记录历史的条数
HISTTIMEFORMAT="%F %T "记录历史执行时间,注意空格
HISTIGNORE="str1:str2"忽略str1和str2,注:只忽视str命令,如果str命令带参数则不忽视
重点:HISTCONTROL:后面接可选参数(多选一),且只对设置以后的命令生效,但是如果后面执行了相同的命令,以前的相同命令也会被删除
ignoredups:忽略重复的命令,相同连续为重复
ignorespace:忽略空格开头的命令
ignoreboth:ignoredups+ignorespace
erasedups:删除重复命令,不论是否连续
bash的配置文件:
profile类:为交互式登录的shell提供配置全局:/etc/profile,/etc/profile.d/*.sh
个人:~/.bash_profile
作用:1、定义环境变量 2、运行命令或脚本
bashrc类:为非交互式登录的shell提供配置
全局:/etc/bashrc
个人:~/.bashrc
作用:1、定义命令别名 2、定义本地变量
其中:cd -和~-有一些区别
[root@localhost ~]# cd -/testdir[root@localhost testdir]# cd -/root[root@localhost ~]# cd ~-[root@localhost testdir]# cd ~-[root@localhost ~]#
可以看出,-和~-在cd中使用没有区别,但是-只有cd使用有效,而~-则适用于其他的命令
[root@localhost ~]# cd /testdir/[root@localhost testdir]# ls -ls: cannot access -: No such file or directory[root@localhost testdir]# ls ~-anaconda-ks.cfg Documents install.log Music Public VideosDesktop Downloads install.log.syslog Pictures Templates[root@localhost testdir]# ls /root/anaconda-ks.cfg Documents install.log Music Public VideosDesktop Downloads install.log.syslog Pictures Templates