bash及其特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash及其特性相关的知识,希望对你有一定的参考价值。

一、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及其特性的主要内容,如果未能解决你的问题,请参考以下文章

bash及其特性

Linux基础3-1 Bash及其特性

Linux基础3-1 Bash及其特性

bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

Linux bash基础特性二

学习之路浅谈:bash及其特性,命令历史以及用户管理及权限,shell的类型