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

Linux shell基础知识、命令历史、命令补全和别名、通配符、输入输出重定向

2018-03-07 15:58 405 查看
一、 shell介绍1. Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。2. 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。3. Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。4. Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。5. CentOS的shell默认的shell为bash,还有其它类型的shell,比如zsh、ksh、等等
二、命令历史1. 命令历史的存放地址,这个文件最多可以存放1000条/root/.bash_history  2.环境变量HISTSIZE ,可以查看能够存放命令的条数[root@localhost ~]# echo $HISTSIZE                      1000 3. histtory -c  清空当前内存中的命令历史,不能清空配置文件里的                       当退出终端的时候,命令才会保存到配置文件里,4. 修改环境变量HISTSIZE的值,更改命令保存的条数  vim  /etc/profile      #打开配置文件
HISTSIZE=1000                   #在配置文件里面找到这一行,将数值1000更改为你想要修改的值
source /etc/profile              #当更改profile文件后,需要source下或者重启终端才会生效5. HISTTIMEFORMAT  自定义History输出格式,可以加上时间1. [root@localhost ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "   #设置格式2. [root@localhost ~]# echo $HISTTIMEFORMAT    %Y/%m/%d %H:%M:%S3. [root@localhost ~]# history                                 #可以看到history已经设置格式为年/月/日/.......,加上了时间信息    1  2018/01/10 06:36:43 vim /etc/profile    2  2018/01/10 06:40:54 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "    3  2018/01/10 06:41:05 history
如果想要这个环境变量永久生效,那么需要添加到配置文件里vim  /etc/profile                                                            #编辑配置文件HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "       #将这段添加到配置文件,和HISTSIZE=1000放在一起source /etc/profile                                                        #编辑完成后重启配置文件生效6. 给命令历史文件加上a权限,那么只能追加,不能删除,这样可以永久保存命令    但是如果不正常退出终端,那么命令历史不会正常保存chattr +a /root/.bash_history  7.  !!           表示命令历史里最后一条命令     !n          n表示数字,输入后可以在运行历史记录里相对应id号的命令     !echo    运行命令历史echo开头的最近的一条命令
三、命令补全和别名1.当输入命令的时候按Table可以自动补全命令或参数yum install -y bash-completion           #安装命令补全的包,安装完成后需要重启系统2. alias   列出系统所有的别名,包括自定义的[root@localhost ~]# aliasalias 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-ti3. alias 存放的地址.bashrc          #用户的家目录文件下面存放了几条
[root@localhost ~]# cd /etc/profile.d[root@localhost profile.d]# ls                           #在/etc/profile.d这个目录下也放了几个配置文件,这些配置文件里面也存放了别名256term.csh         colorgrep.csh  colorls.sh  less.csh  vim.sh256term.sh          colorgrep.sh   lang.csh    less.sh   which2.cshbash_completion.sh  colorls.csh    lang.sh     vim.csh   which2.sh4. 自定义别名和取消别名  alias  与  unalias              [root@localhost profile.d]# alias lspro='ls -l /etc/profile.d'                 #给'ls -l /etc/profile.d'这条命令设置别名lspro[root@localhost profile.d]# lspro                                                            #可以直接使用lspro总用量 60 -rw-r--r--. 1 root root  771 8月   4 07:57 256term.csh-rw-r--r--. 1 root root  841 8月   4 07:57 256term.sh-rw-r--r--. 1 root root  660 6月  10 2014 bash_completion.sh-rw-r--r--. 1 root root  196 3月  25 2017 colorgrep.csh[root@localhost profile.d]# unalias lspro                                        #使用unalias取消自定义别名[root@localhost profile.d]# lspro                                                      #再使用的时候提示未找到命令-bash: lspro: 未找到命令
四、通配符1.  *   通配符,可以代表任何字,[root@localhost ~]# ls *.txt            #列出所有以”.txt“结尾的文件或目录11_hard.txt  11.txt  555.txt[root@localhost ~]# ls 1*                #列出所有的以"1"开头的文件,不管是目录还是文件都会列出来11_hard.txt  11.txt2.  ? 表示一个任意的字符[root@localhost ~]# ls ?.txt             #”?“表示任意的一个字符,所以只列出一个字符开头的文件2.txt  c.txt3. [0-9] [a-z] 可以写数字或字母,表示0到9或者a-z任意一个    {1,2,3} {a,b,c}作用和[]类似,不过中间要有逗号分隔[root@localhost ~]# ls [0-3].txt           #列出0到3开头的文件1.txt  2.txt  3.txt[root@localhost ~]# ls [123].txt           #列出1、2、3开头的文件1.txt  2.txt  3.txt[root@localhost ~]# ls [13].txt             #列出1和31.txt  3.txt[root@localhost ~]# ls [23].txt             #列出2和32.txt  3.txt
五、输入输出重定向1.   >        重定向,将一个命令的结果输出,原文件会删除      >>     追加重定向,原来的文件不会删除2.   2>      错误重定向,将错误的信息输出      2>>   错误追加重定向,将错误的信息输出[root@localhost ~]# fgdddd 2> xx.txt    运行一个错误的命令,将错误的信息重定向到xx.txt文件里面去[root@localhost ~]# cat xx.txt-bash: fgdddd: 未找到命令3.   &>    将错误和正确的信息都输出,重定向      &>>  将错误和正确的信息都输出,追加重定向[root@localhost ~]# ls [123].txt sss.txt &>xx.txt    #ls 1、2、3.txt以及sss.txt,将错误和正确的结果都重定向到xx.txt[root@localhost ~]# cat xx.txt                    ls: 无法访问sss.txt: 没有那个文件或目录1.txt2.txt3.txt4. 将错误和正确的信息分别写在不同文件里[root@localhost ~]# ls [123].txt sss.txt > bb.txt 2>cc.txt   #将正确的信息写在bb.txt   错误的信息写在cc.txt[root@localhost ~]# cat bb.txt1.txt2.txt3.txt[root@localhost ~]# cat cc.txtls: 无法访问sss.txt: 没有那个文件或目录5.   <     输入重定向[root@localhost ~]# wc -l <1.txt     4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐