码迷,mamicode.com
首页 > 系统相关 > 详细

shell介绍、命令历史 、 命令补全和别名 、通配符、输入输出重定向

时间:2018-04-22 00:04:17      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:shell

一、shell介绍
技术分享图片
二、命令历史
技术分享图片
历史命令存放路径 /root/.bash_history ,默认可以存放1000条命令
#history //查看具体的历史命令
[root@linux-01 ~]# echo $HISTSIZE //系统内置环境变量
1000

#history -c //清空内存中命令历史,但是存放命令的文件不会被删除
#vi /etc/profile // 修改HISTORY环境变量路径/etc/profile,可以吧HISTSIZE=1000改为5000
[root@linux-01 ~]# source /etc/profile //修改完配置文件需要执行这条命令让配置文件生效
[root@linux-01 ~]# echo $HISTSIZE
5000

[root@linux-01 ~]# HISTTIMEFORMAT="%Y/%M/%d %H:%M:%S" //需要查看每条命令的执行时间
[root@linux-01 ~]# echo $HISTTIMEFORMAT
%Y/%M/%d %H:%M:%S

如果需要让查看每条命令的具体时间永久生效,需要编辑/etc/profile,在HISTSIZE=5000下面添加一行: HISTTIMEFORMAT="%Y/%M/%d %H:%M:%S" 保存退出就可以永久生效

[root@linux-01 ~]# chattr +a ~/.bash_history //给文件添加隐藏权限,此文件只能追加,不能被删除
如果没有正常退出终端,那么命令在.bash_history文件中就不被保存

[root@linux-01 ~]# !! //两个感叹号表示执行的上一条命令
[root@linux-01 ~]# !11 //执行第命令历史中的第11条命令
[root@linux-01 ~]# !echo //会在命令历史中倒着找第一个以echo开头的命令
[root@linux-01 ~]# !mkdir //会在命令历史中倒着找第一个以mkdir开头的命令

三、命令补全和别名
技术分享图片
在Centos7中,如果需要按Teb键补全参数,如 systemctl restart network这条命令需要补全restart参数,需要安装bash-completion,可以yum安装 # yum install -y bash-completion ,安装完之后需要重启系统生效
#rpm -qa 包名 //查看包有没有安装

[root@linux-01 ~]# rpm -qa alias restartnet=‘systemctl restart network.service‘
//使用restartnet给‘systemctl restart network.service‘ 这条命令做别名,那么重启网络服务的时候就可以执行restartnet命令来重合器网卡了

[root@linux-01 ~]# 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 下都有定义alias
#unalias restartnet //取消自定义别名restartnet

四、通配符 、输入输出重定向
技术分享图片
表示通配
[root@linux-01 ~]# ls
.txt //列出.txt所有文件可以使用.txt
11.txt 1.txt 2.txt
[root@linux-01 ~]# ls
txt //列出.txt所有文件也可以使用txt
11.txt 1.txt 2.txt
[root@linux-01 ~]# ls
txt //列出.txt所有文件也可以使用txt*
11.txt 1.txt 1.txt.zip 2.txt

[root@linux-01 ~]# ls 1 //列出以1开头的所有文件可以使用1
11.txt 1.txt 1.txt.zip
123:
333 yum.log

[root@linux-01 ~]# ls ?.txt //?.txt表示一个任意一个字符的txt文件,?表示任意一个字符
1.txt 2.txt 3.txt 4.txt a.txt

[root@linux-01 ~]# ls [0-3].txt //查看开头0-3之间的.txt文件,方括号中的0-3取其中一个数字
1.txt 2.txt 3.txt
[root@linux-01 ~]# ls [123].txt //也可以取方括号中的1 2 3开头所有的.txt文件
1.txt 2.txt 3.txt
[root@linux-01 ~]# ls [23].txt //例如列出2 3开头的.txt文件
2.txt 3.txt
[root@linux-01 ~]# ls [0-9a-zA-Z].txt //列出0-9 a-z A-Z的所有.txt文件
1.txt 2.txt 3.txt 4.txt

[root@linux-01 ~]# ls {1,2}.txt //列出1,2开头的.txt文件,注意花括号中需要加逗号
1.txt 2.txt

#cat 1.txt > 2.xtx //把前面命令的输出直接输入到后面的文件里面,一个大于号会把原来的内容删除
#cat 1.txt >> 2.xtx //两个大于号不会把大于号左边原来的命令删除

#laaaa 2> 1.txt //使用 2> 把一个命令的错误信息输入到1.txt文件中
#laaaa 2>> 1.txt //使用2>>把错误信息追加重定向到1.txt文件中

是输出重定向;>> 是输出追加重定向;2> 是错误重定向;2>> 是错误追加重定向

  • 2> = &>
    例:
    [root@linux-01 ~]# ls [12].txt aaa.txt &> 3.txt //把[12].txt aaa.txt 的正确信息和错误信息都输入到3.txt文件中
    [root@linux-01 ~]# cat 3.txt //查看3.txt文件信息
    ls: cannot access aaa.txt: No such file or directory
    1.txt
    2.txt

[root@linux-01 ~]# ls [12].txt aaa.txt &>> 3.txt //同样支持追加
[root@linux-01 ~]# cat 3.txt
ls: cannot access aaa.txt: No such file or directory
1.txt
2.txt
ls: cannot access aaa.txt: No such file or directory
1.txt
2.txt

[root@linux-01 ~]# ls [12].txt aaa.txt > 3.txt 2>4.txt //可以把正确命令输入到3.txt文件中,错误信息输入到4.txt文件中,以后shell脚本中用的多,可以把正确和错误分别指定到不同文件
[root@linux-01 ~]# cat 3.txt
1.txt
2.txt
[root@linux-01 ~]# cat 4.txt
ls: cannot access aaa.txt: No such file or directory

< 是输入重定向,小于号左边必须是命令,右边是文件
[root@linux-01 ~]# wc -l < 3.txt //查看3.txt文件行数
2

shell介绍、命令历史 、 命令补全和别名 、通配符、输入输出重定向

标签:shell

原文地址:http://blog.51cto.com/13669226/2106351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!