shell脚本在平常的Linux系统管理中是必不可少的; shell是系统跟计算机硬件交互时使用的中间介质。 shell是一个命令解释器,提供用户和机器之间的交互; 支持特定语法,好比逻辑判断、循环; 每一个用户均可以由本身特定的shell; centOS7默认shell为bash(Bourne Agin shell) 还有zhs、ksh等。
概念:咱们执行过的命令Linux都会记录,预设能够记录1000条命令历史, 这些命令保存在用户的家目录 .bash_history文件中。 # 只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至 .bash_history
查看预设命令条数显示shell
[root@localhost apache2]# echo $HISTSIZE
1000 #默认1000条apache
清空当前命令历史 history -cbash
[root@localhost apache2]# history -c
#不会删除存命令里面的东西spa
预设值的配置文件,.net
[root@localhost apache2]# vi /etc/profile
46 HISTSIZE=1000 #46行在这里更改。3d
须要重启后才生效,要么source一下就能够生效。rest
[root@localhost apache2]# echo $HISTSIZE
1000
[root@localhost apache2]# soure /etc/profile
-bash: soure: 未找到命令
[root@localhost apache2]# source /etc/profile
[root@localhost apache2]# !echo
echo $HISTSIZE
5000 #修改为功code
怎么样修改命令历史显示时间,修改变量blog
[root@localhost /]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@localhost /]# echo $HISTTIMEFORMAT #echo查看环境变量
%Y/%m/%d %H:%M:%S
[root@localhost /]# history #查看当前命令历史记录
1 2018/04/17 21:00:15 vi /etc/profile
2 2018/04/17 21:01:24 echo $HISTSIZE
3 2018/04/17 21:01:56 soure /etc/profile
4 2018/04/17 21:02:11 source /etc/profile
5 2018/04/17 21:02:17 echo $HISTSIZE
6 2018/04/17 21:07:20 cd /etc/yum.repos.d
7 2018/04/17 21:07:22 ls
8 2018/04/17 21:07:36 vi dvd.repo
9 2018/04/17 21:09:35 cd ..
10 2018/04/17 21:10:47 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
11 2018/04/17 21:11:18 echo HISTTIMEFORMAT
12 2018/04/17 21:11:24 echo $HISTTIMEFORMAT
13 2018/04/17 21:11:51 history字符串
想要永久生效,编辑配置文件/etc/profile,添加环境变量进去
找到46行,在46行下添加环境变量
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
重启或者source一下。
[root@localhost /]# source /etc/profile
永久生效,chattr +a ~/.bash_history 添加权限只能追加,不能修改删除
[root@localhost /]# chattr +a ~/.bash_history
!!:连续两个!表示执行上一条命令,示例以下:
!n:这里的n是数字,表示执行命令历史中的第n条命令,例如 !17 表示执行命令历史的第17个命令,示例以下:
按tab键能够帮咱们补全一个指令、一个路径或者一个文件名。 连续按两次tab键,系统则会把全部的命令或者文件都列出来。
安装一个yum包,bash-completion,安装完后,须要重启一下才管用 reboot。
[root@localhost ~]# systemctl res
rescue reset-failed restart
[root@localhost ~]# systemctl restart
别名alias,自定义别名
[root@localhost ~]# alias restartnet='systemctl restart network.service'
[root@localhost ~]# alias #查看别名是否设置成功,restartnet
alias目前系统预设的别名在:.bashrc 下
- 其余alias自定义别名,存放于 /etc/profile.d/下 - 如何取消自定义别名:unalias restartnet
在bash下,能够使用*来匹配零个或多个字符,用?匹配一个字符
.
示例,查找全部以.txt结尾的文件
[root@localhost do]# ls *.txt
1.txt 2.txt 3.txt
[root@localhost do]# ls [23].txt
2.txt 3.txt
概念:输入重定向用于改变命令的输入,输出重定向用于改变命令的输入。 输出重定向更为经常使用,它常常用于将命令的结果输入到文件中,而不是屏幕上。 输入重定向的命令是 < 输出重定向的命令是 > 还有错误重定向命令2>以及之u家重定向命令 >>
输出重定向> ,把前面的命令追加到后面的文件里去,原内容删除,格式以下:
[root@localhost do]# cat 1.txt
[root@localhost do]# echo "123123" >1.txt
[root@localhost do]# cat 1.txt
123123
[root@localhost do]# echo "123" >1.txt
[root@localhost do]# cat 1.txt
123
追加文字 >>,把前面的命令 追加到后面的文件去。
[root@localhost do]# echo "123" >>1.txt
[root@localhost do]# cat 1.txt
123
123
假如说运行一个错误的命令,若是报错的话 指向到一个文件里。 2>
[root@localhost do]# lsaaaa 2> a.txt #在这里,若是没有报错的话,不会保存进去。
[root@localhost do]# cat a.txt
-bash: lsaaaa: 未找到命令
[root@localhost do]# ls 2> a.txt
1.txt 2.txt 3.txt a.txt
2>追加剧定向到某个文件里。
[root@localhost do]# lsaaaa 2>> a.txt
[root@localhost do]# cat a.txt
-bash: lssad: 未找到命令
-bash: lsaaaa: 未找到命令