一、什么是shell
1、shell是一个命令解释器,提供用户和机器之间的交互
2、支持特定语法,比如逻辑判断、循环
3、每个用户都可以有自己特定的shell
4、CentOS7默认shell为bash(Bourne Agin Shell)
5、 还有zsh、ksh等
bash它是sh(Bourne Shell)的增强版本,Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh
看系统是否有安装zsh、ksh,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@aminglinux-01 ~]# yum list |grep zsh zsh.x86_64 5.0.2-25.el7 installed autojump-zsh.noarch 22.3.0-3.el7 epel zsh.x86_64 5.0.2-28.el7 base zsh-html.x86_64 5.0.2-28.el7 base zsh-lovers.noarch 0.9.0-1.el7 epel [root@aminglinux-01 ~]# yum list |grep ksh ksh.x86_64 20120801-34.el7 base mksh.x86_64 46-5.el7 base python-XStatic-Rickshaw.noarch 1.5.0.0-4.el7 epel python-moksha-common.noarch 1.2.3-2.el7 epel python-moksha-hub.noarch 1.5.3-2.el7 epel python-moksha-wsgi.noarch 1.2.2-2.el7 epel |
8.2 命令历史
一、命令历史:
1、history命令 //查看之前使用的命令。
2、.bash_history //存储使用过的命令文件,在root的家目录下
3、变量HISTSIZE 默认值1000 //存储使用命令数值为1000条
4、/etc/profile中修改变量HISTSIZE //修改存储命令数值
5、HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " //记录命令的使用时间
6、永久保存 chattr +a ~/.bash_history
7、!! //执行上一条命令
8、!n //n表示数字 比如:!176 这样它就会执行命令历史里的176这条命令
9、!echo //echo表示你需要找命令历史里从下往上找以word开头的第一条命令执行它。
1.1 history命令
我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令,这些命令保存在用户的家目录中的.bash_history文件中。只有正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。
1.2 清空当前命令历史 history -c
(使用命令history -c 命令可以清空内存中的命令,
文件.bash_history里的配置文件命令不会清空)
1.3 查看预设命令条数显示命令: echo $HISTSIZE
1.4 修改记录的历史数,可以使用命令:
vim /etc/profile 中修改变量HISTSIZE:
1.4.1 修改后使用命令 :source /etc/profile 让它生效,
然后再用命令:echo $HISTSIZE 来查看修改结果
1.5 记录命令的使用时间,可以输入以下变量即可(只限当前窗口的shell):
HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ”
1.5.1 如果要在其他的窗口shell中也生效,可以进入 /etc/profile 中添加一行HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ” 即可
(保存退出后source /etc/profile一下生效):
1.6 永久生效,不让别人删除命令:chattr +a ~/.bash_history 添加权限只能追加,不能修改删除
注意:如果执行了这条命令后,你并没有正常退出终端,就会导致保存的命令不全。
1.7 !! 表示执行上一条指令
1.8 !n 表示执行命令历史中第n条指令,如!593条命令
1.9 !echo 表示执行命令历史中最近一次以 ‘echo’ 为开头的命令
8.3 命令补全和别名
一、命令补全和别名:
1、tab键,敲一下,敲两下
2、参数补全,安装bash-completion
3、alias别名给命令重新起个名字
4、 各用户都有自己配置别名的文件 ~/.bashrc //存放别名的路径地址
ls /etc/profile.d/ //存放别名的路径地址
自定义的alias放到~/.bashrc //自定义后别名存放的地址
1.1 命令补全:
按tab键,它可以帮你补全一个命令,也可以帮你补全一个路径或者一个文件名。
连续按两次tab键,系统则会把所有的指令或者文件名都列出来
1.2 参数补全,安装bash-completion ,命令:yum install -y bash-completion
需要重启一下才管用 reboot
1.3 alias别名
通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias.
1.4 alias目前系统预设的别名在:.bashrc 下
其他alias自定义别名,存放于 /etc/profile.d/下
8.4 通配符
一、通配符:
1、ls *.txt //表示查找.txt通配文件
2、ls ?.txt //表示一个任意的字符
3、ls [0-9].txt //列出满足条件范围内的文件
4、ls {1,2}.txt //用花括号列出你需要的文件
1.1 1.2在bash下,可以使用 * 来匹配零个或多个字符,而用 ? 匹配一个字符
1.3 也可以使用[0-9a-zA-Z]范围来匹配,如 : ls [1-3].txt ,
1.4 用花括号列出你需要的文件 ,如 ls {1,2,3,4,5}.txt
8.5 输入输出重定向
输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。
输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。
输入重定向的命令是<,
输出重定向的命令是> ,
追加重定向 >> ,
2>是错误重定向,
2>>错误追加重定向
(>+2> 等于 &>)
一、 输入输出重定向,试验
1、cat 1.txt >2.txt //>它会把命令产生的正确信息输出到指定文件里去,删除之前文件内容重写。
2、cat 1.txt >> 2.txt //>>把前面命令输出内容重定向追加到后面命令里去,不删除旧的。
3、ls aaa.txt 2> err //它会把命令产生的错误信息输出到指定文件里去
4、ls aaa.txt 2>> err // 错误信息输出追加重定向
5、wc -l < 1.txt //查看一个文件的行数
1.1 输出重定向> ,把前面的命令追加到后面的文件里去,原内容删除重写
1.2 追加重定向 >>把前面命令输出内容重定向追加到后面命令里去,不删除旧的。
1.3 2>是错误重定向,它会把命令产生的错误信息输出到指定文件里去,没有产生错误就无效
1.4 2>>错误追加重定向,追加一次错误信息到文件,&>正确定向和错误 定向到一个文件
1.5 输入重定向的命令是<,左边必须是命令 ,不可以文件到文件 <
以下是查看文件行数是几行
原文:http://blog.51cto.com/404006045/2105972