1.shell介绍
shell 是一个命令解释器,提供用户和机器之间的交互。它支持特定语法,逻辑判断、循环。比如,我们登陆的终端,它其实就是一个 shell,供我们和机器交互。
Linux 下面有很多 shell,每个用户都可以有自己特定的 shell。 CentOS7默认shell是bash(Bourne Agin Shell),还有 zsh ksh 等 shell。
2.命令历史
history记录命令历史
2.1 具体存放位置:
/root/.bash_history 默认1000条
2.2 查看当前 history 支持存储的数量:
echo $HISTSIZE
2.3 history记录的数量
vim /etc/profile修改HISTSIZE后面的数字即可
source /etc/profile 更新系统变量或者重进终端
2.4 清空内存中的命令历史
内存中的历史命令只在退出终端时保存到.bash_history 中去
history -c
2.5 设置命令历史中加入运行时间
[root@centos701~]#HISTTIMEFORMAT="%Y/%m/%d%H:%M:%S"##设置history的格式变量[root@centos701~]#echo$HISTTIMEFORMAT##查看变量是否生效%Y/%m/%d%H:%M:%S
[root@centos701~]history##再次运行命令,发现多了时间信息,设置成功
10012017/11/1520:14:38HISTTIMEFORMAT="%Y/%m/%d%H:%M:%S"
10022017/11/1520:14:57echo$HISTTIMEFORMAT
永久生效:将HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 这条加入/etc/profile 文件,最好和HISTSIZE 放在一起,然后退出终端重进即可。
2.6 设置 history 记录防删除
通过设置隐藏权限(a权限),能让命令历史不被其他人删除,以便于以后排错和查找事件
[root@centos701~]#chattr+a~/.bash_history
这样设置后,所有用户的命令历史都会记录,其他用户只能追加,不能删除。 非正常退出终端,命令历史记录会不全
2.7 关于命令历史的技巧
命令 |
作用 |
!! |
执行命令历史中最后一条命令(即上一次的命令) |
!n
执行命令历史中指定条目的命令 |
!word 如:!echo
执行命令历史中离当前时间最近的,以 echo 开头的命令。 |
3.命令补全和别名
Liunx 系统中可以利用 tab 键来进行命令补全,也可以进行路径的补全。同时,在 CentOS7中可以做到参数的补全,比较实用!
3.1 命令和参数补全
命令补全
次数
场景与效果 |
1
不存在相同开头命令/文件,按1下就可以补齐 |
2
存在开头相同命令/文件,且大于2个时,需要按2下,才能出现待选例表, |
参数补全
从 CentOS7开始,tab 键支持命令和参数双重补全,在补全参数时,用法和补全命令一样,但前提需要安装一个软件bash-completion
[root@centos701~]#yuminstall-ybash-completion
[root@centos701~]#init6或者reboot
重启完成后,就可以体验参数的补全了!
3.2 别名
Linux中支持将一组命令+参数的组合通过alias 设置成特定字符组合,通过执行组合字符来达到输入对应正常命令和参数的目的,提高使用人员的效率。
3.2.1 当前用户已有别名查看
alias
[root@centos701~]#alias
aliascp='cp-i'aliasegrep='egrep--color=auto'aliasfgrep='fgrep--color=auto'aliasgrep='grep--color=auto'aliasl.='ls-d.*--color=auto'aliasll='ls-l--color=auto'aliasls='ls--color=auto'......................
......................
3.2.2 设置alias的几个常见位置
每个用户家目录的.bashrc 文件
目录/etc/porfile.d/ 中也有很多特定 alias 的定义文件
3.2.3 设置和取消别名 alias
以重启网络systemctl restart network.service 这条命令和参数来举例
设置别名
alias[自定义别名]=`正常执行命令+参数`
[root@centos701~]#aliassysrenet=`systemctlrestartnetwork.service`
[root@centos701~]#sysrenet##别名同样支持补全
取消别名
unalias[自定义别名]
[root@centos701~]#unaliassysrenet[root@centos701~]#sysrenet-bash:sysrenet:未找到命令
4. 通配符
符号
作用 |
举例 |
说明 |
*
表示任意多个字符(0-多个) |
ls test* |
*表示后面不论接几个字符都接受(没有字符也匹配) |
?
表示任意单个字符 |
ls test?;ls test??? |
?表示后面当且仅当接1个字符时才匹配;???表示一定要接3个字符 |
[ ]
中间为范围和组合字符 |
cp test[1~5] /tmp |
test1,test2,test3,test4,test5若存在,则复制到/tmp目录下 |
{ }
中间表示一个或多个字符,多个时用“,”隔开 |
ll {*.log,*.txt } |
查询以.log和.txt结尾的文件。 |
5.输入输出重定向
说明:预先在当前目录创建1.txt文件,并在其中输入两行随机字符。 命令在左 文件在右
特点
输入重定向
|
|
|
<
右侧内容输入到左边 |
wc -l < 1.txt |
将右侧1.txt的内容输入到左边供命令调用,即计算1.txt文本内容的行数 |
单个输出重定向
> |
正确输出重定向 |
覆盖原有内容 |
cat 1.txt>2.txt |
将左侧正确的结果以覆盖的方式输出到2.txt中 |
>>
正确输出追加重定向 |
保留原有内容 |
cat 1.txt>>2.txt |
将左侧正确的结果以追加的方式输出到2.txt 中 |
2>
错误输出重定向 |
lsaaa 2>2.txt |
将左侧错误的结果以覆盖的方式输出到2.txt 中 |
2>>
错误输出追加重定向 |
lsaaa 2>>2.txt |
将左侧错误的结果以追加的方式输出到2.txt 中 |
合并输出重定向
|
&>=>+2>
正确和错误输出重定向 |
ls [12].txt kkk.txt &>c.txt |
将左侧正确和错误的结果都输出到 c.txt 文件 |
&>>=>>+2>>
正确和错误输出追加重定向 |
ls [12].txt kkk.txt &>>c.txt |
将左侧正确和错误的结果都追加输出到 c.txt 文件 |
拆分输出重定向
> 2> |
ls [12].txt sasasa.txt>ab.txt 2>cd.txt |
将左侧正确的结果重定向输出到 ab.txt 中,将错误的结果重定向输出到 cd.txt 中 |
>> 2>>
ls [12].txt sasasa.txt>>ab.txt 2>>cd.txt |
将左侧正确的结果以追加的方式输出到 ab.txt 中,将错误的结果以追加的方式输出到 cd.txt 中 |
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|