Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318141
  • 博文数量: 82
  • 博客积分: 1530
  • 博客等级: 上尉
  • 技术积分: 771
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-16 03:44
文章分类

全部博文(82)

文章存档

2011年(6)

2010年(76)

我的朋友

分类: LINUX

2010-05-07 03:08:47

今晚状态不太好,看的有点晕晕的!!!!!!!

I/O重定向符:
cmd1 | cmd2   管道
> file      标准输出到file
< file     从file接收标准输入
>> file   输出附在file后面
>| file   即使设置了noclobber仍强行输出
n> file  
<> file   使用file同时作为输入和输出
n<> file
<< label       here-document
n> file    将文件描述符n定向到file
n< file
n >>file
n>&      将标准输出复制到文件描述符n
n<&      将文件描述符赋值成标准输出??????输出??
n>&m     是文件描述符n成为输出文件描述符的副本
n<&m
&> file   定向标准输出和错误输出到file
<&-      关闭标准输入
>&-      关闭标准输出
n>&-   关闭从文件描述符n的输出
n<&-   关闭从文件描述符n的输入


表中有些内容应该是很少能用得上的,知道我现在还不知道文件描述符是什么玩意儿!!!

here-document:
<cat >> msgfile <<.
this is the text of
our message.
.
这个.是label,消息体被保存在msgfile中。
这个常用于shell脚本,是你可以指定对程序的批量输入。


文件描述符:
文件描述符是从0开始的整数,指向与进程相关的特定数据流。当进程启动时,通常打开三个文件描述符,分别对应三种标准的I/O:标准输出(0),标准输入(1),标准错误(2).如果进程打开额外的文件进行输入和输出,则其被设置为下一个可用的文件描述符,并从3开始。

目前在bash中最常用的是,用来保存标准错误。可以在后面添加2> file。
例子:
在后台启动一个长运行作业,并把标准输出和错误输出保存在一个长文件中。
"$@" > logfile 2>&1 &



字符串I/O:
echo的选项
-e    打开反斜杠转义字符的解释
-E    关闭系统上反斜杠转义字符的解释,此为默认模式
-n    省略最后的换行

echo转义序列
\a   响铃
\b   BACKSPACE
\c   省略最后的NEWLINE
\f   FORMFEED
\n   NEWLINE(不再命令结尾)
\r   RETURN
\t   TAB


read:
read允许你将值读读到shell变量中。
read var1 var2
例如:
read var1 var2
alice duchess
echo $var1
echo $var2

如果输入的单词数比变量多,额外的单词会被赋值到最后的变量中。如果省略了变量,整个输入被赋值到变量REPLY中。


命令块:
这里用符号{}表示一个命令块,里面包含多个命令。这里让我想起了之前看过的用()也可以执行多个命令。但是区别在哪里呢??
(cmd1;cmd2;...;cmdN)#在一个子shell里执行一组命令
{cmd1;cmd2;...;cmdN}# 在当前shell里执行一组命令

其实read是有四个选项的:
-a   读取一个数组
-e   用于从交互式shell启动的脚本 (不懂)
-p   后跟字符串,在读取输入前打印该字符串(感觉比较好用)
-r   保留了输入可能包含的其他转义序列

read -a people
alice duchess dodo
echo ${people[2]}
dodo

还有就是,如果test文件包含如下行:
A line with a\n escape sequence

read -r aline < test
echo -e "$aline"
A line with a
escape sequence

对比:
read aline < test
echo -e "#aline"
A line with a\n escape sequence

也就是,没有设-r的时候,\是没有被读进去的。设了之后才读进去,echo的时候可以选择是否使用选项-e会有不同的输出!!!!!
阅读(1269) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~