第七章输入输出和命令行处理(输入输出)
时间:2010-05-07 来源:zbhknightMJ
今晚状态不太好,看的有点晕晕的!!!!!!!
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:
<<label重定向符强制一个命令的输入使用shell的标准输入,并一直读到仅含label的行。比如:
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会有不同的输出!!!!!
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:
<<label重定向符强制一个命令的输入使用shell的标准输入,并一直读到仅含label的行。比如:
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会有不同的输出!!!!!
相关阅读 更多 +
排行榜 更多 +