1.1-1.3shell特性和变量

回复 收藏
1.1shell特性
    ①  history
        查看历史命令,历史命令存在于  ~/.bash_history  中,默认存放1000个,重启shell后不会被删除,存放个数可以通过  echo $HISTSIZE    变量查询;     !!    表示重复执行上一条命令,    !$  表示调用上一条命令最后一个参数,    !c    则是重新执行最近的一条以c开头的命令。用法截图如下:http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/e223463dd5b2471eaef4215c9c086d8f/clipboard.png
blob.png


    ②  tab键
        tab键可以用来补全命令,如果当前文件夹有多个重复选项,则连点两下,可以列出重复选项;

    ③  alias
        alias是定制别名的命令,除了系统定义的,也可以直接用alias命令自定义,用unalias删除自定义,注意,自定义命令只在当前shell中有效,如果需要全局有效,则必须写入配置文件根目录下   ~/.bashrc
    如:alias aaa='whish cd'                    unalias aaa

    ④通配符
        *    是通配符,可以代表所有,而?则代表一个字符
2Y8D`@W6B~0NZ`28{O%1{}3.png


    ⑤管道符  |
        |    是将前一条命令执行的结果都到后面给后面一条命令执行,如:
http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/a341d8b9320049bc951f7bc548ffe1c1/clipboard.png
blob.png


    ⑥重定向
    > 重定向文件,覆盖!!        >>  追加重定向,在文件末尾添加内容
    < 反向重定向,覆盖!!        注:用  >  错误重定向时,当不存在文件直接重定向会报错,2>则是不会报错,强制定向
blob.png


http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/b4e817db8691486aabccb484044cb22b/clipboard.png   

    ⑦后台
    用ctrl+z可以将正在执行的进程调入后台执行,我们可以通过fg将进程调到前台,也可以用bg将进程调入后台,(或者在命令末端加上&这个符号),可以通过jobs命令查看后台进程,其中+,-,     分别是从高到低的优先级

1.2shell 变量    shell是用户和机器的交互工具,所有操作系统都有shell,windows的shell就是cmd窗口,linux系统的shell就是bash;
    我们可以通过env查看系统自带的变量,也可以用set查看所有变量(包括env全部、所有自定义的变量、额外变量),命令  echo $[变量名]    可以输出变量值;
    我们可以直接定义变量,如  a=1     ;自定义变量只可以是数字、字母和下划线,没有位数限制,不能以数字开头,建议不要用大写字母或一些命令等定义自定义变量,容易混淆有歧义;如果定义值有特殊符号,则必须加上单引号,如  a='/tmp/qqq/'    ;如果需要引用命令的值,可以用反引号表示,如  a=`which rm` 这个命令等同于  a='/bin/rm'    ;如果需要引用变量定义新变量,则最好加上双引号,如  a="$b"11  ;
    变量分为局部变量和全局变量,自定义的变量默认只在当前shell中生效,并不会在子shell里生效,这就是局部变量,如果需要在子shell里生效,则需要声明全局环境,这时就是全局变量,需要用到命令 export ,语法: export a=1   直接声明变量定义!但是这种声明只在本次登录有效,如果需要以后每次登录变量都有效的话,则必须更改变量配置文件了,修改方式如下
    ①    在 /etc/profile 文件里添加变量【对所有用户有效,并且永久的】
如      vim /etc/profile
         export a='/bin/passwd'
        注:如果要立即生效需要执行一下 $source /etc/profile ,不然只能重启后生效
    ②    在根目录  ~/.bash_profile 文件中添加变量【对当前用户生效,并且永久的】
如        vim ~/.bash_profile
           export a='/bin/passwd'
        注同①
   PS:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,
/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。



1.3 系统和用户的环境变量配置文件
在配置文件中定义变量可以永久有效,配置文件有/etc/profile和/etc/bashrc,但是并不建议在这两个文件中添加环境变量,可能会产生不必要的麻烦,建议在  /etc/profile.d/  目录下创建一个新的shell(以.sh  结尾)就可以了。(新的shell可以直接定义变量,也可以在首行加上固定格式 #!  /bin/bash)定义完成后,执行命令   source /etc/profile(/etc/bashrc)     就可以不用重启登录就调用文件内容了!
        bashrc文件里面有一个变量   $PS1   就是定义命令行开头显示内容的,其中W只显示当前目录,w显示绝对路径,如截图http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/33b0d505759944e2b2ae7e7cef8a6a31/clipboard.png
~_MZ`JJ93V_SSZI{[E[~DT.png


         以上是在系统所有用户都生效,而定义某一个单独用户时,只需要更改家目录中  .bash开头的文件,就可以永久生效了
    PS:
       .bash_profile和.bashrc文件的区别在于  .bash_profile是需要登录系统(本机、远程客户端等)时调用的,而  .bashrc  则是只要访问系统就会被调用。所以  .bashrc  里的信息会被更加全面的调用使用到!值得注意的是   .bash_profile   每次执行时默认会先调用  .bashrc   的。



2016-08-05 08:39 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: