Locations of visitors to this page

Monday, October 6, 2008

double hyphens in shell - 命令中双连字符的作用

---------- Forwarded message ----------
From: XIE WEN-MFK346 <wenxie at motorola.com>
Date: 2008/10/6
Subject: 命令行中双连字符(double hyphen)的作用
To: xiewenxiewen at gmail.com

是区分选项(options)和参数(parameters)

通常一条命令包含若干选项和参数,如
grep -i --line-number -e "A" 123.txt 456.txt
-i是一个选项
--line-number是一个选项(是长格式的选项,long option)
-e 也是选项,后面"A"也是该选项的一部分
再后面的123.txt和456.txt是两个参数

选项和参数的位置不定,可以随便写
grep -i --line-number -e "A" 123.txt 456.txt


grep 123.txt --line-number 456.txt -i -e "A"

是一样的


如果当文件名是以-开头的,会被误认为是个选项,导致错误的结果
grep -i -e "A" -a.txt

文件名为"-a.txt",被当成选项了

为了避免出错,可以在文件名前加上路径
grep -i -e "A" ./-a.txt


也可以使用双连字符。双连字符的作用是区分选项和参数,在双横线前面的都是选项,后面的都是参数
grep -i -e "A" -- -a.txt


其它别的命令也可以这么用
ls -- -a.txt


ls -l -- -a.txt


cat -n -- -a.txt


grep '--' 123.txt,这种情况是把'--'当成了分隔符,把123.txt当成了pattern,然后等待用户输入文本,所以出错了


解决方法:
加-e选项
grep -e '--' 123.txt


或加双连字符
grep -- '--' 123.txt



Xie Wen (谢文)
Network & Operations,
Multimedia Applications & Services (MDB)
MOTOROLA Inc.
NO.104 mail box, 8th floor, Motorola Tower,
No. 1 Wang Jing East Road, Chao Yang District,
Beijing 100102 P. R. China
e-mail wenxie at motorola.com



-fin-

No comments:

Website Analytics

Followers