码迷,mamicode.com
首页 > 其他好文 > 详细

bash及其特性

时间:2018-06-17 23:19:04      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:结果   dir   单个字符   实例   nal   匹配   ima   directory   单引号   

一、bash介绍

linux给用户提供的人机交互接口有两种方式:

    1.GUI(图形接口):GHOME,KDE,XFCE
    2.CUI(命令行接口):sh,csh,ksh,bash,zsh。tcsh

什么是程序,什么是进程?简单了解下:进程是程序的一个副本,是程序的执行实例,进程是独立存在,在进程看来,当前主机只存在内核和进程本身;每个常规用户在登录到系统后,都会运行一个bash程序,这就是一个进程,用户注销退出时,bash进程也会结束,进程与进程之间不相互影响。

用户bash工作环境:

    #:表示root管理员用户
    $:表示普通用户

bash作用:

    1.历史命令、命令补全
            history:查看历史命令
                    history -c:清空当前bash中缓存的历史命令
                    history -w:将当前缓存中的历史命令写入到配置文件中(在用户家目录下的.bash_history,是个隐藏文件)
                    history -d n:如history -d 30 删除第三十条命令
                    !n:执行历史中第几条命令,如!3,执行第三条
                    !!:执行上一条命令
                    方向键 上下 可以翻出历史命令
                    历史命令默认是缓存1000条,可以修改HISTSIZE的变量值,修改缓存的大小
                    Tab键:按两下Tab键可以将你没完成的命令补全,也可以补全路径,如果有多种符合,会将所有的可能例举出来。
    2.管道(|)、重定向(<,>)

    3.命令别名(alias)
            查看当前用户中有那些别名:alias命令即可查看
            设置别名:如alias cls=clear’,表示cls命令就是clear命令
            清空别名:unalias cls清除cls的别名;在命令的前面加 \ 表示不使用命令的别名,如\ls,使用原生的ls命令
            注意:alias尽对当前的bash有效,要使之永久生效需要写入家目录下的.bashrc中。
    4.命令行编辑
            光标跳转:如果你在命令行接口上输入一串很长的命令,突然发现最前面的命令些错了,此时你不需要将光标一步步移到最前面,可以使用 Ctrl+a 组合键跳到命令的最前面,Ctrl+e跳到命令的最后面,Ctrl+d删除光标右边的一个字符,Ctrl+c终止当前命令。

    5.命令替换:把命令中的某个子命令替换成其执行结果$(command),`command`,`是反引号,在Tab键上面
            如果你要打印出当前目录,假如在/root下,应该怎么打印?echo ‘current directory is /root’,可以打印出,但是如果你cd切换到/tmp目录了,过了一会儿又切换到/var下?按照上面的方式打印的话虽然也可以,但是很麻烦,此时你可以使用命令替换:echo "current directory is $(pwd)",可以打印出,这条命令表示先执行pwd这条命令,再把返回的结果替换掉$(pwd),使用 `pwd` 是一样的;
            练习:创建一个file文件,并且在后面跟上当前日期,如file.2018-06-17-18:07:50,方法如下:
                    touch file."$(date "+%Y-%m-%d-%H:%M:%S")"
            注意:说下单引号‘’和双引号“”的区别,如:echo ‘$(pwd)‘ 只能打印出$(pwd)这串字符,不能变量替换,echo “$(pwd)” 双引号支持变量替换,会打印出当前目录。
    6.文件名通配符
            *:任意长度的任意字符
            ?:任意单个字符
            [ ]:匹配指定范围内的任意单个字符,如:
                    [abc]表示abc中任意一个;
                    [a-z]表示a到z中任意一个字符;
                    [A-Z]表示A-Z中任意一个字符;
                    [a-zA-Z]表示a-z或A-Z中任意一个字符;
                    [0-9]表示0到9中任意一个数字;
                    [:space:]表示空白字符;
                    [:punct:]表示标点符号;
                    [:alnum:]表示数或字母;
                    ...
            [^ ]:表示指定范围之外的单个字符
            注意:[ ]内与字符之间不能有空格!
            练习:首先touch a123 cd6 c78m c1 my m.z ‘k 67‘ 8yu 789这些文件
            1.找出以a或c开头的文件:

技术分享图片

            2.显示所有文件中含有数字的文件:

技术分享图片

            注意:最后一个k 67是一个文件,中间是空格。
            3.找出不以数字开头的文件

技术分享图片
4.显示含有空格的文件
技术分享图片

            5.找出有特殊字符的文件

技术分享图片
7.变量
环境变量:
PATH:命令的搜索路径
查看PATH变量:echo $PATH
添加新的路径到坏境变量中:PATH=$PATH:/newpath,需要注意的是:路径是以:分隔,=号之间不能有空格,不要使用PAHT=/newpath这种方式赋值,否则会把PATH中原有的路径清空掉
HISTSIZE:历史命令缓存区大小
HISTSIZE=500,将缓存区大小设置为500,也就是说只能保存500条命令
注意:不管是PATH设置还是HISTSIZE设置都只是对当前的bash环境生效,即使你用同一个用户,登陆到同一个系统中也是无效的,退出登陆,清空设置,要想永久生效,需要写在配置文件当中(在当前用户家目录下的.bashrc中,是个隐藏文件,只对同一个用户有效)
8.编辑等

二、总结

使用命令修改bash的环境,只对当前bash进程有效,退出登陆,或者登陆到另一个终端都无效,想要永久生效必须写到配置文件当中。

bash及其特性

标签:结果   dir   单个字符   实例   nal   匹配   ima   directory   单引号   

原文地址:http://blog.51cto.com/13803030/2130209

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