2018-4-20
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-4-20相关的知识,希望对你有一定的参考价值。
8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.1 shell介绍
我们登陆的终端,输入root登陆密码其实就是一个shell。
还又zsh ksh等shell,这里以bash为主。
8.2 命令历史
之前使用过的命令 其实是有一个文件保存着的。
这些命令存再用户的加目录下。/root/.bash_history
cat一下这个配置文件,可以看到之前敲过的命令
这个命令可以存多少命令可以用history命令查看。
目前493条, 最多可以存100条。配置的环境变量HISTSIZE
所以最大能保存1000条。
history -c 可以把当前命令里的内存给清空,但不会清空配置文件。
当前使用的命令不会直接存到配置文件中 只会存在内存中。只有当退出终端的时候它才能够保存到配置文件里去。
HISTSIZE环境变量再 /etc/profile 里定义
觉得 1000太少可以改成5000,保存退出
要想让这个history命令变5000生效的话要重启终端。或source /etc/profile 就生效了。
目前history看到的只是排序和名称,如果想要看到时间的话。
重新赋值变量
这仅仅在当前的终端里生效。系统默认这个环境是不存在的,需要每次都去定义
这个时候history会记录日期和时间。
如果想让它永久生效 vim /etc/profile
把它和修改过的变量放一起,保存退出 然后source !$就可以了
如果想永久保存命令,不让被删除。可以添加一个权限(就算你总共1000条,就算到了1000条也不会被删除的)
chattr +a ~/.bash_history
这个文件就只能追加 无法删除。
如果非正常退出,直接退出,命令会保存不全。 需要用命令正常退出。
!! 就是上一条命令,也就是最后一条命令
!n 想运行第几条命令。
!echo 会倒着网上找第一个echo命令(同样其他命令也适用 !ls !cat 都可以)
这些都是命令历史相关的特性
8.3 命令补全和别名
tab已经用到多次了,可以补全命令和路径,只有一种可能按一下自动补全,多个可能按两下列出全出。
centos 7 支持参数的补全。比如systemctl restart network 是有多个参数的,也可以补全。
默认不支持,需要安装一个包然后重启系统就生效了,yum install -y bash-completion,reboot重启。然后就可以补全参数了。
alias别名。比如命令比较长 平时常用到 那就可以起一个别名
以systemctl restart network为例 :alias restartnet="systemctl restart network" ,那别名就是restartnet了。
直接alias回车,可以把所有的别名都列出来
这些别名的文件在 用户的家目录下.bashrc(自定义的) 剩余的都在/etc/profile.d/下面。
可以用vi修改这些配置文件。
取消自定义的别名unalias +别名 就可以了。
8.4 通配符
*表示通配,不仅可以放到前面也可以放到后面,不分有几个字符。
?表示一个任意的字符(仅限一个字符)
ls [0-9]选择范围,可以把0-9任意一个都会满足这个条件,方括号里的字符只表示一个 也可以[23]就是或者的意思2或3都会
被筛选出来。包括字母[0-9a-zA-Z]这样也可可以
ls{1,2}首先需要加括号,也是或者的意思满足其一就可以了
8.5 输入输出重定向
1
>把前面这个内容的输出,直接输入到后面这个文件里去(比如图片会把1的内容转移到2 并且删1)
>>对比上面 就是不会把1的内容删除(追加重定向)
2>它会把命令产生的错误信息给他指定输入到一个文件里去。(>正确的输出重定向,2>错误的输出重定向)
2>>错误追加重定向
&>(就是>1.txt 2>a.txt两个结合的,这么写也可以)结合正确和错误(同样支持追加)。
<输入重定向 ,把右边的文件的内容输入到左边的一条命令里(左边必须是一条命令)
这个几乎用不到,作为了解。
以上是关于2018-4-20的主要内容,如果未能解决你的问题,请参考以下文章
2018-4-20 17周3次课 shell函数数组告警需求分析