---------- 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-
Monday, October 6, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment