红联Linux门户
Linux帮助

Linux下的字符展开

发布时间:2016-01-26 09:52:47来源:linux网站作者:水落

通过展开,你输入的字符,在 shell 对它起作用之前,会展开成为别的字符。如:

[SL@SL ~]$ echo *
Desktop Pic txt.save

shell 在 echo 命令被执行前把 * 展开成了当前工作目录下的文件名字。


路径名展开

通配符所依赖的工作机制叫做路径名展开。


波浪线展开

波浪线字符(“~”)有特殊的含义。当它用在一个单词的开头时,它会展开成指定用户的家目录名,如果没有指定用户名,则展开成当前用户的家目录。
[SL@SL ~]$ echo ~
/home/SL


算术表达式展开

格式:$((expression))
echo $((2 + 2))
4

Linux下的字符展开


花括号展开

花括号表达式本身可 能包含一个由逗号分开的字符串列表,或者一系列的整数,或者单个的字符串。这种模式不能嵌入空白字符。

echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back

echo Number_{1..5}
Number_1  Number_2  Number_3  Number_4  Number_5

echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b


参数展开

$  变量调用符号
用法: $变量
机制:调用变量,从而得到‘变量的值’


命令替换

Linux命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个Linux命令的参数
echo $(ls)
Desktop Documents ls-output.txt Music Pictures Public Templates Videos
也可用倒引号来代替$()
ls -l `which cp`
-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp


引用
shell 提供了一种 叫做引用的机制,来有选择地禁止不需要的展开。

""  双引号
机制:把它所包含的内容作为普通字符,但 $,\ (反斜杠),和 `(倒引号)除外
意味着单词分割,路径名展开,波浪线展开,和花括号展开都将失效,然而参数展开,算术展开,和命令替换 仍然执行。

'' 单引号
机制:把它所包含的内容作为普通字符,无例外

echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/me/ls-output.txt a b foo 4 SL

双引号中波浪线展开,路径名展开,花括号展开均失效,参数展开,算术展开,和命令替换 仍然执行。
echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt   {a,b} foo 4 me  

单引号中全部失效
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
text ~/*.txt  {a,b} $(echo foo) $((2+2)) $USER   


转义字符

字符之前加上一个反斜杠 \


本文永久更新地址:http://www.linuxdiyf.com/linux/17671.html