Chapter2 命令行基础(2)

来源:互联网 发布:透视衣淘宝 编辑:程序博客网 时间:2024/06/05 22:09



元字符和文件名生成


$ls -l filename


显示文件的访问权限,符号链接,文件属主, 文件属组,文件大小, 修改时间,文件名

http://baike.baidu.com/link?url=cmWjntmuA5yuNi41ZSOFb9GT3-2er2p1G-QbNH-YUXFt5MxO7nlS4QqxCkSHxoZyVPXRPPVOq8TGIGx2Qeu5Ca


$ls -l *.c

类似正则表达式

*为一个元字符,用来匹配任意,包括空字符串。

abc*: 匹配所有以abc开头的空字符串

*.c: 匹配所有以.c结尾的字符串

abc?: 问号为一个通配符,如例子,只匹配以abc开头,长度为4的字符串

[…]: 自定义规则,[a-z],[0-9]等等,还可以用否定规则,如

$中[!0-9]

bash中[^0-9]


还可以将*用到路径中去:

如下:

wenshuaigedeAir:~ macbookair$ ls -l  gits/*/manage.py

-rwxr-xr-x  1 macbookair  staff  248  6  7 09:53 gits/Leech/manage.py

-rwxr-xr-x  1 macbookair  staff  249  6 17 18:13 gits/Mysite/manage.py


一个额外的例子:

$grep ‘[Ff]irst’ *.txt

查找规则是:匹配所有内容中含有’First’或者’first’的格式为txt的文档。

转义与引用


如果想输出转义字符,并且转义字符是

’\’+字母

要在echo之后加入 -e 选项

如:

$echo -e ‘\n’

如果不是字母的转义,则不用加上-e, 如:

$echo “\””

(注:这里外围的引号必须是双引号,否则无法转义)



Shell中单引号和双引号的区别:


定义一个变量name.

echo ‘$name’ 就是将’’里面的东西当成一个字符串

echo $name 或者 echo “$name”都是将$name里面的内容输出.


如果需要转义多个连续字符,就把他们全部括在单引号里,如下:

echo ‘\*&^%$#@!’’'


所以:

1 无论怎样,如果把字符串放到单引号里,echo的时候就原封不动的输出原有样式。

2 如果定义变量,想要引用变量的值,可以直接$name访问,也可以加上双引号。

3 如果需要转义,如果是’\n’这种含有字母的转义,就需要加上’-e’;如果不是含有字母的转义,就不需要 ‘-e’而需要双引号;但是通过-e的话,就无所谓单双引号。


一个额外的例子:

有一个文件,名为’test file’

删除的时候:

$rm test\ file

$rm test” ”file

$rm test’ ’file


查看命令历史


$fc -l 列出最近的几条命令(16条)

$fc -e 100 110 用vi打开编号为100到110之间的命令,可以编辑

$history 列出所有历史命令


$HISTFILE

$HISTSIZE


命令别名


比如:

$alias del = rm

执行之后, del 和rm的效果是等价的,不会取代rm,两者都可以用,但是当终端退出的时候,alias失效


查询命令


比如我要查询ls的用法

$man ls

然后按’Q’返回终端


命令行的解释执行过程


12个过程:

  1. 读取命令行
  2. 回显输入的命令
  3. 变量替换
  4. 命令替换
  5. I/O重定向(Bourne Shell)
  6. IFS处理
  7. 扩展元字符以生成文件名
  8. 删除引号引用
  9. 跟踪执行过程
  10. I/O重定向 (Korn Shell)
  11. 环境处理
  12. 执行命令

1 0
原创粉丝点击