zoukankan      html  css  js  c++  java
  • 认识和学习shell

    认识和学习shell

    Linux使用的shell版本名为“Bourne Again SHell(简称bash)”,这个shell是Bourne SHell的增强版本,也是基于GNU的架构发展来的

    bash shell的功能

    1.命令记忆功能:他能够记忆使用过的命令,命令记录在主文件夹内的.bash_history中。注意:~/.bash_history记录的是前一次登陆以前所执行的命令,而这一次登陆所执行的命令则暂存在临时内存中。当注销系统后,这些命令才回被记录到.bash_history中。

    2.命令与文件补全功能([Tab]键的好处)

    3.命令别名设置功能(alias)

    设置: alias lm=’ls -al’

    4.作业控制,前台,后台控制

    5.脚本程序

    6.通配符:*

    bash shell 的内置命令:type

    在我们的bash中已经有许多内置的命令的。例如 cd ,umask等等

    那么,我们如何知道这个命令是来自于外部命令还是内部命令呢?这时,我们可以通过type这个命令来查看即可。

    type也可以用来作为类似which命令的用途(which:寻找可执行文件)

     

    shell的变量功能

    变量的显示与设置:echo,unset

    变量的显示:echo eg:echo $variable

    echo $PATH

    变量的设置:只要用“=”将变量和其内容连接就好了

    eg: myname=Droidxin

    对于变量的设置,我们必须掌握一些变量的设置规则。

     

    单引号和双引号的区别:双引号仍然可以保有变量的内容,特殊字符 仍保持原本的特性,但单引号仅能是一般符号,而不会有特殊字符。也就是说,使用了单引号,不在是变量的内容,而仅仅是普通字符了。

    反单引号的作用:在一串命令中,反单引号内的命令将会先被执行,而其执行出来的结果将作为外部的输入信息

    eg:  ls -l `locate wode`      

     

    环境变量的功能

    首先,我们得知道有多少默认的环境变量?可以通过 env和export两个命令来查阅。

    接下来我们看一下一些常见的环境变量

     

    PS1,命令提示符,一个挺有趣的变量

    $(关于本shell的PID),这个代表目前这个shell的线程代号,即所谓的PID(Process ID)

    ?(关于上个执行命令的回传码)一般来说,如果命令执行成功,则会回传一个0值。

    变量的操作命令

    变量键盘读取,数组与声明:read,array,declare

    read:读取来自键盘输入的变量

    declare/typeset:声明变量的类型,变量的声明是非常有用的,变量的默认设置为字符串类型。有时候你需要将变量进行运算的话,那么需要将变量的类型设置为整型。

    数组变量类型。

    ulimit:与文件系统及程序的限制关系,可以限制用户的资源,包括打开的文件数量,可以使用的CPU的时间,使用的内存总量等。

    变量内容的删除,替代和替换,详情可参考书本P313

    命令别名与历史记录:alias,unalias,history

    Bash Shell的操作环境

    1.现在我们知道系统里面其实有不少的ls命令,或者是包括内置的echo命令,那么想一想,如果一个命令被执行,到底是哪一个ls被拿来执行呢?基本上,命令运行的顺序是这样 的:

     

    2.bash的登陆与欢迎信息:/etc/issue,/etc/motd

    可以自定义一些用户登陆显示信息,例如可以显示一些提示话语之类的信息,对于多用户管理十分的有用。

    3.bash的环境配置文件

    bash在启动的时候回直接读取bash的环境配置文件,已规划好bash的操作环境。要注意,我们设置的命令别名,自定义的变量在你注销bash后会失效,所以,如果你想要保存你的设置,那么,就需要把这些设置写入配置文件才行。

    讲一下login shell 和non-login shell

    login shell:取得bash时需要完整的登陆流程。

    non-login shell:取得bash接口不需要重复登陆的举动,例如 ,从X的图形界面启动终端机,不需要再次登陆。

    login shell 只会读取/etc/profile和~/.bash_profile 或~/.bash_login或~/.profile

    /etc/profile:系统整体的设置,最好不要改

    ~/.bash_profile 或~/.bash_login或~/.profile:用户个人设置,我们需要修改的数据,就是这里

    此外,关于bash环境配置文件和如何配置不在多提了

    通配符和特殊符号

    通配符,让我们利用bash操作更加的简便快捷

     

    bash环境中的特殊符号

     

     

     

     

     

    数据流重定向

    什么是数据流重定向呢?一般来说,如果你要执行一个命令,通常需要这样的过程

     

    在执行完一条命令之后,都会有回传的信息,如果正确执行了命令,那么就会standard output标准输出,输出命令正确执行的信息,否则就会standard error output标准错误输出,输出命令错误执行的信息

    而数据流重定向,就是将这些信息分别传送到其他的文件或设备中去。

     

    数据流重定向十分的重要,同时命令操作也多样化,那么可以参考书本的P329

    何时使用数据流重定向

    既然我们知道了数据流的重定向,那么什么时候要使用数据流重定向呢?数据流重定向一般应用于:

    1、屏幕输出的信息很重要,而且我们需要将它保存下来;

    2、后台执行中的程序,不希望它干扰屏幕正常的输出结果;

    3、一些系统的例行命令的执行结果,希望它能够保存下来;

    4、一些执行命令的可能已知出错信息时,想以“2>/dev/null”将它屏蔽掉;

    5、错误信息和正确信息需要分别输出;

    命令执行的判断依据

    判断依据: ;   &&   ||

    ;  不考虑命令相关性的连续命令执行

     

    管道命令

    管道命令“|”仅能够处理经由前面一个命令传来的正确信息,也就是standard output 的信息,对于standard error 并没有直接处理能力

    选取命令:cut,grep

    cut:切去信息的一部分

    grep:分析一行信息,若有需要,则拿出来

    排序命令:sort,wc,uniq

    tee:双向重定向

    tr:文字信息的替换或者删除

    col:tab键转换成空格键

    jion:将两个文件当中有相同数据的那一行加在一起

    paste:将两行直接贴在一起

    expand:将tab键转换成空格键

    split:切割命令,可以将大文件切割

    xargs:参数代换

     

    重点回顾

  • 相关阅读:
    【转】网络字节序与主机字节序
    VC之美化界面篇 (转)
    VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(转)
    符验手记
    一友人昨夜接到电话,发生何事
    [转]众VC论道IT峰会:投资是否靠运气
    路过一个小摊,看到一个有趣的现象
    PJSUA提示要注册线程的解决办法
    彩票股票金融与运气之研究(五) 明敌
    随手测一局婚姻,留验
  • 原文地址:https://www.cnblogs.com/droidxin/p/3840455.html
Copyright © 2011-2022 走看看