您的位置:首页 > 运维架构 > Shell

2018-1-10 5周3次课 命令补全、别名、通配符、重定向

2018-01-10 20:57 351 查看
8.1 shell介绍

·什么是shell?
- shell是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑判断、循环
- 每个用户都可以有自己特定的shell
- CentOS7默认shell为bash(Bourne Agin Shell)
- 还有zsh、ksh等

8.2 命令历史

方向键↑可以查看历史命令,命令存放在家目录 ~/.bash_history
history命令查看之前的命令, 最大可以存1000条





可以存多少条命令是由一个环境变量HISTSIZE决定的
[root@localhost ~]# echo $HISTSIZE
1000


·清空当前内存命令历史 history -c,但是无法清空配置文件bash_history

·执行的命令,并不是实时写入到bash_history中,而是暂时存放在内存中,当退出终端时,才存入

·定义环境变量HISTSIZE /etc/profile中修改





(更改可以保存的最大历史命令数量,可改这里)

想要HISTSIZE生效,需要重新进一下终端,或者执行source /etc/profile
[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# source /etc/profile
[root@localhost ~]# 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
[root@localhost ~]# yum install -y bash-completion
安装完成后重启系统

·别名 alias别名给命令重新起个名字:alias 别名=‘命令’
[root@localhost ~]# 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/中
[root@localhost ~]# 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 命令别名
[root@localhost ~]# alias restartnet='systemctl restart network.service'
[root@localhost ~]# 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'
[root@localhost ~]# unalias restartnet
[root@localhost ~]# 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
command >1.txt 2>&1 正确的输出到1.txt,错误的输出到通道1,也就是1.txt

输入重定向:
< 将后面文本文件中的信息输入重定向到前面的命令
wc -l < 1.txt 统计1.txt有多少行

[root@localhost ~]# cat test3
ls: cannot access test: No such file or directory
test2
[root@localhost ~]# cat > newfile < test3
[root@localhost ~]# cat newfile
ls: cannot access test: No such file or directory
test2
这里的先将文件中的数据提取到了命令 cat 中 ,然后由 cat 写入到 newfile 中

参考:https://www.cnblogs.com/divent/p/5773861.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 命令补全 别名
相关文章推荐