- 论坛徽章:
- 0
|
简单问题
/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//
执行id命令作为sed的输入.在这里sed script的意思是,将所有不是字母和数字和
等于号"="和后面跟任意多个字符的字符串都替换为空.这是sed的用法,你可以看关于sed和正则表达试的质料.[^a-z0-9=].*是一个正则表达试,sed 's/..../../' 是sed的替换字符串的用法.你执行id时会显示类似:uid=0(root) gid=3(sys) groups=3(sys).....东东.在执行上诉命令时,sed发现uid=0后是一个小括弧'('
不是字母也不是数字,而且后面跟的是root gid=3...l的任意的字符(空格也属于
任意字符),所以sed会将uid=0后面的字符全部替换为空即删除掉,所以你
执行完/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//
后,会仅仅显示uid=0.
关于eval是指将eval后的字符串当作一个命令来执行,
eval后跟单引号'或反倒引号还是双引号在eval uid=123都是一样的意思(仅仅这
个列子是一样的意思)即将uid=123当一个命令来看,即将123付值给变量uid,你用echo $uid就可以看到uid的值变为了123.
但实际上反导引号也有执行命令的意思,但它与eval是不同的.在这就不详细ggyy了. |
|