8.1 shell介绍
·什么是shell?
- shell是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑判断、循环
- 每个用户都可以有自己特定的shell
- CentOS7默认shell为bash(Bourne Agin Shell)
- 还有zsh、ksh等
8.2 命令历史
方向键↑可以查看历史命令,命令存放在家目录 ~/.bash_history
history命令查看之前的命令, 最大可以存1000条
可以存多少条命令是由一个环境变量HISTSIZE决定的
[[email protected] ~]# echo $HISTSIZE 1000
·清空当前内存命令历史 history -c,但是无法清空配置文件bash_history
·执行的命令,并不是实时写入到bash_history中,而是暂时存放在内存中,当退出终端时,才存入
·定义环境变量HISTSIZE /etc/profile中修改
(更改可以保存的最大历史命令数量,可改这里)
想要HISTSIZE生效,需要重新进一下终端,或者执行source /etc/profile
[[email protected] ~]# echo $HISTSIZE 1000 [[email protected] ~]# source /etc/profile [[email protected] ~]# echo $HISTSIZE 5000
·改变命令历史格式:改变环境变量 HISTTIMEFORMAT
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
想要永久生效,可以写入到 /etc/profie 中去
保存退出 source /etc/profile
永久保存 chattr +a ~/.bash_history,只能追加,不能删除
最后一条命令 !!
第n条命令 !n
从最后倒着去找以word开头的命令 !word
8.3 命令补全和别名
tab键,敲一下,敲两下
如果有一个相同开头,按一下就会出现;如果有多个相同开头,需要敲两下
CentOS6中只支持命令补全,参数无法补全;CentOS7中支持参数补全
默认不支持参数补全,需要安装bash-completion
[[email protected] ~]# yum install -y bash-completion
安装完成后重启系统
·别名 alias别名给命令重新起个名字:alias 别名=‘命令’
[[email protected] ~]# 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' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
·各用户都有自己配置别名的文件 ~/.bashrc
·其余的别名存放在/etc/profile.d/中:
[[email protected] ~]# ls /etc/profile.d/ 256term.csh bash_completion.sh colorgrep.sh colorls.sh lang.sh less.sh vim.sh which2.sh 256term.sh colorgrep.csh colorls.csh lang.csh less.csh vim.csh which2.csh
·自定义的alias放到~/.bashrc
·取消别名 unalias 命令别名
[[email protected] ~]# alias restartnet='systemctl restart network.service' [[email protected] ~]# 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' alias mv='mv -i' alias restartnet='systemctl restart network.service' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [[email protected] ~]# unalias restartnet [[email protected] ~]# 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' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
8.4 通配符
* 任意一个或多个字符
? 任意一个字符
[0-9] 范围
[a-z]
[A-Z]
[1-9a-bA-Z]
{1,2....} 具体数字 (或)
8.5 输入输出重定向
输出重定向:
> 前面正确的信息重定向到文本文件中
>> 前面正确的信息追加重定向到文本文件中
2> 错误重定向到文本文件中
2>> 错误追加重定向到文本文件中
&> 正确错误都重定向到文本文件中 1>+2>
&>> 正确错误都追加重定向到文本文件中
> a.txt 2>b.txt 正确的输出到a.txt,错误的输出到b.txt
输入重定向:
< 将后面文本文件中的信息输入重定向到前面的命令
wc -l < 1.txt 统计1.txt有多少行
[[email protected] ~]# cat test3 ls: cannot access test: No such file or directory test2 [[email protected] ~]# cat > newfile < test3 [[email protected] ~]# cat newfile ls: cannot access test: No such file or directory test2
这里的先将文件中的数据提取到了命令 cat 中 ,然后由 cat 写入到 newfile 中
参考:https://www.cnblogs.com/divent/p/5773861.html
原文地址:http://blog.51cto.com/11530642/2059591