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:分割命令

  • 相关阅读:
    磁盘原理总结
    Algorithm:多维数组和矩阵
    Algorithm:字典序最小问题
    Algorithm:递归思想及实例分析
    Algorithm:贪心策略之区间覆盖问题
    Algorithm:贪心策略之区间选点问题
    Algorithm:位运算的这些小技巧你知道吗?
    面试题
    操作系统
    数据结构:B树和B+树的插入、删除图文详解
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/11038387.html
Copyright © 2011-2022 走看看