linux 管道符、特殊符号

1、管道符:

管道“|”可将命令的结果输出给另一个命令作为输入之用:

cat *.dat|grep 2018 //(显示dat文件里的信息,在dat文件里显示条件带有2018的信息)

 

2、连接符号: “;”

连续执行多个命令,放在一行执行,中间用“;”分开

mkdir myfile;mv myfile /data1/conf (创建myfile目录,把myfile目录移动到data1/conf路径下)

 

3、后台执行: “&”

用户有时候执行命令要花很长时间,可能会影响做其他事情。最好的方法是将它放在后台执行。后台运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时,在命令的后面加上“&”

 

4、斜线: /

在路径表示中代表目录

cd /data1/conf/

单一的/,代表root根目录

在运算中,代表除法

a=10/2

 

5、反斜线: \

放在指令前,有取消 aliases的作用;放在特殊符号前,该特殊符号的作用消失,;放在指令的最末端,表示指令连接下一行。

$cat data2

the cost is $4.00

$sed -n '/ \ $ /p'data2

the cost is $4.00

 

6、井号: #

#:管理员

$:普通用户

脚本中的:#号是注释

如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

 

7、点: .(dot)

. 代表当前目录

.. 代表上层目录

如果在档案名称前有 . ,需要ls -a 才会显示

特殊字符点号用来匹配除换行符之外的任意单个字符。它必须匹配一个字符,如果在点号字符的位置没有字符,那么模式就不成立

cat data2

this is a test of a line .

the cat is sleeping .

that is a vey nice hat .

this test is at line four .

at ten o'clock we'll go home .

$sed -n '/.at/p' data2

the cat is sleeping .

that is a vey nice hat .

this test is at line four .

匹配了第二行,第三行,第四行,因为匹配的是at,第四行的空格也是字符,因此at前面的空格刚好匹配了该模式,第五行,at放在首行就不能匹配该模式

 

8、逗号: ,

在运算中当做区隔的用途

a=5+3,b=3+2

 

9、惊叹号: !

代表反逻辑的作用,!= :代表不等于

ls a[!0-9]

显示除了a0、a1.......a9的其他文件

 

10、问号: ?

问号表明前面的字符可以出现0次或1次,不包含null字元

ls da?ta

 

11、星号: *

常用的符号,在文件名扩展上,用来代表任何字元,包含null字元

# ls a*a a1 access_log

在运算时。它代表“乘法”

let “aa=2*3”

除了内建指令let,还有一个关于运算的指令expr,星号在这里也担任“乘法”的角色,不过在使用上,它的前面必须加上escape字元

 

12、锚字符:(^)

这个符号在正则表达式中,代表行的“开头”位置,在[]中也与“!”(叹号)一样表示“非”

 

13、连续分号:(;;)

专用在case的选项,担任Terminator的角色

case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac

 

14、'string'单引号

被单引号用括号括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,被视为一般符号处理,防止任何变量替换

heyyou=homeecho '$heyyou' # we get $heyyou

 

15、"string"双引号

被双引号括住的内容,将被视为单一字串,防止通配符扩展,但允许变量扩展,这点与单引号的处理方式不同

heyyou=homeecho "$heyyou" # we get home

 

16、 `command` 倒引号

在前面的单双引号,括住的是字串,但如果该字串是一列命令列,要处理这种情况,得用倒单引号来做

aa=`date + %F` echo "today $aa"

在倒引号内的date + %F 会被视为指令,执行的结果会被带入aa变数中

 

17、**次方运算

两个星号在运算时代表“次方”的意思

let "aaaa=2**3"

echo "aaaa=$aaaa" 结果:8

 

18、输出/输入重导向

>     >>     <     <<     :>     &>     2&>      2<>>&     >&2

 

文件描述,用一个数字(通常为0-9)来表示一个文件

常用的文件描述符如下:

文件描述符               名称                常用缩写                默认值

      0                      标准输入              stdin                     键盘

      1                      标准输出              stdout                   屏幕

      2                  标准错误输出           stderr                   屏幕

我们简单的用<或> 时,相当于使用0<或1>

* cmd > file

把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。

* cmd >> file

把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。

* cmd < file

使cmd命令从file读入

* cmd << text

从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。

* cmd <<< word

把word(而不是文件word)和後面的换行作为输入提供给cmd。

* cmd <> file

以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。

* cmd >| file

功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。

: > filename      把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).

cmd >&n 把输出送到文件描述符n

cmd m>&n 把输出 到文件符m的信息重定向到文件描述符n

cmd >&- 关闭标准输出

cmd <&n 输入来自文件描述符n

cmd m<&n m来自文件描述各个n

cmd <&- 关闭标准输入

cmd <&n- 移动输入文件描述符n而非复制它。(需要解释)

cmd >&n- 移动输出文件描述符 n而非复制它。(需要解释)

注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。

 

 

你可能感兴趣的:(linux)