标签:linux中shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
shell 是一个命令解释器,提供用户和机器之间的交互。它支持特定语法,逻辑判断、循环。比如,我们登陆的终端,它其实就是一个 shell,供我们和机器交互。
Linux 下面有很多 shell,每个用户都可以有自己特定的 shell。
CentOS7默认shell是bash(Bourne Agin Shell),还有 zsh ksh 等 shell。
history 记录命令历史
/root/.bash_history
默认1000条
echo $HISTSIZE
vim /etc/profile
修改HISTSIZE后面的数字即可source /etc/profile
更新系统变量或者重进终端
内存中的历史命令只在退出终端时保存到.bash_history 中去history -c
[root@centos701 ~]#HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" ##设置 history 的格式变量[root@centos701 ~]#echo $HISTTIMEFORMAT ##查看变量是否生效%Y/%m/%d %H:%M:%S [root@centos701 ~]history ##再次运行命令,发现多了时间信息,设置成功 1001 2017/11/15 20:14:38HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 1002 2017/11/15 20:14:57echo $HISTTIMEFORMAT
永久生效:将HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
这条加入/etc/profile
文件,最好和HISTSIZE
放在一起,然后退出终端重进即可。
通过设置隐藏权限(a权限),能让命令历史不被其他人删除,以便于以后排错和查找事件
[root@centos701 ~]# chattr +a ~/.bash_history
这样设置后,所有用户的命令历史都会记录,其他用户只能追加,不能删除。
非正常退出终端,命令历史记录会不全
命令 | 作用 |
---|---|
!! | 执行命令历史中最后一条命令(即上一次的命令) |
!n | 执行命令历史中指定条目的命令 |
!word 如:!echo | 执行命令历史中离当前时间最近的,以 echo 开头的命令。 |
Liunx 系统中可以利用 tab 键来进行命令补全,也可以进行路径的补全。同时,在 CentOS7中可以做到参数的补全,比较实用!
命令补全
次数 | 场景与效果 |
---|---|
1 | 不存在相同开头命令/文件,按1下就可以补齐 |
2 | 存在开头相同命令/文件,且大于2个时,需要按2下,才能出现待选例表, |
参数补全
从 CentOS7开始,tab 键支持命令和参数双重补全,在补全参数时,用法和补全命令一样,但前提需要安装一个软件
bash-completion
[root@centos701 ~]# yum install -y bash-completion [root@centos701 ~]# init 6 或者 reboot
重启完成后,就可以体验参数的补全了!
Linux中支持将一组命令+参数的组合通过
alias
设置成特定字符组合,通过执行组合字符来达到输入对应正常命令和参数的目的,提高使用人员的效率。
alias
[root@centos701 ~]# alias alias cp=‘cp -i‘alias egrep=‘egrep --color=auto‘alias fgrep=‘fgrep --color=auto‘alias grep=‘grep --color=auto‘alias l.=‘ls -d .* --color=auto‘alias ll=‘ls -l --color=auto‘alias ls=‘ls --color=auto‘...................... ......................
每个用户家目录的 .bashrc
文件
目录/etc/porfile.d/
中也有很多特定 alias 的定义文件
以重启网络
systemctl restart network.service
这条命令和参数来举例
设置别名
alias [自定义别名]=`正常执行命令+参数` [root@centos701 ~]#alias sysrenet=`systemctl restart network.service` [root@centos701 ~]#sysrenet ##别名同样支持补全
取消别名
unalias [自定义别名] [root@centos701 ~]# unalias sysrenet[root@centos701 ~]# sysrenet-bash: sysrenet: 未找到命令
符号 | 作用 | 举例 | 说明 |
---|---|---|---|
* | 表示任意多个字符(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结尾的文件。 |
说明:预先在当前目录创建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 中 |
5周第3次课 shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
标签:linux中shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
原文地址:http://badswolf.blog.51cto.com/6725328/1982189