zoukankan      html  css  js  c++  java
  • Linux-shell学习笔记2

    1、命令的运行顺序

    1. 以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』;
    2. 由 alias 找到该命令来运行;
    3. 由 bash 内建的 (builtin) 命令来运行;
    4. 通过 $PATH 这个变量的顺序搜寻到的第一个命令来运行。

    2、通过 type -a ls 也可以查询的命令的运行顺序。

    3、source :读入环境配置文件的命令。

    利用 source 或小数点 (.) 都可以将配置文件的内容读进来目前的 shell 环境中。

    4、Ctrl + U 在提示字符下,将整列命令删除。

    5、在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) 

    符号 意义
    * 代表『 0 个到无穷多个』任意字符
    ? 代表『一定有一个』任意字符
    [ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
    [ - ] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!
    [^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

    6、

    符号 内容
    # 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行
    跳脱符号:将『特殊字符或通配符』还原成一般字符
    | 管线 (pipe):分隔两个管线命令的界定(后两节介绍);
    ; 连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
    ~ 用户的家目录
    $ 取用变量前导符:亦即是变量之前需要加的变量取代值
    & 工作控制 (job control):将命令变成背景下工作
    ! 逻辑运算意义上的『非』 not 的意思!
    / 目录符号:路径分隔的符号
    >, >> 数据流重导向:输出导向,分别是『取代』与『累加』
    <, << 数据流重导向:输入导向 (这两个留待下节介绍)
    ' ' 单引号,不具有变量置换的功能
    " " 具有变量置换的功能!
    ` ` 两个『 ` 』中间为可以先运行的命令,亦可使用 $( )
    ( ) 在中间为子 shell 的起始与结束
    { } 在中间为命令区块的组合!

    7、数据流重导向

    数据流重导向可以将 standard output (简称 stdout) 与 standard error output (简称 stderr) 分别传送到其他的文件或装置去,而分别传送所用的特殊字符则如下所示:

    1. 标准输入  (stdin) :代码为 0 ,使用 < 或 << ;
    2. 标准输出  (stdout):代码为 1 ,使用 > 或 >> ;
    3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

    >或者2>将会清空文件中上次的写入内容,>>和2>>将会追加内容到已存在的文件内。

    8、如果我知道错误信息会发生,所以要将错误信息忽略掉而不显示或储存呢? 这个时候黑洞装置 /dev/null 就很重要了!这个 /dev/null 可以吃掉任何导向这个装置的信息。

    9、如果我要将正确与错误数据通通写入同一个文件去呢?这个时候就得要使用特殊的写法

    [dmtsai@www ~]$ find /home -name .bashrc > list 2> list  <==错误
    [dmtsai@www ~]$ find /home -name .bashrc > list 2>&1     <==正确
    [dmtsai@www ~]$ find /home -name .bashrc &> list         <==正确

    10、< 与 <<:将原本需要由键盘输入的数据,改由文件内容来取代。

    11、『我要用 cat 直接将输入的信息输出到 catfile 中, 且当由键盘输入 eof 时,该次输入就结束』,那我可以这样做:cat > catfile << "eof"。

    12、在命令与命令中间利用分号 (;) 来隔开,这样一来,分号前的命令运行完后就会立刻接着运行后面的命令了。(不考虑命令相关性的连续命令下达)

    13、|| 和 && 类似于js中的短路运算符,不过Linux 底下的命令都是由左往右运行。

    14、若前一个命令运行的结果为正确,在 Linux 底下会回传一个 $? = 0 的值。

    15、管线命令『 | 』仅能处理经由前面一个命令传来的正确信息,也就是 standard output 的信息,对于 stdandard error 并没有直接处理的能力。

    16、cut:可以将一段信息的某一段给他『切』出来~ 处理的信息是以『行』为单位。

    17、sort:排序命令

    18、uniq:重复的数据只显示一行

    19、wc:输出文件整体信息,行、字、字符。

    20、tee: 会同时将数据流分送到文件去与屏幕 (screen);而输出到屏幕的,其实就是 stdout ,可以让下个命令继续处理。

    21、xargs:产生某个命令的参数。

    22、split:分割命令

  • 相关阅读:
    Begin Example with Override Encoded SOAP XML Serialization
    State Machine Terminology
    How to: Specify an Alternate Element Name for an XML Stream
    How to: Publish Metadata for a WCF Service.(What is the Metadata Exchange Endpoint purpose.)
    Beginning Guide With Controlling XML Serialization Using Attributes(XmlSerializaiton of Array)
    Workflow 4.0 Hosting Extensions
    What can we do in the CacheMetaData Method of Activity
    How and Why to use the System.servicemodel.MessageParameterAttribute in WCF
    How to: Begin Sample with Serialization and Deserialization an Object
    A Test WCF Service without anything of config.
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/11038387.html
Copyright © 2011-2022 走看看