`
matt.u
  • 浏览: 129813 次
  • 性别: Icon_minigender_1
  • 来自: CQ
社区版块
存档分类
最新评论

(转)linux shell的特殊符号

阅读更多
转自:http://blog.csdn.net/liangjm_1984/archive/2008/03/13/2175428.aspx

#:注释,行首以#开头为注释
                    标准的引用和转义字符(" '\) 可以用来转义#
;       命令分隔符,可以用来在一行中来写多个命令
;;      终止case选项
.       .命令等价于source命令
.       .作为文件名的一部分。如果作为文件名的前缀的话,那么这个文件将成为隐藏文件。将不为ls列出
.       .作为正则表达式的一部分,用来匹配任何的单个字符
"        部分引用."STRING"阻止了一部分特殊字符。
'        全引用.'STRING'阻止了全部特殊字符
,        逗号链接了一些列的算诉操作系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被返回。
\       转义字符,如\X等价于"X"
/       文件名路径分
"        部分引用."STRING"阻止了一部分特殊字符。
'        全引用.'STRIN割符,或用来做除法操作.
`      
     ,   逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被
         返回.
         如:
         1 let "t2 = ((a = 9, 15 / 3))" # Set "a = 9" and "t2 = 15 / 3"
     \   转义字符,如\X 等价于"X"或'X',具体见第 5 章.
     /   文件名路径分隔符.或用来做除法操作.
     `   后置引用,命令替换,具体见第 14 章
     :   空命令,等价于"NOP"(no op,一个什么也不干的命令).也可以被认为与 shell 的内建命令
         (true)作用相同.":"命令是一个 bash 的内建命令,它的返回值为 0,就是 shell 返回的 true.
       
!     取反操作符,将反转"退出状态"结果,(见 Example 6-2).也会反转 test 操作符的意义.比
      如修改=为!=.!操作是 Bash 的一个关键字.
*     万能匹配字符,用于文件名匹配(这个东西有个专有名词叫 file globbing),或者是正则
      表达式中.注意:在正则表达式匹配中的作用和在文件名匹配中的作用是不同的.
    
*     数学乘法.
      **是幂运算.
?     测试操作.在一个确定的表达式中,用?来测试结果.
      (())结构可以用来做数学计算或者是写 c 代码,那?就是 c 语言的 3 元操作符的
      一个.
      在"参数替换"中,?测试一个变量是否被 set 了.
?     在 file globbing 中和在正则表达式中一样匹配任意的单个字符.
$     变量替换
$     在正则表达式中作为行结束符.
${}   参数替换
$*,$@ 位置参数
$?    退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态.
$$    进程 ID 变量.这个$$变量保存运行脚本进程 ID
()    命令组.如:
      1 (a=hello;echo $a)
      注意:在()中的命令列表,将作为一个子 shell 来运行.
      在()中的变量,由于是在子 shell 中,所以对于脚本剩下的部分是不可用的.
      如:
              1  a=123
              2  ( a=321; )
              3
              4  echo "a = $a"       # a = 123
              5  # 在圆括号中 a 变量,更像是一个局部变量.
              用在数组初始化,如:
              1 Array=(element1,element2,element3)
     {xxx,yyy,zzz...}
              大括号扩展,如:
              1 cat {file1,file2,file3} > combined_file
              2 # 把 file1,file2,file3 连接在一起,并且重定向到 combined_file 中.
              3
              4
              5 cp file22.{txt,backup}
              6 # 拷贝"file22.txt" 到"file22.backup"中
              一个命令可能会对大括号中的以逗号分割的文件列表起作用[1]. file globbing 将对
              大括号中的文件名作扩展.
              注意: 在大括号中,不允许有空白,除非这个空白是有意义的.
              echo {file1,file2}\ :{\ A," B",' C'}
              file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C
     {}       代码块.又被称为内部组.事实上,这个结构创建了一个匿名的函数.但是与函数不同的
              是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的.如:
              bash$
              {
                    local a;
                    a= 123;
              }
              bash 中的 local 申请的变量只能够用在函数中.
              1 a=123
              2 { a=321; }
              3 echo "a = $a"        # a = 321      (说明在代码块中对变量 a 所作的修改,影响了外边的变
量 a)
              4
              5 # Thanks, S.C.
           
                注意: 与()中的命令不同的是,{}中的代码块将不能正常地开启一个新 shell.[2]
     {} \;      路径名.一般都在 find 命令中使用.这不是一个 shell 内建命令.
                注意: ";"用来结束 find 命令序列的-exec 选项.
     []          test.
                test 的表达式将在[]中.
                值得注意的是[是 shell 内建 test 命令的一部分,并不是/usr/bin/test 中的扩展命令
                的一个连接.
     [[]] test.
                test 表达式放在[[]]中.(shell 关键字)
                具体查看[[]]结构的讨论.
     []          数组元素
                 Array[1]=slot_1
                 echo ${Array[1]}
     []          字符范围
                 在正则表达式中使用,作为字符匹配的一个范围
(()) 数学计算的扩展
       在(())结构中可以使用一些数字计算.
       具体参阅((...))结构.
>&>>&>><
       重定向.
       scriptname >filename 重定向脚本的输出到文件中.覆盖文件原有内容.
       command &>filename 重定向 stdout 和 stderr 到文件中
       command >&2 重定向 command 的 stdout 到 stderr
       scriptname >>filename 重定向脚本的输出到文件中.添加到文件尾端,如果没有文件,
       则创建这个文件.
       进程替换,具体见"进程替换部分",跟命令替换极其类似.
       (command)>
       <(command)
       <和> 可用来做字符串比较
       <和> 可用在数学计算比较
<<     重定向,用在"here document"
<<<         重定向,用在"here string"
<,>    ASCII 比较
\<,\>  正则表达式中的单词边界.如:
       bash$grep '\<the\>' textfile
|      管道.分析前边命令的输出,并将输出作为后边命令的输入.这是一种产生命令链的
       好方法.
       1 echo ls -l | sh
       2 # 传递"echo ls -l"的输出到 shell 中,
       3 #+ 与一个简单的"ls -l"结果相同.
                 4
                 5
                 6 cat *.lst | sort | uniq
                 7 # 合并和排序所有的".lst"文件,然后删除所有重复的行.
                管道是进程间通讯的一个典型办法,将一个进程的 stdout 放到另一个进程的 stdin 中.
                标准的方法是将一个一般命令的输出,比如 cat 或 echo,传递到一个过滤命令中(在这个
                过滤命令中将处理输入),得到结果,如:
                cat $filename1 | $filename2 | grep $search_word
                当然输出的命令也可以传递到脚本中.如:
     >|         强制重定向(即使设置了 noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.
     ||         或-逻辑操作.
     &       后台运行命令.一个命令后边跟一个&,将表示在后台运行.
     -          用于重定向 stdin 或 stdout.
  
               注意:以"-"开头的文件名在使用"-"作为重定向操作符的时候,可能会产生问题.
               应该写一个脚本来检查这个问题,并给这个文件加上合适的前缀.如:
               ./-FILENAME, $PWD/-FILENAME,或$PATHNAME/-FILENAME.
               如果变量的值以"-"开头,可能也会引起问题.
               1 var="-n"
               2 echo $var
               3 #具有"echo -n"的效果了,这样什么都不会输出的.
     -         之前工作的目录."cd -"将回到之前的工作目录,具体请参考"$OLDPWD"环境变量.
               注意:一定要和之前讨论的重定向功能分开,但是只能依赖上下文区分.
     -         算术减号.
     =         算术等号,有时也用来比较字符串.
               1 a=28
               2 echo $a      # 28
     +         算术加号,也用在正则表达式中.
     +         选项,对于特定的命令来说使用"+"来打开特定的选项,用"-"来关闭特定的选项.
     %         算术取模运算.也用在正则表达式中.
  ~    home 目录.相当于$HOME 变量.
  ~+   当前工作目录,相当于$PWD 变量.
  ~-   之前的工作目录,相当于$OLDPWD 内部变量.
  =~  用于正则表达式,这个操作将在正则表达式匹配部分讲解,只有 version3 才支持.
  ^   行首,正则表达式中表示行首."^"定位到行首.
  控制字符
       修改终端或文本显示的行为.控制字符以 CONTROL + key 组合.
       控制字符在脚本中不能正常使用.
       Ctl-B        光标后退,这应该依赖于 bash 输入的风格,默认是 emacs 风格的.
      Ctl-C         Break,终止前台工作.
      Ctl-D        从当前 shell 登出(和 exit 很像)
                    "EOF"(文件结束符).这也能从 stdin 中终止输入.
                    在 console 或者在 xterm window 中输入的时候,Ctl-D 将删除光标下字符.
                    当没有字符时,Ctrl-D 将退出当前会话.在 xterm window 也有关闭窗口
                   的效果.
      Ctl-G         beep.在一些老的终端,将响铃.
      Ctl-H        backspace,删除光标前边的字符.如:
                  
              Ctl-I      就是 tab 键.
              Ctl-J      新行.
              Ctl-K            垂直 tab.(垂直 tab?新颖,没听过)
                               作用就是删除光标到行尾的字符.
              Ctl-L            clear,清屏.
              Ctl-M            回车
  
               Ctl-Q       继续(等价于 XON 字符),这个继续的标准输入在一个终端里
               Ctl-S       挂起(等价于 XOFF 字符),这个被挂起的 stdin 在一个终端里,用 Ctl-Q 恢复
               Ctl-U       删除光标到行首的所有字符,在某些设置下,删除全行.
               Ctl-V       当输入字符时,Ctl-V 允许插入控制字符.比如,下边 2 个例子是等价的
                           echo -e '\x0a'
                           echo <Ctl-V><Ctl-J>
                           Ctl-V 在文本编辑器中十分有用,在 vim 中一样.
               Ctl-W       删除当前光标到前边的最近一个空格之间的字符.
                           在某些设置下,删除到第一个非字母或数字的字符.
               Ctl-Z       终止前台工作.
分享到:
评论

相关推荐

    Linux运维-3.Shell编程-11shell基础-106shell特殊符号2.avi

    Linux运维-3.Shell编程-11shell基础-106shell特殊符号2.avi

    Linux运维-3.Shell编程-11shell基础-105shell特殊符号1.avi

    Linux运维-3.Shell编程-11shell基础-105shell特殊符号1.avi

    linux shell脚本攻略源代码

    此外,了解Shell特殊字符的作用也非常重要。比如,`&`用于后台运行命令,`|`用于管道连接命令输出,`&gt;`和`分别用于重定向输出和输入,`?`、`*`和`[]`在文件名扩展中起到通配符作用。 在编写脚本时,需要注意良好的...

    linux中特殊符号大全

    Linux作为一款强大的开源操作系统,其Shell脚本语言中包含了众多特殊符号,这些符号在脚本编写及命令行操作中扮演着重要角色。本文将详细介绍部分常用的特殊符号及其用法。 #### 1. 井号 (#) —— 注释 **概述:** ...

    linux shell 编程1

    Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...

    linux 特殊符号含义

    Linux 特殊符号含义详解 在 Linux 中,有许多特殊符号和变量,它们具有特定...了解 Linux 中的特殊符号和变量的含义可以帮助我们更好地使用 Linux 系统和编写 Shell 脚本。这将使我们更好地掌握 Linux 的使用和开发。

    LINUX SHELL 脚本攻略

    在Shell脚本中可以执行各种系统命令,并可以使用特殊字符和符号来扩展命令的功能,例如使用管道符`|`进行命令链式处理,使用重定向符`&gt;`、`来控制命令的输入输出。 3. 流程控制是脚本决策和循环处理的关键。if语句...

    西南科大+Linux实验报告+shell程序开发

    2. **变量与特殊符号**:学习使用变量存储信息,以及特殊符号如通配符、重定向符号等在Shell脚本中的作用。 3. **复杂脚本编写**:使用函数和数组编写更复杂的脚本,提高编程能力。 4. **开发环境与团队协作**:熟悉...

    linux特殊符号大全

    本文档旨在系统性地介绍Linux中常见的特殊符号及其用途,帮助用户更加熟练地进行Shell编程与命令行操作。 #### 二、特殊符号详解 ##### 1. `#` 井号 (Comments) - **用途**:用于添加注释或临时禁用某些命令。 - ...

    Linux-Shell特殊字符和控制字符大全

    Shell特殊字符在Linux Shell编程中起着非常重要的作用,它们用于控制Shell的行为、格式化输出以及进行各种复杂的操作。以下是对给定内容中提到的一些关键特殊字符及其功能的详细解释: ##### 1. `#` 注释 - **用途*...

    LinuxShell脚本编程实例.pdf

    在Linux Shell脚本编程中,here document是一种特殊的语法结构,用于实现多行文本的输出。here document的语法格式为:,delimiter其中delimiter是结束符号。 在脚本中,here document可以用于输出多行文本,例如,...

    Linux shell命令详解

    简单的说shell程序就是一个包含若干行shell或者linux命令的文件,象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如Ⅵ等.在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成...

    京峰教育Linux Shell基础编程

    Shell 脚本变量名称不能以数字、特殊符号开头。 Shell 变量 Shell 编程是非类型的解释型语言,不像 C++、JAVA 语言编程时需要事先声明变量,Shell 给一个变量赋值,实际上就是定义了变量,在 Linux 支持的所有 ...

    Linux Shell编程基础

    接下来,注释在Shell脚本中使用`#`符号,从该符号到行末的所有内容都被视为注释,不会被执行。在编写脚本时,注释有助于提高代码的可读性。 执行Shell脚本可以通过几种方式完成。可以直接使用Shell命令,如`bash ...

    新版Linux Shell编程实训(全)20170518.docx

    同时,介绍了一些特殊符号在Shell编程中的应用,并提供了一个展示系统信息的Shell案例。 3. **Shell传递参数**:介绍了如何在Shell脚本中接收和处理命令行参数,通过案例展示了参数比较和通过参数描述变量的方法。 ...

    Linux&SHELL;基本知识笔试试卷

    ### Linux&SHELL 基本知识 #### Linux 内核编程语言 - **知识点**:Linux 的内核主要是使用 C 语言编写的。虽然现代内核可能包含了使用其他语言编写的组件,但其核心仍然是基于 C 语言。因此,正确答案是选项 B:C...

    LinuxShell编程全攻略

    Linux Shell编程是利用Shell语言进行的一种编程方式,它是Linux操作系统中不可或缺的一部分。Shell可以解释和执行用户输入的命令,同时也可以用于编写脚本程序,实现自动化的任务处理。Shell编程的主要特点包括定义...

    Linux shell脚本编写基础

    Linux shell脚本编写基础 Linux系统作为自由软件领域的代表,一直深受众多程序员和系统管理员的青睐。而在Linux环境中,shell脚本编写则是系统管理、自动化运维和开发工作中的一项基本技能。Shell脚本不仅能将复杂...

    shell特殊符号[文].pdf

    以上只是部分shell特殊符号的介绍,实际上还有更多符号,如`!`(历史命令引用)、`$`(变量引用)、`[]`(字符类)、`()`(命令组)等,它们在shell脚本中都有着特定的功能和用法。熟练掌握这些符号能帮助你更高效地...

Global site tag (gtag.js) - Google Analytics